![Serverless工程实践:从入门到进阶](https://wfqqreader-1252317822.image.myqcloud.com/cover/285/39652285/b_39652285.jpg)
1.4 典型应用场景
Serverless架构自提出到现在经过若干年的发展,已经在很多领域中有着非常多的最佳实践。但是Serverless自身也有局限性,由于其无状态、轻量化等特性,Serverless在一部分场景下可以有非常优秀的表现,但是在另外一些场景下可能表现得并不理想。CNCF总结的Serverless架构所适合的用户场景如下。
- 异步并发,组件可独立部署和扩展。
- 突发或服务使用量不可预测。
- 短暂、无状态的应用,对冷启动时间不敏感。
- 需要快速开发迭代。
CNCF还列举了Serverless架构可以更好支持的领域。
- 响应数据库更改(插入、更新、触发、删除)的执行逻辑;
- 对物联网传感器输入消息(如MQTT消息)进行分析;
- 处理流处理(分析或修改动态数据);
- 管理单次提取、转换和存储需要在短时间内进行大量处理(ETL);
- 通过聊天机器人界面提供认知计算(异步);
- 调度短时间内执行的任务,例如CRON或批处理的调用;
- 机器学习和人工智能模型;
- 持续集成管道,按需为构建作业提供资源,而不是保持一个构建从主机池等待作业分派的任务。
CNCF基于Serverless架构的特点,从理论上描述了Serverless架构适合的场景或业务。云厂商则会站在自身的业务角度来描述Serverless架构的典型场景。不同云厂商描述的典型场景虽然可能有所不同,但是实际上整体思路或类型是类似的,如表1-1所示。
表1-1 不同云厂商/产品所提供的典型场景表
![065-01](https://epubservercos.yuewen.com/AF5B67/20697932108589606/epubprivate/OEBPS/Images/065-01.jpg?sign=1739603454-E1t2zBhtAOl0gwqkXWP2POvuKQWSNEqK-0-3c4fd98dec663168cf527f3865e64a6a)
1.4.1 实时文件处理
视频应用、社交应用等场景下,用户上传的图片、音视频往往总量大、频率高,对处理系统的实时性和并发能力都有较高的要求。例如,对于用户上传的图片,可以使用多个函数对其分别处理,包括图片的压缩、格式转换、鉴黄鉴恐等,以满足不同场景下的需求,如图1-24所示。
![066-01](https://epubservercos.yuewen.com/AF5B67/20697932108589606/epubprivate/OEBPS/Images/066-01.jpg?sign=1739603454-G4C15lBhr0aiOCxqI0ABFlBKP0djw0Ry-0-029eae46b70824e5926dc6276846f09b)
图1-24 实时文件处理示例
1.4.2 数据ETL处理
通常要对大数据进行处理,需要搭建Hadoop或Spark等相关大数据的框架,同时要有一个处理数据的集群。通过Serverless技术,只需要将获得的数据不断存储到对象存储,并且通过对象存储相关触发器触发数据拆分函数进行相关数据或任务的拆分,然后再调用相关处理函数,处理完成之后,存储到云数据库中。函数计算近乎无限扩容的能力可以使用户轻松地进行大容量数据的计算。利用Serverless架构可以对源数据并发执行多个mapper和reducer函数,在短时间内完成工作,整个流程可以简化为如图1-25所示。相比传统的工作方式,使用Serverless架构更能避免资源的闲置浪费,从而节省成本。
![067-01](https://epubservercos.yuewen.com/AF5B67/20697932108589606/epubprivate/OEBPS/Images/067-01.jpg?sign=1739603454-VahxycLMNfYh7ba3bteYvGYrf7cCoIBA-0-0389c0abd6ea091b09c1217ce4d1486b)
图1-25 数据ETL处理示例
1.4.3 实时数据处理
基于Serverless架构所支持的丰富的事件源和事件触发机制,可以通过几行代码和简单的配置对数据进行实时处理,例如对对象存储压缩包进行解压、对日志或数据库中的数据进行清洗、对MNS消息进行自定义消费等,如图1-26所示。
![067-02](https://epubservercos.yuewen.com/AF5B67/20697932108589606/epubprivate/OEBPS/Images/067-02.jpg?sign=1739603454-xjzOpUEoIL3SlnYuKT2kxcZKRcGy6fwp-0-2075cb487231f0d49789e4d3c6ad591c)
图1-26 实时数据处理示例
1.4.4 AI推理预测
AI模型完成训练后,在对外提供推理服务时,可以使用Serverless架构将数据模型包装在调用函数中,在实际用户请求到达时再运行代码。相对于传统的推理预测,这样做的好处是,无论是函数模块、后端的GPU服务器,还是对接的其他相关的机器学习服务,都可以按量付费以及自动伸缩,从而在保证性能的同时确保服务的稳定,如图1-27所示。
![067-03](https://epubservercos.yuewen.com/AF5B67/20697932108589606/epubprivate/OEBPS/Images/067-03.jpg?sign=1739603454-LGJX4eAQDVBqR7vN27iDJlWegnXWEZ6T-0-3f064525d745fd58ea19603131467b01)
图1-27 AI推理预测处理示例
1.4.5 IoT后端
目前很多厂商都推出了智能音箱产品。用户对智能音箱说话,智能音箱通过互联网将这句话传递给后端服务,然后得到反馈结果并返回给用户。通过Serverless架构,可以将API网关、云函数以及数据库产品进行结合来替代传统的服务器或者虚拟机等。这样一方面可以确保资源的按量付费,只有在使用的时候,函数部分才会计费,另一方面当用户量增加之后,通过Serverless实现的智能音箱系统的后端也会进行弹性伸缩,可以保证用户侧的服务稳定。另外,对其中某个功能进行维护相当于对单个函数进行维护,并不会对主流程产生额外风险,相对来说更安全、更稳定。处理流程示例,如图1-28所示。
![068-01](https://epubservercos.yuewen.com/AF5B67/20697932108589606/epubprivate/OEBPS/Images/068-01.jpg?sign=1739603454-AMSc3pPufirmfrOBpZc1b5qysb5o2jgf-0-3fae43ddc036d0f069ecea2bf9beefa0)
图1-28 IoT后端处理示例
1.4.6 Web应用/移动应用后端
Serverless架构和云厂商所提供的其他云产品进行结合,开发者能够构建可弹性扩展的移动或Web应用程序,轻松创建丰富的无服务器后端,而且这些程序可在多个数据中心高可用运行,无须在可扩展性、备份冗余方面执行任何管理工作。Web应用后端处理示例如图1-29所示。
![068-02](https://epubservercos.yuewen.com/AF5B67/20697932108589606/epubprivate/OEBPS/Images/068-02.jpg?sign=1739603454-oIF2kidYFS11u0HCPBQeRZ3OML0CIVgv-0-bbd7d1748fcc44cf899a9546e0c1e759)
图1-29 Web应用后端处理示例
1.4.7 音视频转码
在视频应用、社交应用等场景下,用户会上传一些视频,通常上传的视频会进行一些转码,包括转换为不同的清晰度。Serverless技术与对象存储相关产品组合后,可利用对象存储相关触发器,即上传者将视频上传到对象存储中,触发Serverless架构的计算平台(FaaS平台)对其进行处理,处理之后将其重新存储到对象存储中,这个时候其他用户就可以选择编码后的视频进行播放,还可以选择不同的清晰度,如图1-30所示。
![069-01](https://epubservercos.yuewen.com/AF5B67/20697932108589606/epubprivate/OEBPS/Images/069-01.jpg?sign=1739603454-hXkIMQtoGXMiIunZiQsDT9gV7oUuRMSm-0-791a45c7c52c3b94a117f2aa2bcd1bad)
图1-30 音视频转码处理示例
综上所述,Serverless架构的典型应用场景更多是由Serverless架构的特点决定的。当然,随着时间的不断推移,Serverless架构也在不断演进,特点会更加突出,劣势会被弥补,适合的场景也会更丰富。