服务亿级图片压缩那些事

2017 年 9 月 12 日 架构文摘 kendywang

图片压缩原本是2.4w台物理设备支撑,当前弹性平台仅用6k台容器为每天百亿次的压缩提供了可持续的计算力,除了图片压缩业务,平台还服务了视频转码业务,Spark计算以及AI围棋和王者荣耀计算业务。复用现网低负载资源总核数达70W核,全天平均CPU使用率高达56%。


背景


QQ相册、微信传图和朋友圈每天近百亿张图片活跃于用户的手机、平板和电脑屏幕中,为大家带来生活趣味的同时,也给图片压缩带来了百亿级/天的计算量,当前每一个压缩计算都跑在架平TCS-弹性计算平台上,下面我们就来聊聊平台是如何服务海量压缩计算的。


可行性


图片压缩迁移弹性计算平台之前,采用压缩程序混部存储机器的策略,虽然节省计算资源的设备成本,但混部的运营面临如下几个问题,并增加了人力的运营成本:


1. 资源利用率低


采用静态资源设备混部的方式,图片压缩业务在规划资源时,以业务高峰规划资源,设备量需几万台;而QQ和微信等社交类互联网业务,存在明显的波峰波谷效应,便意味着:非高峰期压缩设备的计算力被浪费了。


2. 运维成本增加


随着QQ和微信业务快速发展,压缩资源的需求量不断增加,运维的同事每季度或者每月都需上架设备,投入人力运营;尤其业务突发时,资源量不能满足业务增长量,触发业务架构的柔性策略,对用户的体验有损。


3. 业务相互干扰


图片业务与存储程序混合部署,未做资源物理隔离和程序侧性能隔离,存在CPU、内存等资源的竞争,业务高峰触发竞争加剧,导致互伤。


而TCS-弹性计算平台独有的资源物理隔离,服务量自动伸缩,服务权重动态可调等策略,契合的解决了业务的痛点。


平台那些事


资源隔离


压缩存储程序混部时,业务高峰期,随着请求量的增长,CPU时间片的竞争加剧,尤其对绑核的程序影响较大,现网运营中遇到过存储程序获取cpu时间片断崖式下降的场景。针对资源潜伏的恶性竞争,弹性平台在复用docker在cpu、内存隔离的基础上,并沿用了cgroup中quota、share、period的配置限制策略,但此类技术仅对资源管控,并不能灵活应对程序对cpu时间片的毛刺,对此,弹性平台创新的提出动态捆绑cpu策略,监控cpu核负载的前提下,调度容器跑在负载低的cpu上,cpu调度后效果。



名字化服务


图片压缩业务原本使用master管理compress资源列表,具体到每个压缩池、每个地域都需要一个独立master模块,造成master设备资源浪费,而且管理接口不统一,新介入的开发者上手耗时久;尤其对于业务突发场景,部署资源后,需要人工增添到master,运营不友好。面对业务的如上痛点,弹性计算平台提供了名字化服务,业务侧接入后,获取一个可访问的名字,平台将资源挂到名字下输出计算力,并在名字服务的基础上,打包提供了负载均衡,异常点删除策略保障业务的正常运行,解放运维人力;而且业务侧无需理解资源调度,开发者上手快;资源的伸缩通过名字透明化,运维同事只需关注业务状况。


自动调度


压缩计算的静态资源规划需按业务高峰评估,低峰cpu 空闲浪费而且资源应对业务突发的能力弱,架构上柔性但有损用户体验。针对业务需求量与资源使用量的矛盾,平台从资源调度的角度完美解决:资源按需供应,盘活资源的整体使用,通过对容器上报的cpu、内存、磁盘io及占用量和网络io等数据的分析,构建业务的负载监控,并在引入InfluxDB后,监控告警间隔缩短到秒级;平台自动调度分为动态扩缩、异常调度和感知调度。



1. 动态调度


平台最基础的调度方式,根据监控的容器负载信息做调度,以平台配合业务侧做的资源模型为依据,配置了负载高低阈值。当负载高于阈值,平台秒级扩容资源;负载低于阈值下限,平台分钟级缩容下架,保障业务稳定。


2. 异常调度


平台基于CPU时钟指令分配策略,微创新的提出用CPI(Cycles Per Instruction)指标监控业务的运行状态,通过对业务cpi建模,将模型跑出的cpi数据作为基准值,当业务的cpi方差值偏离模型值时,平台执行剔除或者替换操作。


3. 感知调度


平台在运营压缩业务中发现:在压缩程序自身的过载保护或者其他策略作用下,会出现CPU/CPI无明显变化,但压缩的延时、失败率升高的现象,针对资源指标正常,业务异常的矛盾,业务侧配合平台做了感知调度,即业务侧感知到时延或者失败率升高的压缩设备并反馈弹性平台,平台对此类资源做降权或者替换操作。


