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