亿万图片服务平台——QQ 空间海量照片服务平台架构设计与实践
2020-02-27 628浏览
- 1.万亿图片服务平台 QQ空间海量照片服务架构设计与实践 QQ空间后台开发Leader 付强(Yark Fu)
- 2.
- 3.
- 4.
- 5.
- 6.业务背景 坚挺14年,规模大,成本大 >400P >9000亿 ~ 3W台 337个服务模块 >10亿 7亿 用户数 照片数 上传峰值 机器数 存储量 服务数
- 7.目录 架构设计 成本优化 相册的架构设计与数 据组织 移动端优化 移动端极速上传下载优化, 解决连通性 每节节省上亿元的成本 优化实践 9千亿 图片 照片+AI 照片数据挖掘,图片与 AI的结合
- 8.架构设计 PART 01 √分层设计 √分块设计 √稳定性 √容灾部署 √存储设计
- 9.架构设计之一:分层 jce/pb RPC Restful API Access Server 区分命令字通道与图片数据通道 支持jce/pb协议的RPC调用,使用node.js 进行协议互转免开发支持restful API调用 Logic Server 无状态,支持水平无限扩容 微线程框架,同步调用异步处理 Node.Js WNS webapp Logic server Photo acess Logic server Store 图片存在分布式存储TFS KV存储 TFS CKV Redis
- 10.架构设计之二:分区 分区一 Access server 分区二 分区三 Access server Access server 1 分区自治 单个分区逻辑上是一个完整系统,包含 全部服务。分区故障不影响其它分区 Logic server Store proxy Logic server Store proxy Logic server Store proxy 2 分区间不存在服务的差异。单个分区/模 块服务出故障,业务可以分到其它分区/ 其它分区的模块。 3 store store store 区间互备 数据共享 设计存储proxy层来屏蔽有状态存储。通 过内网和专线进行跨分区数据访问。。
- 11.架构设计之三:存储设计 图片和目录的索引信息存在TSSD,采用分块扩展法(512K小块),支持大目录。 内容信息存储在SATA盘,以2G为一个小块,作分区映射 Tencent File System proxy 图片内容支持MD5去重, 去重率25% 索引图片存储比例约 1:200 Directory Index 512 Item Range 1 Range 2 Range N 1024 Item MD5 Index TSSD Acess 1024 Item 1024 Item File Index TSSD Master Cell Cell Cell Cell Cell Cell Cell Cell Cell Trunk Master Trunk Trunk Trunk Trunk Trunk Trunk Trunk Trunk Trunk
- 12.架构设计之四:服务稳定性 Access server Server 1 Logic server Hot buffer Logic server CL5 agent Server 2 Photo Access Photo Buffer photo Store proxy Store proxy hot store store store store store store Redis Queue Server 3 单机故障 热点数据 (外网5%) 图片传输 (每天7W)
- 13.架构设计之五:容灾 成本&性能&复杂度 多地全容灾 ? UGC数据时效性 少部分数据受影响 用户可以查看最近的数据,最近一个月/最近N条数据多地备份。 实现:10*30备份逻辑,额外增加40T 保障实时性操作 关键操作不受影响 先保证上传等核心操作。 实现:就近上传,数据BUFFER流水。 分区SET化 服务可快速切换 影响是局部的 多地部署,分区等价,单一分区故障可以把服务均分到其它分区。 案例:天津大爆炸,5分钟服务分切深圳/上海 模块化 单机不影响模块;单模块不影响系统;单用户不影响整体;过载而不雪崩 实现: L5(load banlance), 无状态化,热点/过载保护
- 14.IDC架构设置 01 02 01 天津 02 上海 03 深圳 04 03 04 05 05 总请求占36.7% 总请求占31.14%。 总请求占31.65%。 香港 请求量占0.25%,仅接入,海外用户。 加里(加拿大) 请求量占0.03%, 仅接入,服务北美用户
- 15.移动端优化 √连接可达性 PART 02 √极速上传 √下载实现
- 16.移动端优化设计之一:解决可达性 使用WNS IP直出解决域名劫持 采用后台请求重定向解决跨运营商访问 结合客户端拔测推荐最优链路 Access 1 Access 2 IP直出与调 整度
- 17.移动端优化之二:极速上传 批量控制包:多照片上传单次串行交互 à 一次批量交互 分片流式传输:多个小文件 à 类大文件上传 双链路并发 + 异步收回包 P1 P2 P3 Photo Access Photo Buffer photo Redis Queue Store proxy stor stor stor e e e
- 18.移动端优化之三:下载优化 https:后端压缩资源问题 CPU增加 30%http2.0:与IP直出结合覆盖域名方式校验 TLS:快速链接与2G弱网络下延时问题
- 19.成本优化 √统一适配 PART 03 √图片格式 √分级存储
- 20.成本优化之一:统一适配服务 图片的适配统一收归后台,集中控制 逻辑抽象: 当前档, 大图档,高清/原图档 业务抽象: 场景,屏幕尺寸,网络,系统(等) 带宽节省200G,流量节省40%,节省成本6KW Access Server Logic Server Store proxy stor stor stor e e e Photo Adapt
- 21.成本优化之二:图片格式探索 APP TPG/Webp SDK Access Server Logic Server Photo Adapt Store proxy stor stor stor e e e OC FPGA & Docker Compress 图片格式 相对JPG压缩率 外网占比 JPG 100% 10% WEBP 70% 20% TPG 50% 70% HEIF 53% 0.001%
- 22.成本优化之三:数据分级存储 上传超过1年的大图冷数据直接存冷数据存储 累积访问量占比 100% 中图档动态压缩输出,小图仍然3份存储 80% 总计节省存储51%,累计400P 60% 40% 20% 0% 1天内 7天内 1个月内 3个月内 半年内 1年内 3年内 Tencent File System proxy RC(9,3),3份 à 1.33份 区间访问量占比 60% 50% 40% Direct ory Index File Index Trunk Master MD5 Index 30% 20% 10% 0% Trunk Trunk Trunk Trunk Trunk Trunk Trunk Trunk Trunk
- 23.面向图片AI的探素 √照片人脸与内容识别 PART 04 √算法+数据+场景+算力 √图片超分辨率
- 24.人脸内容识别:背景 照片的人脸识别,身份识别与聚类 照片的内容识别与分类管理 9千亿存量+ 每天新增5亿照片的处理? 人脸识别
- 25.后台闲时算力:架构 3) 从 RM 机 器 获 取 DOCKER资源 Triger Triger Triger Resource Manager 资源管理,分配置与 监控 1)需要检测的 图片记录入队 Task Queue Distribute Controllor 2) 从 队 列 中 获 取 需要处理的记录 Docker Docker TVM Cgroups Docker TVM Cgroups Docker TVM Cgroups TVM Cgroups 4)任务分发,并做速 度控制
- 26.使用效果 每天处理100亿张图片, 共复用线上2W核CPU, 平均负载率提高到45% 全天分时平均负载 10% ~20% 20% ~30% 30% ~40% 40% ~45% 45% ~50%
- 27.超分辨率效果 原图:960x1280Size:'>Size: