由于互联网技术高速发展需求,在硬件技术、软件技术成熟的今天,云计算逐渐的发挥出了
它的巨大优势,2019年4月22日,云原生产业大会在北京悠唐皇冠假日酒店隆重举行。各大互联网巨头、传
统行业巨头都各自带着自己的云原生技术实践案例在大会上分享。我在短短半年时间里,已经是第二次在同
一个地点,参加云计算相关领域的大会了。在我传统的认知里,云计算就是一摞摞的计算服务器夹杂着交换机、路由器时时刻刻的对外输送互联网服务,但通过这次大会至少才认知层面改变了我对云计算的认知。当然短短不到半年的时间,我很有幸加入了这个行业。

云原生–云计算技术与软件工程学碰撞的火花

为什么我要把云计算与软件工程学联系起来呢?我想我的说法可能得不到认可,但是至少我的理解是这样的。说通俗一点,计算就是一块一块的服务器,一块一块的CPU,如果用网线将他们联系起来他们就构成了“朵”云,也就是服务器集群。至少在AWS时代,几乎所有的云计算都是这样做的,交换机+路由器+服务器构成了云计算。
也许是随着软件工程学的发展,亦或许说是学科知识的迁移,人们把软件工程学的理念移植到了云计算领域,将一些已经得到大家公认的架构基础如:计算、存储、网络在进行一层高度的抽象化模块化。其中网络与存储慢慢的基础设施化,在企业架构中,技术人员不在着重关心底层的网络基础设置,因为网络应该是理所当然的先决条件。
计算力通过容器技术将计算力划分的更加细致,举个例子:传统的基于OS的虚拟化计算隔离技术,可能回由于部署、维护以及诸多的困难导致虚拟机仅仅只能运行一个单一业务,而业务本身却无法完全的利用计算资源,相反如果利用容器技术,容器可以直接获得与业务所需运算资源相匹配的运算资源。为什么回这样呢?从某种意义上看,容器技术就是操作系统的一个进程,而进程是CPU运算的基本单位,在这一个技术层面上通过一些技术手段将底层所需的基础资源诸如网络、存储等进行隔离,就得到了可以使用的完整的容器技术。

重构IT模式

依托云平台自身的特性,同样是利用软件工程学的思想,将传统的IT架构模式与开发模式进行了灵活的拆分和高度的模块化。同样IT架构也是经过许多的变革


单体架构–>SOA架构–>微服务架构


单体架构: 所有的业务功能全部都包含在一个系统里,仅仅只有存储(数据库)与业务系统本身分离。
SOA架构:在传统单体架构的基础上,对功能解耦合,把功能上高度复用的业务功能进行模块化封装。模块与模块之间通过抽象的通信总线进行信息传递。极大的增加了架构的可扩展性。
微服务架构:将服务功能收缩得更加细化,服务与服务之间完全隔离。服务本身遵循单一原则,每个服务都遵循RESTful标准,通过服务网关的机制将将所有服务集中化。
通过这里的对比我们很明显的看出来微服务架构的优势,微服务架构是彻彻底底的松耦合架构。松耦合就意味着模块功能可以单独的处理和实现,只要他们可以对完提供标准化的通信接口(RESTful标准)。而传统的云计算模式并不能满足这一个思想的要求,传统的虚拟化技术运行服务会造成资源浪费。而容器技术与k8s技术恰恰的满足了资源的灵活调度,实现了资源的充分使用。资源的集中化管理,架构的松耦合化,我想这就是为什么微服务架构为什么会发展起来的原因。

微服务带来的感悟

微服务架构是整个云原生技术最有变革意义的技术,正如重构IT模式中所陈述的。微服务就是业务功能模块化,通信协议的标准化。通过模块化的功能,标准的通信协议,使得整个架构能快速的扩展。同时借助容器技术,使计算资源得以高效的利用。如果开发者从这个角度去思维问题,那么传统的开发思路显然就不通用了。从微服务的角度讲其实就是如下的变化。
应用函数化,服务函数化:即是将大家广为熟知的业务流程封装起来,成为独立的模块。例如:在传统电商平台的支付功能,把功能完整的独立出来成为一个微服务,一个独立的函数。如果用户在进行一系列操作(购买,转账等操作)后触发或者主动调用其模块使用户完成支付功能。
无服务架构体系:企业不在考虑传统的服务器架构,把服务器作为一种基础设施。基础设施它是稳定的可靠的,所以企业自身仅仅考虑高层次的业务开发。同时把这些高层次的服务资源化,通过API接口的形势提供给其他高层业务使用。通过这种模式,可以使整个业务的开发、维护更加的高效。
事件驱动:即是通过事件总线的方式来调动各个微服务的联动,从个人的角度讲,这种模式类似于nodejs引擎,全局通过事件轮询的机制来调度各个功能函数完成相应的功能。其实这种模式更加的贴近计算机硬件架构,计算机构成就是:运算单元+外围IO设备单元,它们通过IO总线通信。每一个IO设备都能发出事件(中断)进而完成设备自身的任务。其中运算单元就相当于一个事件轮询单元。所以这或许就是为什么事件驱动的机制能扩展到微服务架构体系的原因吧,它的确是经得考验的一种模型。

结语:

通过这次云原生技术,不单单是去学习一些干货,更多的是去学习概念,一种思维的高度。传统的IT架构已经过去了几十年,如果技术想要变革,那么我们就应该站在一个新的高度思维问题。目前,云原生技术已经开始,那么作为一个开发者就应该努力改变自身的思维,强化自身的基础去拥抱新技术。