扫盲 : 图片的深度认知

孙云清,2008年加入腾讯,一直负责图片存储服务的研发。专注于图片云计算领域,专注于用户需求,从图片存储到下载加速,图片处理到违禁图审核,数据降冷到冷热流量调度,打造一站式图片服务平台。

图片是互联网的重要元素之一,各应用各网站基本上都离不开它,以图片作为关键场景的产品一直层出不穷。腾讯TEG-架构平台部希望为用户提供快速便捷且功能强大的图片服务,一直专注于图片云计算领域,专注于用户需求,打造了图片存储服务平台。十年海量请求的技术锤炼,从基础服务到业务深度合作,从基础架构到精细化运营,我们一直在路上。目前公司内已接入的业务场景近千个,公司外接入腾讯图片云的bucket上万个,每日上传图片数几十亿级,累计存储量百P级,文件数万亿级。

一、服务为王

平台服务。图片平台以稳定可靠的图片存储及加速下载为基础,配套以强大的图片处理、自动化的违禁图审核功能,并针对业务模型做冷热流量调度、存储数据降冷等一系列成本体验优化,为图片客户提供了一套完整的解决方案。其中强大的图片处理功能涵盖了各类应用场景,有图片缩放、裁剪、旋转,图片水印,格式转换,信息获取等。鉴于图片丰富的表现力让违禁图十分活跃,图片平台联合信息安全部建立了上传即可触发的自动审核及禁图流程,业务无需参与即可轻松享有。

服务可靠性。背靠部门强大的TFS存储系统,通过TFS底层的多设备多份存储保证了可靠性,数据安全性达到11个9,服务可用率达到4个9。下载结合CDN使用,有效降低了时延,全国遍布的加速节点,节点间互相容灾,保障了下载可用性。同时通过源站上传下载接入层的调度,实现了源站数据和服务的IDC间容灾。

业务场景可靠性。针对不同场景,图片平台拥有多种自适应能力,保障服务稳定。1)高频访问更新的头像场景,有热key排队、防空及防热cache策略,全网节点缓存快速更新及时间戳校验机制。2)重图片质量的电商场景,支持大图处理,并有大图专用处理池保证效率,配有锐化等图片处理手段提升商品图视觉体验。3)体量庞大的社交分享场景,支持数据多地分布,园区调度。重要节日及重大事件下的高突发,可通过高性能写缓冲层挡住压力,再缓慢落地底层。面对图片处理万台级设备的扩张需求,2016年开始使用架构平台部的弹性计算服务TCS,通过调度部门内设备的剩余资源,docker化来建设图片处理的弹性大集群,简化了运营工作,同时让突发的图片处理请求无需人工干预也能平稳度过。

二、成本和体验并行

除了提供稳定可靠的服务,图片平台还在成本和体验优化上持续深耕细作,不断开花结果。

上传下载加速。上传和下载的多节点就近接入大幅降低了用户延时,流量OC调度带来了成本和体验的双丰收,下载节点的TCP协议栈优化也继续提升了下载体验。其中上传就近接入,常规的按请求力度,对于存储多园区有状态分布的业务来说,专线带宽的消耗会很显眼。像QQ相册业务,索引量很大是多地分布的,做到多地完全备份太耗费成本,同时为方便单个用户的拉列表操作,所以异地容灾未触发时,单个用户的索引会全部在特定的一个园区里。假设某广东用户,就近连接到深圳接入点,但索引却在上海,那就需要深圳接入点通过内网专线将请求转去上海点。为了在体验提升基础上,也把成本做到极致,图片平台实现了索引和数据分离的就近上传方案,轻重分离,各自路由。无园区归属限制的较大的图片数据落到本园区,很小的索引数据根据实际分布落到所属园区。从而最大程度减免了专线带宽消耗。方案落地空间相册后为业务节省了上百毫秒的延时及数十G的专线带宽。

数据降冷存储。为保证数据安全性,底层采取三份存储策略。鉴于大部分数据有访问频率随时间推移越来越低的特性,即数据越来越“冷”。让冷数据通过牺牲访问性能来换取存储成本的纠删码便在存储领域活跃起来。我们选用的架构平台部TFS存储系统的RS(9+3)的纠删码结构,相比三份存储可靠性相当,存储成本节省了一半以上。图片平台每个业务独立且详细的运营数据为各业务制定降冷计划提供了依据,根据被访问数据的创建时间分布,来生成降冷的时间和资源的关联模型。同时根据业务特性,降冷过程中,套图内部分尺寸可被缩减,进一步节省空间。

图片大小的持续压榨。不同等级质量业务可选,满足不同需求。并在原格式基础上持续挖掘,去除图片元信息,gif绛色处理及相同帧合并等,小细节也能省出大流量。为了同等尺寸及同级视觉效果下让图片更小一点,时刻关注业界最新技术,先后引入了Webp、Hevc(wxpc/sharp)图片格式, webp图片可比jpg节省20%到30%,hevc又比webp节省近30%,hevc在gif上的节省更为可观,可节省80%。经过上述不断优化,图片大小保持在行业内优势明显。

三、深入业务

业务的图片存储和处理需求可能是相同的,但业务场景特性差异很大。结合业务特点,深入业务的深度合作,可以让成本和体验优化走的更远更好。

