开发者学堂课程【云原生最佳实践案例:实战案例——分众传媒】学习笔记,与课程紧密连接,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/1052/detail/15272
实战案例——分众传媒
内容介绍:
一、业务场景
二、Serverless 探索实践
三、基于 Serverless 函数计算 FC 的选型思考
四、初步试水:图片识别系统
五、系统再升级,镜像部署
六、Serverless 实践效果
七、总结思考
今天,中国有4亿城市人口。有3亿在看分众,覆盖了230个城市,大约有260万个电梯终端。
一、业务场景
广告投放:广告主买量->投放排期->投放统计->效果展示
业务场景
前期:广告设计、视频处理
后期:广告投放、效果展示
静态海报:电梯海报市场占有率超过73%
电梯屏幕:30万块,覆盖91%的中高端写字楼
云原生应用架构
终端接入:手机 APP 和视频终端
业务应用:员工接入、终端管理、CRM、视频处理、图片识别、数据上报、数据分析、视频直播
云服务:SLB、MQTT、KAFKA、RDS、转码服务、镜像仓库、Flink、IOT平台
主要说IOT平台,所有的平端都是用的IOT服务,平端的切入是用的阿里的三网卡,这样的好处就是平端的连通率大约在95%左右,大大提高了人工效率,以前的平端都是需要人工插卡上刊,接入IOT阿里云三网卡之后,业务量从50%提高到了95%,在外的100台设备里大约有95台是联网的,这样可以很好地支撑业务,给技术实现带来了很大的好处。静态的电梯海报里有大约200万个,每周电梯海报都需要上刊,上刊以后都会有图片处理,图片处理主要是做自动识别处理,自动识别处理就是每周每个工人去上刊以后,需要知道上刊是否正确,图片是否上错,图片是否放反,这一系列的应用都可以实时通知到上刊人员,上刊人员在上刊时,将图片放错放反,可以通过手机短信通知到他,上刊人员可以实时重新换画重新上刊,因为业务方需要延迟必须在一个小时内完成
二、Serverless 探索实践
传统服务器开发无法满足业务的高速增长
三大痛点:
Scale-Out耗时太长:工人以前上刊是无法及时知道上刊是否错误。
资源利用率低:因为上刊主要业务是集中在周末,因此所有资源主要在周末使用,平日时间段不需要使用服务器
运维复杂,人员技能要求高:因为业务复杂,所以运维人员技能要求很高,需要招聘更高级的人员来维持运维
最后在上行的时候有两个选择:容器服务K8S 和Serverless函数计算
三、基于 Serverless 函数计算 FC 的选型思考
一些担忧:
大规模实践案例
图片识别算法往往很大,函数计算能否适用
最大规格只能支持2C3GB
没办法提供CPU使用率和内存使用率等监控
运行原理的差异
一个如果是用 K8S 的话请求到云主机,通过对外的 API 来提供请求
另一个是Serverless计算平台,不需要关心用了多少服务器和人力,只需要关心API请求是否正确到达,每一次图像识别是否正确,把识别错的图片发送通知到上刊人员
因此最后选择了函数计算。
函数计算FC的优势
自动弹性伸缩
资源免运维
可提供大规格性能实例
四、初步试水:图片识别系统
分众有200万的电梯海报,每周上刊需要每张图片都精准送达,不允许有差错,在上线图片识别系统的时候通过OSS 打通MNS 的服务,将消息发送到FC函数计算,进行处理之后可以将图片加水印,对图片进行识别,对图片进行匹配,可以很精准告诉上刊人员,图片上刊成功,可以前往写一个地点,如果出错,在刚上完刊同时,会收到短信。
业务峰值时:1分钟扩容7k+实例
如果自己部署 K8S 会牵扯很多的人力物力,所以在Serverless上可以很轻松告诉业务应用是什么,让Serverless处理背后其他业务。
五、系统再升级,镜像部署
2021年年底,Serverless进行了业务升级,以前服务是挂在NAS上面,挂载图像识别算法,导致很大的业务我们必须实时关注NAS有没有挂掉,如果NAS一旦挂掉,FC业务启动不了,导致很多时间周末排查业务的时候,NAS挂掉了,服务还正常运行,导致算法加载不出来,所以他们对业务进行升级,将挂载算法业务放在容器里,通过镜像部署,提供了镜像加速能力弹性时直接命中镜像缓存。在高峰时镜像启动比NAS挂载启动快很多,4.2GB镜像10秒就可以启动。
丰富的监控指标提升故障定位效率
提供了丰富的监控指标:请求级别的错误统计,CPU 和内存使用率。异步请求堆积情况,流控及弹性实例数等。可以根据数据快速定位运行状态
六、Serverless 实践效果
开发可以更加专注业务迭代,例如可以让图像识别的开发人员更关注如何提升图像识别算法的识别率,将更多的业务运维效率交给服务器处理。
Serverless提供了:
极致弹性:自动扩容应对流量突增。
资源免运维:减少人力成本,让开发更专注业务
发布效率提升:应用发版时间大大缩短,业务快速上线
监控更完善:更详细的监控,方便快速诊断问题
开发运维效率提升80%,成本下降50%,弹性销率10倍以上。
七、总结思考
适用场景:
CPU 密集型+极致弹性
事件驱动,简化架构复杂度
适合新项目部署,存量项目需改造
整体期望降低运维成本
业务规划
大数据分析场景:基于Kafka+FC 实现数据清洗,简化 Flink 使用成本;
微服务上Serverless:尝试用Serverless 应用引擎 SAE 来承载微服务,简化运维,提升效率;
视频直播:尝试用 FC 接入一些第三方的直播流,转推到视频终端 。