扫盲 : 图片的深度认知

孙云清,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 条评论
登录 后参与评论

相关文章

来自专栏斑斓

系统架构 | 设计恰如其分的架构

远在2009年,Martin Fowler与Rebecca Parsons在QCon SF做了一次题为Agilists and Architects: Alli...

3576
来自专栏企鹅号快讯

IDC+BIM,或将带来数据中心新革命

IDC+BIM,或将带来数据中心新革命。你是选择做这场革命的推动者、追随者,还是旁观者? 一、什么是BIM? 美国国家BIM标准对BIM的定义很清晰: 1.一个...

2007
来自专栏Java架构

阿里P7架构师总结分布式系统的经典基础理论

首先,分布式系统的首要目标是提升系统的整体性能和吞吐量。如果最终设计出来的分布式系统占用了10台机器才勉强达到单机系统的两倍性能,那么这个分布式系统还有存在的价...

3108
来自专栏架构之美

转转大数据平台从 0 到 1 演进与实践

912
来自专栏SDNLAB

当DevOps“遇上”周期表

你或许听过DevOps的威名,但有相当大一部分人可能说不清DevOps到底是什么东西。搜索“DevOps”,出来的是茫茫多的信息,最奇怪的现象是明明2009年才...

2826
来自专栏SDNLAB

SDDCI简介

在业务类型多样及流量需求规模巨大的情况下,DCI(Data Center Interconnect,数据中心间网络)主要存在如下挑战: ✔ 大二层的实现要求跨数...

3409
来自专栏用户画像

1.1.3 计算机网络的功能

它是计算机网络最基本和最重要的功能,用来实现联网计算机之间的各种信息的传输,并实现将分散在不同地理位置的计算机联系起来,进行统一的调配、控制和管理。比如,文件传...

861
来自专栏云计算D1net

针对云安全性如何使用可视化技术

我曾经阐述了这样一个理念,即云计算并不仅仅是由商业实体所提供的服务的一个集合。与之相反,从安全性的角度来看,云计算是一个单一的可互操作性的系统,它包括了专为跨多...

3194
来自专栏数据之美

转转数据平台从 0 到 1 的演进与实践

1、背景 在转转开始大数据平台建设之前,整个数据从需求提出到研发流程再到数据报表、数据产品,也是经历过一段非常混沌的时期,而且效率和质量往往很难得到保障,主要表...

1876
来自专栏Java架构

阿里P7架构师总结分布式系统的经典基础理论

1875

扫码关注云+社区