下面的两个图是压缩容器量和cpu负载图,全天cpu使用率几乎稳定在一条直线。



负载均衡


弹性平台可调度资源多种多样,母机CPU的型号也并不统一,对此平台使用benchmark程序,在各种CPU类型的机器上跑测试,为每个CPU类型计算一个性能系数(系数的范围是0.x~ 1.x),计算资源权重时,基于cpu的性能系数做主调,业务现网的延时、失败率等负载做微调,下图是动态调整后,cpu负载分布图。



总结与展望


图片压缩原本是2.4w台物理设备支撑,当前弹性平台仅用6k台容器为每天百亿次的压缩提供了可持续的计算力,除了图片压缩业务,平台还服务了视频转码业务,Spark计算以及AI围棋和王者荣耀计算业务。复用现网低负载资源总核数达70W核,全天平均CPU使用率高达56%。


年底弹性平台预计可调度的计算力可到100w核,深挖平台资源的计算力、使用率,为业务提供源源不断的低成本计算,在公司发力AI,倡导成本优化的大背影下,实现业务、平台、部门的多方共赢。


出处:https://mp.weixin.qq.com/s/I31tjZyRpowglg7MNwJmqw


版权申明:内容来源网络,版权归原创者所有。除非无法确认,我们都会标明作者及出处,如有侵权烦请告知,我们会立即删除并表示歉意。谢谢。


-END-


架构文摘

ID:ArchDigest

互联网应用架构丨架构技术丨大型网站丨大数据丨机器学习

更多精彩文章,请点击下方:阅读原文

登录查看更多
0

相关内容

中央处理器(CPU,Central Processing Unit),电子计算机的主要设备之一。其功能主要是解释计算机指令以及处理计算机软件中的数据。
最新《多任务学习》综述,39页pdf
专知会员服务
260+阅读 · 2020年7月10日
华为发布《自动驾驶网络解决方案白皮书》
专知会员服务
121+阅读 · 2020年5月22日
专知会员服务
28+阅读 · 2020年5月20日
【CVPR2020】多模态社会媒体中危机事件分类
专知会员服务
53+阅读 · 2020年4月18日
专知会员服务
121+阅读 · 2020年3月26日
阿里巴巴达摩院发布「2020十大科技趋势」
专知会员服务
105+阅读 · 2020年1月2日
【干货】大数据入门指南:Hadoop、Hive、Spark、 Storm等
专知会员服务
94+阅读 · 2019年12月4日
浅谈 Kubernetes 在生产环境中的架构
DevOps时代
11+阅读 · 2019年5月8日
阿里云发布机器学习平台PAI v3.0
雷锋网
12+阅读 · 2019年3月22日
介绍WAF以及过滤机制
黑白之道
22+阅读 · 2019年2月5日
OLAP引擎这么多,为什么苏宁选择用Druid?
51CTO博客
12+阅读 · 2018年12月20日
已删除
将门创投
9+阅读 · 2018年12月19日
一文读懂图像压缩算法
七月在线实验室
15+阅读 · 2018年5月2日
解析京东大数据下高效图像特征提取方案
京东大数据
4+阅读 · 2017年9月29日
京东用户画像揭秘:原来买iPhone X的是这么些人
R语言中文社区
10+阅读 · 2017年9月14日
Knowledge Distillation from Internal Representations
Arxiv
4+阅读 · 2019年10月8日
Conceptualize and Infer User Needs in E-commerce
Arxiv
3+阅读 · 2019年10月8日
Arxiv
5+阅读 · 2018年12月18日
Arxiv
6+阅读 · 2018年1月14日
VIP会员
相关资讯
浅谈 Kubernetes 在生产环境中的架构
DevOps时代
11+阅读 · 2019年5月8日
阿里云发布机器学习平台PAI v3.0
雷锋网
12+阅读 · 2019年3月22日
介绍WAF以及过滤机制
黑白之道
22+阅读 · 2019年2月5日
OLAP引擎这么多,为什么苏宁选择用Druid?
51CTO博客
12+阅读 · 2018年12月20日
已删除
将门创投
9+阅读 · 2018年12月19日
一文读懂图像压缩算法
七月在线实验室
15+阅读 · 2018年5月2日
解析京东大数据下高效图像特征提取方案
京东大数据
4+阅读 · 2017年9月29日
京东用户画像揭秘:原来买iPhone X的是这么些人
R语言中文社区
10+阅读 · 2017年9月14日
Top
微信扫码咨询专知VIP会员