00:10
上一节我们通过简单的梳理后端架构的发展引出了serverize,你可能已经迫不及待的想要尝试server了,但是servers中有很多全新概念的引入,相比于具体的应用,Serverrs的相关理念更值得我们探讨和学习。那么srla到底是什么呢?技术圈对于srla的定义也在不断的调整和变化当中,所以导致了很多刚刚接触serveless的同学会认为fast就是serverless,也有同学呢会认为pass就是serveless,那还有同学说使用了so就没有服务器了。总的来说呢,很多同学对sola到底是什么并没有一个清晰的认知,概念也是比较凝。那么接下来我们尝试从广义和狭义的两个角度入手解释斯。
01:10
架构的理念。广义上来说,Sola是一种后端架构的理念,或者说是一种思想,或者叫概念,那直接翻译过来呢,叫做无服务。但是啊,不要被字面的意思所误导,这并不代表着应用运行不需要服务器。在server时代之前,我们可以将传统的架构统称为server four,那在server four的时代呢?其实意思就是服务器的一切我们都需要人工进行干预,而serve更准确的说应该是开发者不用关心服务器的意思是将服务器相关的工作交给云平台来去做,那对于开发者来说,与服务器运维有关的所有工作都不再关心。但是server,也就是服务器是不可能真正消失的二零。
02:10
19年2月,UC伯克利大学发表了一篇论文,论文中有这样一段对soul莱斯的描述,在云的上下文中,Server for的计算就像使用低级的汇编语言,而serve的计算就像使用Python这样的高级语言进行编程,例如C等于A加B这样简单的表达式。如果用汇编描述,就必须先选择几个寄存器,把值加载到寄存器进行数学计算,再存储结果。这就好比今天在云环境下so for的计算,开发者首先需要分配或找到可用的资源,然后加载代码和数据,再执行计算,将计算的结果存储起来,最后还需要管理资源的释放。如果你不是计算机的相关专业,可能对上面的话呢?
03:10
感知并不是很强烈,但是从计算机专业的角度来讲,这样的比喻非常清晰,Sofa是我们今天主流的使用云计算的方式,但是它不应该是我们未来使用云计算的方式。sulla所希望的是开发者用代码去支撑业务逻辑,而对于资源的管理交给工具和云平台就可以了。在so for的架构下,我们关心的问题非常多,比如根据业务流量大小等指标,响应式的去调整业务规模,实现自动的弹性伸缩,再比如像异地容灾,负载均衡,日志监控,文件存储等等,解决这些复杂的问题需要投入大量的人力和物力,而在S架构下,开发者只需要关注业务逻。
04:10
机本身所有这些与业务没有关系的基础设施全部都交给云平台负责,由云平台统一的调度、管理和运维,那在这样的理念指导下,各个云厂商都有不同的实现方案,每家云平台提供的server服务都或多或少的存在一定的差异,但是按照CNCF对servers计算的定义,SRS架构应该是采用fast和bus服务来解决问题的一种设计,那fast呢,指的就是函数及服务,而bus指的就是后端及服务,那这样的定义从落地的角度来讲更加的具体可行,也让我们对SRS的理解呢更加的清晰明了。因此,从应用落地。
05:10
的角度来去讲,狭义的service就是fast加bus的组合。那么什么是fast,什么是fast呢?它们分别代表了什么意思?那fast呢,就是function as the service的缩写,翻译过来叫做函数及服务,而bus呢,叫being as a service的缩写,意思也很简单,翻译过来就是后端及服务。具体什么意思呢?首先我们来看bus,前面说sola把后端架构的工作全部包揽下来,硬件的维护、集群的管理、运行环境的搭建全部由云平台完成。除此之外,像缓存、数据库、文件存储、消息中间件等等也全部由云平台帮我们做好,封装起来,以接口的形式提供服务,这就是bus所谓后端及服务。
06:10
也就是对于开发者而言,Bus就是一个黑盒,你不用知道我怎么做,更不需要关心我如何做,你需要什么过来拿就行了。但是我需要向数据库存一条数据,用户上传的照片我需要裁剪之后才能存到我的文件存储当中,这就需要我们编写业务逻辑的代码去完成的功能。假设我现在已经把这些逻辑代码呢都写好了,用的就是弄JSS。前面说所有的服务器以及运行环境都放在了bus这个黑盒当中,那我怎么让这些代码运行呢?换句话说就是我现在写的业务逻辑的代码是需要note GS这个运行环境的,怎么办?我们只需要将写好的代码交给server就行了,那server中有一个专门运行我们与逻辑代码的地方。
07:10
这个地方就是fast,那fast是以函数的方式运行我们的代码的,本质上fast就是一个函数运行平台。大多数的service云平台提供的fast都支持noess Python Java PP等众多的编程语言,你可以选择你喜欢的编程语言编写函数并且运行。对于开发者来说,使用fast几乎就是使用serveless的一切了。在fast中我们能够体会到service全部的特性,那首先fast函数运行时,开发者对底层服务器是无感知的,Fast产品会负责服务器资源的调度和运维,这些就是我们前面所说的bus,这也是S最大的特点,叫做不运维。
08:10
那其次呢,Fast中的函数也不是持续运行的,而是通过一定的条件进行触发,比如像HTTP的请求事件或者消息事件,或者叫定时器等等,那产生事件的源头我们叫做触发器,Fast平台会集成这些触发器,我们直接用就行了,这就是fast的第二个特点,事件驱动。再者就是service的付费方式了,与其他的云产品不同的是,Service的付费方式是按量付费的,是按照fast函数执行的次数和执行式所消耗的CPU、内存等等资源进行计费的,用多少付多少,如果不用就不需要付费,那同时fast会根据并发量自动生成多个函数实例,这一点也非常重要,我们。
09:10
后面会讲到,那bus呢,会根据函数运行所需要的资源量自动的调配服务器的资源,理论上的资源调用量是没有上限的,这也就实现了不同访问量的弹性伸缩,而且是实时的弹性伸缩。那基于fast和bus的架构是一种计算和存储分离的架构,计算由fast负责,存储由bus负责,计算和存储也被分开,部储和收费,这时应用的存储不再是应用本身的一部分,而是演变成了独立的云服务器,降低了数据丢失的风险,而应用本身也变成了无状态的应用,更容易进行调度和扩缩容。基于fast和bus,你的应用就。
10:10
现了自动的弹性伸缩,按量付费,不用关心服务器,那这正是sola架构必要的因素。所以狭义的,其实说的就是fast加bus的组合。
我来说两句