文章目录
前言
随着云技术的不断发展和技术架构的不断革新,越来越多的架构模式出现在人们眼前。今天我们探索的是Serverless(无服务器)技术。
以下是本篇文章正文内容
一、Serverless是什么?
字面理解: Serverless 无服务器
个人理解: 开发者不用关心服务器,服务器对于开发者来说是透明的,开发者只需要关心开发的程序和逻辑。Serverless&微服务&容器化这个其实的搭配使用的。
深层次理解: Serverless其实是Cloud发展的必然产物,在Cloud时代产生了laas,paas,saas。laas 其实是最基础的硬件设施透明化,paas是平台透明化,例如可以使用现成的mysql,mq等平台无需自己搭建,saas是软件透明化,用户购买后可以直接使用软件的功能。serverless其实是saas后的一个发展,让开发者可以更灵活的构建程序,有两种形式faas,baas,后续章节会详细讲解。
PS 白话一点: Serverless其实就是开发者写好的程序传到云平台,他们负责动态分配资源,确保程序的性能和可用。
国内外的各大云厂商 Amazon、微软、Google、IBM、阿里云、腾讯云、华为云相继推出Serverless产品
二、Serverless原理和架构
用户通过触发节点(Http/API/Timer)不同厂商的触发节点不同,来调用到后面的Faas 函数,最后调用到Baas中的服务完成业务逻辑的执行。
三、Serverless Faas和Baas
Faas
Function as a Service,函数即服务,代表AWS Lamda。 通过厂商定义的不同的触发事件来触发这些函数,这些函数都有对应自己业务对应的逻辑代码。
Baas
Backend as a Service,后端即服务,代表FireBase。 厂商会根据一些通用的功能抽取一些公有的方法给使用者进行直接调用,比如:认证。 使用者直接调用认证方法即可,不需要自己在编写。
四、Serverless优势和劣势
1.优势
1. 节约资源
serverless是按需进行访问,响应,扩容。在访问量小的情况下,基本处于消耗极少,或者不消耗的状态。此方式下对比传统的部署,可以节约大量的资源。
2. 快速构建项目
因为开发者只关注开发的逻辑,不需要关心部署和运维,这样大大节约了项目的整体周期。
3. 弹性自动扩容
同第一条,当业务量急剧上升的时候也会自动扩容来匹配请求量。
1.劣势
1. 成熟度欠佳
尽管这两年serverless发展的比较迅猛,但是成熟按理比较少。加上此方式依赖云平台,对于本地的学习和调试都增加了难度。
2. 响应延迟
一件事情有利就有弊,节约资源的背后其实就会带来相应延迟这个问题。当没有访问量的时候云平台会释放很多容器资源,这样当突然有请求的时候,就需要进行容器的初始化,无疑会增加整体的响应时间。
针对于这一点,各大厂商也都在想办法进行优化,优化容器的启动,预置一些容器等等方式来尽量降低此缺陷。
五、Serverless适用场景
依据我个人对于Serverless的理解,以下几个场景是比较适用的:
1. 大数据的分析和处理
对于一些数据分析的应用来说,Serverless无疑是非常适用的。当每天定时或者一些事件触发后,对于比较大的数据量但是有不确定量大小的数据进行数据分析,可以非常好的利用他的自动扩容和节约资源两个优势。
3. 无状态/异步应用的处理
Serverless本身有别于传统应用,无法记录程序的状态。例如:对于一些图片或者视频进行进一步处理的应用。
4. 有显著访问峰值峰底的应用
一些应用他是有一定的周期进行访问,在一定的热点时间中会有非常高强度的访问量,但是平常的访问量又很低。这种应用使用Serverless就会比较好的进行资源的一个扩容和节约。
以上是对于Serverless的初探,如果大家后续学习中还有什么需要讨论的,可以给我留言,后续文中会补充相关内容,谢谢!