Serverless 初探

什么是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处理模型 ·      事件源(Event sources)-触发器或流事件到一个或多个函数实例中 ·      函数实例(Function instances)-单个函数/微服务,可根据需求进行扩展 ·      FaaS控制器(FaaS Controller)-部署、控制和监视函数实例及其源 ·      平台服务(Platform services )-FaaS解决方案使用的通用集群或云服务(BaaS) Function生命周期 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/

Continue Reading