UC Berkeley认为Serverless架构的出现过程类似于40多年前从汇编语言转向高级语言的过程,在未来Serverless架构的使用会飙升,或许服务器式云计算不会消失,但是将促进BaaS发展,以更好地为Serverless架构提供支持。未来10年,Serverless架构将逐渐向取代ServerFul的方向发展。
基于Serverless架构的应用开发将形成一套无服务器开发思路,这种应用开发流程将会比基于传统架构的应用开发更简单。
在Serverless架构下进行应用开发,用户通常只需要按照规范编写代码、构建产物,然后部署到线上。如下所示,CNCF Serverless Whitepaper v1.0指出函数的生命周期从编写代码并提供规范元数据开始,一个Builder实体将获取代码和规范,然后编译并将其转换为工件,接下来将工件部署在具有控制器实体的集群上。该控制器实体负责基于事件流量和/或实例上的负载来扩展函数实例的数量。
函数部署流水线示意图
如下所示,函数创建和更新的完整流程如下。
1)在创建函数时,提供其元数据作为函数创建的一部分,对其进行编译使其具有可发布的特性。接下来启动、禁用函数。函数部署要能够支持以下用例。
·事件流(Event Streaming):在此用例中,队列中可能始终存在事件,但是可能需要通过请求暂停/恢复进行处理。
·热启动(Warm Startup):在任何时候,具有最少实例的函数能使所接收的“第一”事件快速启动,因为该函数已经部署并准备好为事件服务(而不是冷启动),其中函数通过“传入”事件在第一次调用时部署。
2)用户可以发布一个函数,这将创建一个新版本(最新版本的副本),发布的版本可能会被标记或有别名。
3)用户可能希望直接执行/调用函数(绕过事件源或API网关)以进行调试和开发过程。用户可以指定调用参数,例如所需版本、同步/异步操作、详细日志级别等。
4)用户可能想要获得函数统计数据(例如调用次数、平均运行时间、平均延迟、失败次数、重试次数等)。
5)用户可能想要检索日志数据,这可以通过严重性级别、时间范围、内容来过滤。Log数据是每个函数级别的,它包括诸如函数创建/删除、警告或调试消息之类的事件,以及可选的函数的Stdout或Stderr。优选每次调用具有一个日志条目或者将日志条目与特定调用相关联的方式(以允许更简单地跟踪函数执行流)。
如下所示,以阿里云Serverless产品为例,在生产环境中开发Serverless应用的流程是:
根据FaaS供应商所提供的Runtime,选择一个熟悉的编程语言,然后进行项目开发、测试(步骤1);
完成之后将代码上传到FaaS平台(步骤2);
上传完成之后,通过API/SDK(步骤3)或者由一些云端的事件源(步骤3)触发上传到FaaS平台的函数,FaaS平台就会根据触发的并发度等弹性执行对应的函数(步骤4);
最后用户根据实际资源使用量按量付费(步骤5)。
函数创建/更新流程示意图
开发Serverless应用的流程
标签:Serverless,架构,函数,流程,开发,事件 From: https://www.cnblogs.com/muzinan110/p/17067849.html