1 背景概述
分众传媒在主流城市主流人群必经的电梯空间中每天形成了高频次有效到达,覆盖 3.1 亿中国城市主流消费人群,超过 260 万个电梯终端。除了电梯终端外,还会印发大量的广告海报,怎样确保这些静态资源的张贴效果,成为分众的重要业务指标之一。
2 需求分析
分众传媒自研了图片识别处理系统。当工作人员更换好海报后,会通过 APP 端拍照上传到后台服务端。而每个周末,静态海报会批量进行更换,后台系统就会迎来处理高峰,大概需要集中处理几百万张图片。工作日的时候,更换频次相对较低,后台系统就会相对空闲。周末和工作日的流量峰值平均相差 10 倍以上,如果按照周末的峰值保有资源,会导致工作日产生大量的闲置资源。随着业务规模的增长,业务方对后台服务的弹性诉求也越来越强,怎样能让后台系统能更加从容应对波峰波谷,又能平衡资源开销成为最大的痛点。
3 解决方案
分众最早是采用单体架构来处理图片识别功能,切到函数计算后,采用前后端分离的架构,后端部分使用 API 网关 + FC,使用 API 网关是为了规范化 API。对于 FC,每个请求都可以独占实例资源,通过水平弹性扩展来承载大流量。
经过实际测试,发现 2G/约 1.33C 的资源规格可以满足大部分的图片识别场景,部分操作如加水印,还可以缩减到 512MB/约 0.33C(最小规格 128MB 内存/约 0.1C),达到最佳的资源使用配比,以节省费用。而针对体积较大的算法包,通过挂 NAS 盘的方式,也可以解决。在弹性方面,函数计算可以做到百毫秒级的弹性伸缩(冷启动),对 APP 端的 API 接口,端到端平均响应大约在 300ms 左右,基本可以满足;对图片识别来讲,因为是异步调用,所以对延迟并不敏感。最终上线后,大致的业务架构如下:
4 用户价值
降本增效: 按需使用、按需付费的模式,极大释放了闲置资源,成本节省50%+。
极致弹性:分钟级弹性6000实例,快速完成图片识别任务,处理效率提升200%。