今天我准备再结合一页PPT简单地跟大家说明一下,云原生整体生态体系的建设这么一个话题。对于云原生的基本概念,包括云原生的核心逻辑,我在前面的视频已经都分享过,大家可以翻看一下我在B站专门有一个云原生的合集,里面就谈有云原生的核心基本概念,包括微服务、DevOps、容器云、BookBean基本措施、API接口驱动我都谈到过。
今天其实我重点想讲一下云原生它的一个本质,就比如上面这个图,它的本质一定是抽象和标准化,能够实现从资源层到服务层,从服务层到应用层,整个重心不断上移,使整个的应用开发更加的轻量、敏捷,更加的弹性可扩展。我们看到的微服务架构、容器云、DevOps所有的这一些最佳实现都是为了达成这个目标服务的。
那么云原生生态体系跟传统云架构体系有哪些关键的区别点或者它整体究竟是怎么样演进与演化的呢?
首先我们看一下传统的云架构体系,它往往就是一个单体的应用,底层用了IaaS的虚拟化资源池,同时它要跟其他的应用做集成,上层通过相应的负载均衡设备去提供统一的流量入口。因为传统的云架构体系,它仍然可能也有PaaS平台去实现应用的托管、自动的部署和资源的动态调度,比如我们经常会谈到的,基于传统的 CloudFoundry Paas 平台,但是这个Paas平台它创建、管理、调度的单位往往是我们讲的虚拟化资源池里面的虚拟机,同时应用和应用之间需要去做横向集成,同时负载均衡到应用下来这个环节,它往往还会去建内部的类似于Nginx的反向代理或者是软集群。当然应用和应用之间还需要去做横向集成,这个横向集成我们一般会去构建类似于ESB服务总线或者是SOA的集成平台来解决业务系统之间横向接口集成的问题。
那么到了云原生整体生态体系以后,我们可以看到它中间仍然是我们传统的单体应用,在外围就会涉及到我们新的微服务、IaaS资源池、硬件的负载均衡和传统的ITSM和IT监控。但是在整个的构建里面,我们可以看到我现在这个图里面,绿色底色这部分都是围绕云原生生态体系环境下面它新拓展出来的新的一些核心要素点。
微服务开发和持续集成
首先单体应用我们可能去做拆分,变成一个一个微服务中心,微服务我们经过开发编码以后需要去走相应的CI/CD持续集成和持续部署的过程,同时向我们的制品库形成容器镜像,那么容器镜像这个时候就会涉及到我要部署和托管到我的IaaS资源池,在这里面就有一个核心的东西,就是kubernetes的容器编排。所以微服务基于CI/CD为核心的DevOps包括容器云的能力,往往也是我们现在谈云原生的时候最最核心的基本特征,但是这些东西远远不足够。
中间件技术服务资源池
我刚才一直在强调云原生它要达到的效果就是从资源层不断地朝服务层上移和抽象,所以在新的架构下面按道理我们就不应该再去申请虚拟机再自己去装数据库,而是我们应该申请数据库服务,所以这个时候我们会去申请相应的数据库服务,包括申请相应的消息服务、缓存服务。所以这个时候我们申请的消息服务、缓存服务、数据库服务就会形成很大的一个中间件或者是技术服务的资源池,这个其实是我们整个云原生PaaS平台仍然相当重要的一个关键点。
流量的集成和管理
当然微服务与微服务之间仍然存在东西流量,微服务之间存在集成,这种集成传统方式下面它是通过ESB中心化架构去集成,但是新的云原生架构下面已经演变成我们走服务注册和发现中心去做这个事情,包括在服务网格下面我们通过去中心化的服务网格ServiceMesh的思路,通过边车去解决东西流量的集成。
对于最上面硬件负载均衡下到我们微服务模块的时候一定会涉及到云原生下面的网关,当前更多的会基于kubernetes的Ingress网关去做相应的定制和扩展。比如现在主流的Ingress网关一般也会采用Ngnix去做定制和扩展,当然Ingress网关更多的只是一个粗粒度的流量网关,我们还可以去做相应的API网关,去做进一步的基于流量网关基础上的,类似安全日志、限流熔断各种接口的管理能力。
可观测性
在右边我们整个微服务运行起来以后,还有一个更加重要的内容就是可观测性,可观测性这边就会涉及到我们常说的微服务的链路跟踪、日志的采集、状态的采集,整个容器云环境的相应的资源的监控、性能的监控,这一些我通通把它纳入到可观测性里面。包括最近两到三年大家比较关心的混沌工程,我们也可以纳入到可观测性这个范畴里面。所以基本这个图我们可以看到当你发展到云原生整体的生态体系架构以后,在整个图绿色底色这部分的内容,都是你云原生生态体系需要去规划和建设的内容,而不简单的仅仅是微服务、DevOps和容器云。
好了,今天的简单分享就到这个地方,希望对大家有所启发。