京东春晚活动专题 亿级互动场景下的流量治理 靳智超资深技术专家 靳智超 京东资深技术专家 10年运维开发经验,目前主要负责京东APP移动端网络性能优化工作, 专注于APP加载速度提升、端侧流量治理和可观测平台的建设,经历多 次618、双11以及两次春晚主互动链路亿级别流量的考验。 请替换您的照片 01春晚互动业务及流量特点 目02流量治理实践 contents 录03异常流量探测 04未来流量治理的规划 PART01 春晚互动业务及流量特点 春晚用户参与流程 1 主持人口播摇一摇 央视 打开京东 2 APP启动 请求首页 3 首页后端 H5 活动页面 摇一摇 红包 导流 整点优惠券 主持人 4 用户摇一摇 (纯客户端处理) 5 H5页是h5static 非整点互动 游戏 6 互动后台 CDN页,素材走独立图片服务 请求关键路径 APP首页 首页加载图片80+,涉及摇一摇动效渲染 H5活动页面 加载js/css等大量CDN静态资源 APP启动 100+启动调用接口,用于拉取配置及初始化 互动后台 发奖调用链路长,上游依赖多,且均为核心依赖,无法降级。发放资金量巨大,互动场景刷子多。 流量特点 根据口播时段产生多段峰值,每次持续2-4分钟 峰值流量非瞬时突增突降 大部分为新用户请求 PART02 流量治理实践 启动项梳理 110项 27项 移动配置 01 推荐位06 站内信05 04 02 03 埋点SDK 登录打通 激活上报 Hybrid离线包 启动快/低错误/省流量 JDHybrid专注于解决主站内WebView加载H5页面耗时问题,提供了离线包技术方案。直接通过硬盘读取H5资源数据,减少网络 请求耗时,降低因网络引起的加载错误问题,同时也能降低CDN的峰值流量。 为什么用JDHybrid? hybrid可以提前n天由业务配置好,离线随 机分散预加载活动页面资源到App客户端本 地,春晚当天从本地读取缓存直接使用,降低同一时刻一起请求服务端的概率。 Hybrid离线包 3 5 6 1 在首页摇一摇 进入活动页 打开App 从cdn拉 取html 渲染显示 活动页面 正常节点 拉JDHybrid配置接口 下载离线自由zip包 读取本地资源文件 潜在风险点 2 4 内置能力:离线包内置到APP中,提升覆盖率,降低CDN下载压力 强制升级:300万低版本用户升级,提高内置包覆盖度 灵活的素材支持能力:离线包可以仅仅打包图片素材,支持app和h5访问内置的素材,降低CDN压力 离线包:覆盖80%用户,大幅减轻CDN压力,活动页面秒开率82%,页面打开时间减少30%+ 次新格式,压缩率高,编解码速度快,透明图、动画等特性都支持,Android12原生支持,fresco/SDWebImage也支持自定义libavif,开源免费。 AVIF 理论上目前为止最完美,压缩率高,编解码速度快,支持特性最全(渐进式解码),开源免费。但还在开发中,各端支持度很低,持续关注。 JPEG-XL 图片压缩 DPG AVIF 发15-16年主站逐渐推广18-19年主站逐渐推广22年主站逐渐推广 较新格式,压缩率较高,诺基亚专利需付费;iOS11原生支持,H5各浏览器都不支持,需要外挂解码器。 HEIC 10年历史,压缩率已无优势,各端兼容性较好,免费;WebP2还在开发中。 WebP Webp 展历程 图片压缩 一期方案:服务端改造AVIF 二期方案:客户端自动转换 图片压缩 加载性能收益带宽节省收益 典型模块 图片类型 Avg(ms) 提升幅度 APP原生商详 avif 95.173 13% APP原生商详 dpg.webp 109.309 - APPH5图文详情 avif 201.57 31% APPH5图文详情 dpg 292.16 - APP原生:平均文件大小减少7%-25%左右APPH5:平均文件大小减少23%左右 PC端:平均文件大小减少22%-56%左右 画质评估 图像质量的客观评估指标有PSNR、SSIM、VMAF等,一般认为PSNR超过40就接近原图,人眼基本无法区分。AVIF改造基于PSNR的结果如下 AVIF默认 AVIFq70 webp dpg.webp PSNR 42.09 40.64 35.46 33.74 文本压缩 单机压测验证Br和Gzip对服务端性的影响; 压缩级别相近情况下,Br压缩率较Gzip提升5%,CPU占用降低3%; 综合考虑压缩率、CPU消耗和TP99之间的平衡,服务端保持Br/Gzip双开,压缩级别设置为6/4; 序号 应用名 压缩算法 压缩级别 接口QPS 数据格式 TP99(ms) CPU使用率 接口1数据包(KB) 接口2数据包(KB) 1 支付成功页 无 0 125/125 json 447/560 77% 2.1 66.6 2 支付成功页 gzip 1 125/125 json 447/578 78% 1.4 13.4 3 支付成功页 gzip 4 125/125 json 449/584 79% 1.4 12.6 4 支付成功页 gzip 9 125/125 json 462/597 81% 1.4 11.6 5 支付成功页 brotli 1 125/125 json 450/610 74% 1.4 12.1 6 支付成功页 brotli 6 125/125 json 482/633 76% 1.1 10.9 7 支付成功页 brotli 11 35/35 json 1671/2983 88% 1 9.8 CDN调度 全域实时热力地图 CDN根据用户分布数据对大区流量有针对性地进行调度,最终结果与预期基本相符 限频+托底页 互动页所用腾讯云开启按频次限流,并返回自定义托底页,保证用户体验 缓存命中 预热充分,主要域名缓存命中率基本99%以上,关键域名100% QPS压力 多策略(活动页雪碧图归并,域名打散,摇一摇随机等策略),减轻峰值时刻对CDN的QPS压力 质量保障 内测演练 多轮众测+3轮内测 APP专项测试 9大类专项测试:启动、网络、降级、兼容、webview专项等 活动专项 全链路压测 18类压测剧本、压测大屏、券+红包专项 权益发放校验、前端兜底校验、离线资源校验、性能校验 PART03 异常流量探测 流量拆分建设-图片请求 抽取京东CDN节点10%抽样数据进行分析,聚合referer、host、图片格式、压缩格式等指标,做到有的放矢,针对性分析改造前后模块的效果对比 流量拆分建设-接口请求 统一网关提供api接口注册及监控能力,可针对客户端版本、机房、地域等维度进行调用量拆分及监控 转发到指定端口 whistle进程 传递请求 管理进程 IP队列 端口队列 IP1:erp1 IP2:erp1 erp1:port1 新进程 代理规则变动 同步缓存规则 sso权限验证 存储服务 负责转发中间件 用户管理 获取用户配置规则 Value管理数据统计 Rule管理 erp不在端口队列,拉取用户配置,再fork新进程 Erp2进程 Erp1进程 分发进程 主进程80 客户端调试工具-代理服务 用户控制台 切换用户 发送开启代 代理的请理 求,服 携带设备务 1.用户修改实时同步数据库持久化存储 IP和指定erp 1.用户进程可以共享 代理共享 解决代理无法共享 解决数据本地化 客户端调试工具-云真机 云真机覆盖Android、iOS、鸿蒙,实现实时交互的同时,提供丰富工具辅助测试 实时使用 视频流技术:更高画质、更低延迟 适用范围:开发调试、产品走查、功能测试、兼容测试 屏幕快捷操作 多样工具 手机快捷操作 便捷代理调试 抓包H5调试日志 覆盖率测试 安装包扫描二维码获取剪切板 远程调试快捷人机交互登录白名单 上传图片截屏 Shell脚本 定位模拟打开链接 录屏 更多:支持云真机批量控制,多台设备同时测试提升效率 异常流量典型案例 问题 原因 每天定点超预期流量峰值,抓包实测图片缓存异常,会有重复流量 未做懒加载及使用原图的情况,页面整体图片流量超过限制,导致缓存失效,带来额外流量。 异常流量典型案例 问题 进入页面会重复调用两次,出入参数一致。 修复方案 针对冷启动页面初始化过程中,收敛减少接口数据上报的触发时间点,合并数据到一个时间点上报(主接口数据请求成功后上报) 异常流量典型案例 非整点流量毛刺流量波动较大 多次流量毛刺日常流量很低,毛刺明显 PART04 未来流量治理的规划 未来规划 Thanks 高效运维社区DevOps时代 荣誉出品 THANKS 感谢大家观看