什么是Serverless

CNCF给出的定义是“Serverless computing refers to the concept of building and running applications that do not require server management.”。Serverless并不能望文生义理解为”无服务器“,其核心思想是让用户不再关心Server,只关注于业务开发。要了解Serverless首先要搞清楚以下两个概念:

·      BaaS(Backend as a Service)即后台即服务。服务器端的逻辑和状态是完全依赖于云平台进行管理的,如Firebase。

·      FaaS(Function as a Service)即函数即服务。开发者提供实现拥有后台逻辑的函数,这些函数执行在一个无状态的计算容器中的,函数的执行是基于事件驱动的,关于这些函数的部署、执行、触发是由云平台来管理的。其最典型的例子就是AWS Lambda。

Serverless的应用架构是将BaaS和FaaS组合在一起的应用,用户只需要关注应用的业务逻辑代码,编写函数为粒度将其运行在FaaS平台上,并且和BaaS第三方服务整合在一起,最后就搭建了一个完整的系统。整个系统过程中完全无需关注服务器。

Serverless处理模型

image_0.png

·      事件源(Event sources)-触发器或流事件到一个或多个函数实例中

·      函数实例(Function instances)-单个函数/微服务,可根据需求进行扩展

·      FaaS控制器(FaaS Controller)-部署、控制和监视函数实例及其源

·      平台服务(Platform services )-FaaS解决方案使用的通用集群或云服务(BaaS)

Function生命周期

1555242635086-d8da3100-1094-403a-8a69-c1d05d5889cd.png

Serverless的优势

减少硬件基础设施的部署和维护成本

具备真正意义上的高度扩展性

按需使用,按需计费

Serverless的问题

启动延迟

不适合长时间运行应用

比较依赖于第三方云服务

缺乏调试和开发工具

Serverless与传统架构

传统架构需要服务器一直处于运行状态并且监听请求,而Serverless架构只需有请求的时候创建函数实例处理请求。

传统架构需要关心底层服务器的状态、资源(比如CPU、内存、磁盘及网络)及数量,而Serverless应用正常运行所需要的计算资源由底层的云计算平台动态提供。

Serverless适用场景

定时任务,如定时数据统计

事件驱动型任务,如物联网事件处理、Webhook等

对启动延时不敏感的任务,如邮件通知、短信等

Serverless不适合场景

需要一直长期不间断的运行,对处理延时要求高的实时任务

Serverless 和微服务

Serverless 与微服务架构是相辅相成的。微服务和 Serverless 架构都实现了细粒度的部署,维护和伸缩。 目前的 Serverless 实现通常会依赖 FaaS,那么粒度就由 Service 变成了更细粒度的 Function。

参考

https://github.com/cncf/wg-serverless/tree/master/whitepapers/serverless-overview

http://q.infoqstatic.com/ppt/serverlessminibook.pdf

https://aws.amazon.com/cn/serverless/

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.