《云原生架构白皮书2022新版》——主要云原生技术——Serverless(上) https://developer.aliyun.com/article/1232944
开发运维自动化
通过定时触发器,用户用函数的方式就能够快速实现定时任务,而无须管理执行任务的底层服务器。通过将定时触发
器和监控系统的时间触发器集成,用户可以及时接收机器重启、宕机、扩容等 IaaS 层服务的运维事件,并自动触发
函数执行处理。
3、技术关注点
计算资源弹性调度
为了实现精准、实时的实例伸缩和放置,必须把应用负载的特征作为资源调度依据,使用“白盒”调度策略,由
Serverless 平台负责管理应用所需的计算资源。平台要能够识别应用特征,在负载快速上升时,及时扩容计算资源,
保证应用性能稳定;在负载下降时,及时回收计算资源,加快资源在不同租户函数间的流转,提高数据中心利用率。
因此更实时、更主动、更智能的弹性伸缩能力是函数计算服务获得良好用户体验的关键。通过计算资源的弹性调度,
帮助用户完成指标收集、在线决策、离线分析、决策优化的闭环。
在创建新实例时,系统需要判断如何将应用实例放置在下层计算节点上。放置算法应当满足多方面的目标:
容错:当有多个实例时,将其分布在不同的计算节点和可用区上,提高应用的可用性。
资源利用率:在不损失性能的前提下,将计算密集型、I/O 密集型等应用调度到相同计算节点上,尽可能充分
利用节点的计算、存储和网络资源。动态迁移不同节点上的碎片化实例,进行“碎片整理”,提高资源利用率。
性能:例如复用启动过相同应用实例或函数的节点、利用缓存数据加速应用的启动时间。
数据驱动:除了在线调度,系统还将天、周或者更大时间范围的数据用于离线分析。离线分析的目的是利用
全量数据验证在线调度算法的效果,为参数调优提供依据,通过数据驱动的方式加快资源流转速度,提高集
群整体资源利用率。
负载均衡和流控
资源调度服务是 Serverless 系统的关键链路。为了支撑每秒近百万次的资源调度请求,系统需要对资源调度服务的
负载进行分片,横向扩展到多台机器上,避免单点瓶颈。分片管理器通过监控整个集群的分片和服务器负载情况,执
行分片的迁移、分裂、合并操作,从而实现集群处理能力的横向扩展和负载均衡。
在多租户环境下,流量隔离控制是保证服务质量的关键。由于用户是按实际使用的资源付费,因此计算资源要通过被
不同用户的不同应用共享来降低系统成本。这就需要系统具备出色的隔离能力,避免应用相互干扰。
安全性
Serverless 计算平台的定位是通用计算服务,要能执行任意用户代码,因此安全是不可逾越的底线。系统应当从权
限管理、网络安全、数据安全、运行时安全等各个维度全面保障应用的安全性。轻量安全容器等新的虚拟化技术实现
了更小的资源隔离粒度、更快的启动速度、更小的系统开销,使数据中心的资源使用变得更加细粒度和动态化,从而
更充分地利用碎片化资源。