《云原生架构白皮书2022新版》——各个行业面临的挑战及解决方案——分众传媒研发总监谈分众传媒在 Serverless 上的探索和实践(上) https://developer.aliyun.com/article/1232720
2、Serverless 的探索实践
传统服务器无法满足我们的业务高速增长,主要有三大痛点。耗时太长、资源利用率低、运维复杂,对人员技能要求高。
耗时太长:以前的人工上刊无法及时知道上刊是否正确或者错误,需要花费很多时间去核对和修改;
资源利用率低:上刊的主要业务是集中在周六和周日,因此所有资源基本在周六周日使用,大部分时间段是
不需要使用服务器资源的;
运维复杂、人员技能要求高:大家都会遇到的常规痛点,由于业务的复杂度对相关业务人员的技能要求也高,
同时也需要招聘更高级的人员来支持对应的运维工作。
于是,对于我们来说,上云有两个选择。第一个是用 K8s 服务自己搭建一套容器集群,第二个是用函数计算 FC。
那我们是如何选择的呢?
在选择 Serverless 时,其实我们也有一些担忧。第一是大规模的实践案例,第二是图象识别的算法往往很大,函
数计算 FC 能否适用?第三,FC 最高规格只能支持 2C3GB,这对我们业务有很大的考验。第四,是否可以提供
CPU 使用和内存使用的监控等等。这些都是我们很担忧的一些问题。
K8s 和 Serverless 运行原理的差异大家可以从上图中看到,如果用 K8s 请求云主机,我们需要自己搭建 K8s,通
过对外的 API 来提供请求;而使用 Serverless 计算平台,我们不需要关心用了多少服务器或者多少人力,我们只
需要关心每一次 API 请求是否正确到达和触达,就可以确认每次的图象识别是否有确切识别到图片,并把识别错误
的东西发出来,通知到上刊人员。
因此我们最后选择了函数计算,因为它有以下 3 个突出优势:
自动弹性收缩:比如只需要告诉他每周六每周日有两百万处理量,要在两天完成,其中高峰是早上九到十点
或者下午三到四点,就可以实现资源的自动弹性收缩;
资源免运维:解决我们需要请专业人员来负责支持运维的痛点;
可提供大规模的识别能力:当我们请求每天上刊人员在早上六点、七点、八点上刊时,背后能够实时的,在
固定时间提供算力;
我们用到很多开发语言,例如 PHP、C++、Python,如果用 K8s 去改造,难度很大。但如果用 Serverless,改
造成本就小很多。
我们在图片识别系统进行了的初步试水,就是刚才说的我们分众有两百万电梯海报,每周上刊需要每张图片精准送达。
所以说我们在上线图片识别系统时,每一张图片都会上传 OSS,通过 OSS 打通我们 MNS 服务,再把消息发送到
函数计算 FC,然后再对消息进行处理,之后就可以对图片进行加水印、图象识别、图片匹配了,从而可以精准地告
诉正在上刊的工人,你的图片上刊成功了,可以上刊下一张图片了。
在这个业务峰值图上可以看到,FC 支持一分钟内扩充到 7000+ 的实例。如果我们自己部署 K8s 会牵扯到很多人力
和物力,因此我们最终选择了 Serverless。
《云原生架构白皮书2022新版》——各个行业面临的挑战及解决方案——分众传媒研发总监谈分众传媒在 Serverless 上的探索和实践(下) https://developer.aliyun.com/article/1232718