写点什么

大数据实时链路备战——数据双流高保真压测

  • 2024-10-22
    北京
  • 本文字数:3825 字

    阅读完需:约 13 分钟

作者:京东零售 京东零售

一、大数据双流建设

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消费者相互切换方法

发布于: 刚刚阅读数: 4
用户头像

拥抱技术,与开发者携手创造未来! 2018-11-20 加入

我们将持续为人工智能、大数据、云计算、物联网等相关领域的开发者,提供技术干货、行业技术内容、技术落地实践等文章内容。京东云开发者社区官方网站【https://developer.jdcloud.com/】,欢迎大家来玩

评论

发布
暂无评论
大数据实时链路备战——数据双流高保真压测_京东科技开发者_InfoQ写作社区