大数据实时链路备战——数据双流高保真压测
作者:京东零售 京东零售
一、大数据双流建设
1.1 数据双流
大数据时代,越来越多的业务依赖实时数据用于决策,比如促销调整,点击率预估、广告分佣等。为了保障业务的顺利开展,也为了保证整体大数据链路的高可用性,越来越多的 0 级系统建设双流,以保证日常及大促期间数据流的稳定性。建设核心数据链路双机房,双流双活。同时双流建设需要整条链路上的所有环节双机房部署,占用了双倍的物理资源;整个建设过程要协同上下游各环节(数据生产方、数仓加工方、中间处理节点、业务消费方),也会消耗大量的沟通建设成本。为了达到资源消耗和业务稳定性的平衡,特制定双流建设标准和实施流程以引导业务方合理评估双流需求,顺利开展双流建设实施。
1.2 数据双流的建设评估维度和标准
二、大数据双流憋坝高保真压测
2.1 双流憋坝压测
从 21 年大促备战开始,大数据侧核心数据链路,从单模块单任务的压测,转向全链路憋坝压测,把泄洪闸口上移,压测范围覆盖更广,流量和交易同时泄洪,高保真大促网络峰值,资源竞争场景,同时数据产品(黄金眼、商智、作战指挥室大屏)会在泄洪时同时进行读查询的压测,模拟大促读写峰值并行的真实大促场景。
2.2 双流憋坝的压测目标制定
(1) 压测目标设定,一般会参照历史峰值和市场预估,给出核心交易、流量主题链路峰值预估,例如 22 年双 11 的 1.2 倍。关键的数据流 topic,会给出预估消费峰值供下游参考,如下表格所示(数据涉及保密不做详细展示)
2.3 双流憋坝的压测方案
(1)交易的憋坝方式,通过停止同步任务憋单 ,交易双流架构图如下所示:
(2)流量的憋坝方式,流量无损憋坝压测是通过停止采集服务写 JDQ 写集群的方式憋流,不参与压测的业务方,可以切换到 “ JDQ4 澜沧江_点击流新建流 ” (压测期间新建 JDQ 写集群) , 保证下游业务可以在憋流压测期间,正常消费流量实时数据,做到无损。
2.4 双流憋坝压测规范
(1)全链路压测的具体憋单、憋流开始时间以及泄洪时间,每次压测前,会提前 24~48 小时发出通知(邮件+工作群),通知发出后,泄洪时间不再调整
(2)全链路压测会进行集团报备,避开重要促销活动,压测要避开存储(hbase、jimdb、ES)、JDQ、JRC 等自身的灾备演练,以免无效压测
2.5 失真场景的高保真压测
平时订单中预售订单占比过低,预售订单 平日峰值/大促峰值=0.05%~5.9%,峰值也无法达到要求,且不能指定场景,例如付定金和付尾款场景。所以预售订单无法在双流憋坝压测中实现高保真,所以做了大数据预售链路的整体改造,联合在线军演压测(业务生产系统的压测)实现预售链路的高保真压测补充
落地方案:军演负责提供预售订单数据和付定金付尾款场景,大数据链路进行改造兼容压测进行数据压测且不污染线上数据
如下图所示: 黄色部分为在线军演提供数据的对应存储——影子库表 。绿色部分为压测新增,最上层为压测数据源(JMQ/JDQ) ,下面是为了压测搭建的透传压测环境以及写影子存储。黄金眼预售通用源和商智预售交易通用源对应任务改成双进双出,同时可以处理线上数据源和压测数据源,线上数据写入线上输出 topic 和线上存储。 压测数据源的数据处理后输出压测数据的 topic,写入影子存储。这样线上拓扑不用随着每次压测改动,同时,下游业务方也可以灵活选择是否参与压测。
三、大数据憋坝压测期间,业务方的迁移方案
3.1 双流憋坝压测对于业务方的影响
****在大数据双流压测的憋流和憋单期间,憋流和憋单对应的机房(汇天/廊坊)无实时数据下发,泄洪后恢复。不参与压测的业务方,需要做对应的切换。
3.2 不参与压测的业务方的迁移方案
(1)切换集群:
A、交易不涉及,交易从源头 topic 都是双流双活,业务可以切换消费到不压测机房对应的 topic 即可
B、流量直接消费点击流吐出的 topic,需要切换到无损压测集群 “JDQ4 澜沧江_点击流新建流” 。本次切换集群,支持一键迁移,不用重启任务,要使用这次功能,需要升级 jdq-sdk,jdq sdk 版本是 jdq4-clients:1.3.0-SNAPSHOT flink:1.10/1.12/1.14-1.0.9-SNAPSHOT。如果迁移过程中看不到集群“JDQ4 澜沧江_点击流新建流” ,可以联系平运维同学支持
(2)切换 topic 鉴权
A、交易是双流,廊坊和汇天都有对应的 topic,不参与压测的业务方可以申请,消费非压测机房对应的 topic 即可
B、流量不是消费采集服务直接吐出的 topic,消费的是流量实时数仓及以下链路的 topic,也是双流双活,切换消费到非压测机房对应的 topic 即可。
大数据双流憋坝压测(方案、影响、业务方迁移方案)——内部版本(这部分对外部保密不能发布,外网发布的时候这部分不需要,前面就是完整版本)
一、大数据双流憋坝简介
1.1 数据双流
大数据时代,越来越多的业务依赖实时数据用于决策,比如促销调整,点击率预估、广告分佣等。为了保障业务的顺利开展,也为了保证整体大数据链路的高可用性,越来越多的 0 级系统建设双流,以保证日常及大促期间数据流的稳定性。建设核心数据链路双机房,双流双活。同时双流建设需要整条链路上的所有环节双机房部署,占用了双倍的物理资源;整个建设过程要协同上下游各环节(数据生产方、数仓加工方、中间处理节点、业务消费方),也会消耗大量的沟通建设成本。为了达到资源消耗和业务稳定性的平衡,特制定双流建设标准和实施流程以引导业务方合理评估双流需求,顺利开展双流建设实施,详细参见:双流建设评估标准
1.2 大数据双流憋坝压测
从 21 年大促备战开始,大数据侧核心数据链路,从单模块单任务的压测,转向全链路憋坝压测,把泄洪闸口上移,压测范围覆盖更广,订单和交易同时泄洪,高保真大促网络峰值,资源竞争场景,同时数据产品(黄金眼、商智、作战指挥室大屏)会在泄洪时同时进行读查询的压测,模拟大促读写峰值并行的真实大促场景
1.3 大数据憋坝与军演的关系
(1)军演, 是针对生产业务系统的压测,主要涵盖首页、搜索、列表、商详、活动、购物车、结算页、订单、优惠券、礼品卡、支付、网关、OFC、物流、售后及依赖的上游动态系统。压测所用的 sku 是测试 sku,压测的订单会打 sendpay140=2 或者 3 的标识,不会污染线上真实数据。
(2)大数据憋坝,是从停止同步任务开始,憋真实的线上流量,达到一定的量后,泄洪,所有压测数据都是真实线上数据。
(3)大数据憋坝与军演的关系:
A、军演压测数据不会影响大数据链路
B、大数据泄洪的时间,需要避开军演起量的时间,否则源头订单源泄洪会有拖尾
C、对于预售这种平时憋单,无法达到大促场景和量级的特殊订单场景,军演与大数据会做联合高保真压测
二、23 年 618 双流憋坝压测的备战目标和压测方案
2.1 备战目标
按照 22 年双 11 峰值,目标 1.2,挑战 1.5(需要关注 1.5 倍任务运行情况,确保任务可以运行,预估延迟时间)
(1)流量按照 22 年双 11 的 1.2 倍预估,(微信手 Q: 228w/min PC:50.3w/min M;601 w/min ,APP:4596w/min)
(2)交易按照 22 年双 11 的 1.2 倍预估,(stream-02-02-10200-sharding-jdorders:1260 w/min;OrderPipe_Submit:201.6 w/min)
采集服务层,2023 年 topic 峰值预估如下:
2.2 双流憋坝的计划日期
(1) 5 月 8 日 双流第一次压测,流量全链路 +交易廊坊
(2)5 月 12 日 双流第二次压测,流量全链路+交易汇天
(3)5 月 22 日 双流第三次压测。 流量全链路 +交易廊坊
(4)5 月 24 日 双流第四次压测,流量全链路+交易汇天
2.3 双流憋坝的压测方案
(1)交易的憋坝方式,通过停止同步任务憋单 ,交易双流架构图如下所示:
(2)流量的憋坝方式,无损全链路压测通过停止采集服务写 JDQ 写集群的方式憋流,不参与压测的业务方,可以切换到 “ JDQ4 澜沧江_点击流新建流 ”, 保证憋流压测期间可以正常消费流量实时数据,做到无损。
2.4 双流憋坝压测规范
(1)全链路压测的具体憋单、憋流开始时间以及泄洪时间,每次压测前,会提前 24~48 小时发出通知(邮件+京 me 群),京 me 群: “ 23 年大数据双流压测启动”,群号:1024432664 ; 通知发出后,泄洪时间不再调整
(2)全链路压测会进行集团报备,避开重要促销活动,压测要避开存储(hbase、jimdb、ES)、JDQ、JRC 等自身的灾备演练,以免无效压测
三、大数据憋坝压测期间,业务方的迁移方案
3.1 双流憋坝压测对于业务方的影响
****在大数据双流压测的憋流和憋单期间,憋流和憋单对应的机房(汇天/廊坊)无实时数据下发,泄洪后恢复。不参与压测的业务方,需要做对应的切换。
憋单影响的 topic 参见: https://joyspace.jd.com/pages/mKHPBOLblsfK58O4c4IL
憋流影响的 topic 参见: https://joyspace.jd.com/pages/WW5lG8NFeCcmSdp348Qb
3.2 不参与压测的业务方的迁移方案
(1)切换集群:
A、交易不涉及,交易从源头 topic 都是双流,业务可以切换消费不压测机房对应的 topic 即可
B、流量直接消费点击流吐出的 topic(具体参见:23年618憋流topic整理),需要切换到无损压测集群“JDQ4 澜沧江_点击流新建流” 。本次切换集群,支持一键迁移,不用重启任务,要使用这次功能,需要升级 jdq-sdk,jdq sdk 版本是 jdq4-clients:1.3.0-SNAPSHOT flink:1.10/1.12/1.14-1.0.9-SNAPSHOT。如果迁移过程中看不到集群“JDQ4 澜沧江_点击流新建流 ” ,请加群“23 年 618 压测迁移新集群”,群号“1029948724”
C、集群的具体迁移方式参考:23年618流量压测新建流一键切集群的方式
(2)切换 topic 鉴权
A、交易是双流,廊坊和汇天都有对应的 topic,不参与压测的业务方可以申请,消费非压测机房对应的 topic 即可
B、流量不是消费采集服务直接吐出的 topic,例如消费的是流量实时数仓的 topic,也是切换消费非压测机房对应的 topic 即可
C、具体切换方式参考:23年全链路压测汇天/廊坊topic消费者相互切换方法
版权声明: 本文为 InfoQ 作者【京东科技开发者】的原创文章。
原文链接:【http://xie.infoq.cn/article/ba910a65bc6ea71c44cf9d101】。文章转载请联系作者。
评论