冷热流量调度。统一的全域名下载加速是通用的CDN加速手段,但业务的不同场景的访问特点可以差别很大,可能存在有更优的调度策略。比如社交网络分享类业务,普遍热点和时间关系紧密,访问集中于最近几天尤其密集于最近一天上传的图片。针对朋友圈图片的分析结果是,三天前的数据命中率急剧下降,太低,这部分数据放在CDN节点影响节点命中率,放大了业务总带宽成本,有必要把它分离出来。通过IP直通车调度,三天内的热数据下载调度去CDN节点,三天外的热数据下载调度去源站,现实冷热分离。这样的冷热调度可以让业务分布点命中率从60%+提升到80%+。提升了冷数据的访问延时也节省了总带宽成本。

像素的纷争。平台为业务提供各尺寸访问的详细运营数据,分析各尺寸访问分布及对应引用页面,以此参考来调整业务使用方式或尺寸处理方式。不浪费一点不必要的像素,合适的时机采取必要的柔性,根据成本选择尺寸落地还是下载时实时处理,低碳服务,环保运营。分别在微信公众号实施了过大尺寸合理降级,在QQ聊天图片上实施了高峰期大图代替原图,在QQ相册实施了512尺寸落地存储改为下载时从大图实时压缩出等,通过以上种种业务精细化运营手段,为业务节省了百G级带宽,几十P级存储成本。

四、技术突破和创新

图像编解码的FPGA应用。Webp和Hevc可以显著节省带宽,但它们的缺点也很明显,压缩计算复杂度是jpeg的10倍以上。使用cpu进行编码工作,耗费资源很大,带宽成本降低了,但图片处理成本上去了,成本优化便打了折扣。基于FPGA先后开发了高吞吐量的webp和hevc图片压缩功能,从系统功能划分、系统流水线设计、FPGA逻辑主频提升综合考虑,实现了单台FPGA服务器的转码性能提高到普通图片处理实体机的10倍,编码延时减少了80%,减少了用户等待延时。

ETL渐进式图片传输。在常规做法纷纷落地之后,仍可另辟蹊径,利用jpeg的progressive压缩模式,设计了上传和下载双路流式传输系统,传输最低要求数据即可响应用户成功,减少等待时间,并在网络状况差时,可丢弃部分不重要细节,换取传图功能可用性。带来了上传延时的30%提升,及失败率10%的下降比例。

图片智能调整质量。通常一个业务会选择一个统一的图片质量因子,然而人眼对不同图片的质量因子敏感度及关注度是不同的。图片平台引入图片内容识别,并制定了一套策略,根据主题内容来给图片定合适的质量因子。比如,主题是人脸的图片需要保持较高质量因子,二维码和大文字等图片则相当比例可以把质量因子降的很低,也不影响阅读和使用。通过如此种种策略,不影响用户体验却缩减了图片大小。下图是一个质量因子从98下降到37的二维码主题图片。

未来,仍需继续前行,为业务提供更优质的服务,助力业务更好发展。架构平台部的图片平台将持续在存储、下载及处理上投入,通过应用TFS系统的冷存储技术持续降低存储成本,通过合理流量调度扩大OC流量占比降低回源流量,通过图片格式研究继续稳定图片大小的行业优势,通过FPGA、GPU等手段进一步提升图片处理在各类请求上的处理延时及成功率,树立业界标杆。

文章来源公众号:腾讯架构师(TencentArchitecture)

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

编辑于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏互联网杂技

[译] 根据 OS 设计你的应用

Android 和 iOS 是市场上的两个主流操作系统。多数公司都会要求开发者开发对应的移动端应用。对于这些需要在两个平台上同时设计的应用,其中一个挑战就是在品...

35811
来自专栏顶级程序员

顶尖程序员的五种思维模式,你具备吗?

转自:程序人生(coder_life) 《THe Effective Engineer》的作者Edmond Lau采访了很多硅谷顶级科技公司的顶尖软件工程师。...

3526
来自专栏腾讯社交用户体验设计

在整理设计规范中变强

963
来自专栏云计算D1net

按需所取、弹性分配的云计算

云计算是一种按使用量付费的模式,这种模式提供可用的、便捷的、按需的网络访问, 进入可配置的计算资源共享池(资源包括网络、服务器、存储、应用软件,服务),这些资源...

3714
来自专栏腾讯大讲堂的专栏

腾讯自动化测试的AI智能

引子: 本文是林奕在腾讯 DevDays 2018 分享内容的脱敏整理,介绍了 CSIG 测试开发中心(前 SNG 测试开发中心)在自动化测试领域所做的智能...

3092
来自专栏TEG云端专业号的专栏

存储世界,不止如此 : EB级存储引擎背后的技术

每一个存储量级的突破,都意味着不同的挑战,本文阐述了由1PB到1EB的过程中,存储引擎背后的技术。

6902
来自专栏我是攻城师

运用Spark加速实时数据分析

3206
来自专栏腾讯大讲堂的专栏

英雄联盟自动化扩缩容利器

2013年是英雄联盟在线爆发式的增长的一年,年初的运营数据已经让全体英雄联盟运营团队感受到了巨大的压力。去年,扩容相关工作占到占据了英雄联盟运维较多的工作时长,...

20510
来自专栏数林觅风——数据科学思维导图笔记

导读 | 思维导图规则与文章主题

491
来自专栏程序你好

新手程序员如何写出好的代码

我之前的博客文章在推特上火了。这篇文章指出了一个问题——始终遵守某些规则实际上并不能帮助人们更好地编写代码。

865

扫码关注云+社区