查看原文
其他

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

大数据测试荆明岚 京东技术
2024-08-24


Tech

导读

在企业的业务经营中,实时数据是营销、运维、决策的重要支撑,实时数据链路基本是所有大公司所拥有的,无论是否采用了中台模式,本文从如何建设实时数据双流、数据双流的建设标准,以及数据双流的压测备战三方面进行了详细的论述。




01 大数据双流建设

在今年的敏捷团队建设中,我通过Suite执行器实现了一键自动化单元测试。Juint除了Suite执行器还有哪些执行器呢?由此我的Runner探索之旅开始了!

1.1  数据双流


    

大数据时代,越来越多的业务依赖实时数据用于决策,比如促销调整,点击率预估、广告分佣等。为了保障业务的顺利开展,也为了保证整体大数据链路的高可用性,越来越多的0级系统建设双流,以保证日常及大促期间数据流的稳定性。建设核心数据链路双机房,双流双活。同时双流建设需要整条链路上的所有环节双机房部署,占用了双倍的物理资源;整个建设过程要协同上下游各环节(数据生产方、数仓加工方、中间处理节点、业务消费方),也会消耗大量的沟通建设成本。为了达到资源消耗和业务稳定性的平衡,特制定双流建设标准和实施流程以引导业务方合理评估双流需求,顺利开展双流建设实施。

1.2  数据双流的建设评估维度和标准


    


02   

大数据双流憋坝高保真压测

  

理解,首先 MCube 会依据模板缓存状态判断是否需要网络获取最新模板,当获取到模板后进行模板加载,加载阶段会将产物转换为视图树的结构,转换完成后将通过表达式引擎解析表达式并取得正确的值,通过事件解析引擎解析用户自定义事件并完成事件的绑定,完成解析赋值以及事件绑定后进行视图的渲染,最终将目标页面展示到屏幕。

2.1  双流憋坝压测


    
从21年大促备战开始,大数据侧核心数据链路,从单模块单任务的压测,转向全链路憋坝压测,把泄洪闸口上移,压测范围覆盖更广,流量和交易同时泄洪,高保真大促网络峰值,资源竞争场景,同时数据产品(黄金眼、商智、作战指挥室大屏)会在泄洪时同时进行读查询的压测,模拟大促读写峰值并行的真实大促场景。

2.2  双流憋坝的压测目标制定


    

压测目标设定,一般会参照历史峰值和市场预估,给出核心交易、流量主题链路峰值预估,例如22年双11的1.2倍。关键的数据流topic,会给出预估消费峰值供下游参考,如下表格所示(数据涉及保密不做详细展示)。

2.3  双流憋坝的压测方案


    

(1)交易的憋坝方式,通过停止同步任务憋单 ,交易双流架构图如下所示:

图1.交易双流架构图

(2)流量的憋坝方式,流量无损憋坝压测是通过停止采集服务写JDQ写集群的方式憋流,不参与压测的业务方,可以切换到“JDQ4澜沧江_点击流新建流”(压测期间新建JDQ写集群),保证下游业务可以在憋流压测期间,正常消费流量实时数据,做到无损。

图2.无损压测架构示意

2.4  双流憋坝压测规范


    
(1)全链路压测的具体憋单、憋流开始时间以及泄洪时间,每次压测前,会提前24~48小时发出通知(邮件+工作群),通知发出后,泄洪时间不再调整;

(2)全链路压测会进行集团报备,避开重要促销活动,压测要避开存储(hbase、jimdb、ES)、JDQ、JRC 等自身的灾备演练,以免无效压测。

2.5  失真场景的高保真压测


    
平时订单中预售订单占比过低,预售订单 平日峰值/大促峰值=0.05%~5.9%,峰值也无法达到要求,且不能指定场景,例如付定金和付尾款场景。所以预售订单无法在双流憋坝压测中实现高保真,所以做了大数据预售链路的整体改造,联合在线军演压测(业务生产系统的压测)实现预售链路的高保真压测补充。

落地方案:军演负责提供预售订单数据和付定金付尾款场景,大数据链路进行改造兼容压测进行数据压测且不污染线上数据

如下图所示:黄色部分为在线军演提供数据的对应存储——影子库表  。绿色部分为压测新增,最上层为压测数据源(JMQ/JDQ) ,下面是为了压测搭建的透传压测环境以及写影子存储。黄金眼预售通用源和商智预售交易通用源对应任务改成双进双出,同时可以处理线上数据源和压测数据源,线上数据写入线上输出topic和线上存储。压测数据源的数据处理后输出压测数据的topic,写入影子存储。这样线上拓扑不用随着每次压测改动,同时,下游业务方也可以灵活选择是否参与压测。

图3.618预售链路压测架构


03   

双流憋坝压测期间,业务方的迁移方案

  

理解,首先 MCube 会依据模板缓存状态判断是否需要网络获取最新模板,当获取到模板后进行模板加载,加载阶段会将产物转换为视图树的结构,转换完成后将通过表达式引擎解析表达式并取得正确的值,通过事件解析引擎解析用户自定义事件并完成事件的绑定,完成解析赋值以及事件绑定后进行视图的渲染,最终将目标页面展示到屏幕。

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即可


04   总结  

理解,首先 MCube 会依据模板缓存状态判断是否需要网络获取最新模板,当获取到模板后进行模板加载,加载阶段会将产物转换为视图树的结构,转换完成后将通过表达式引擎解析表达式并取得正确的值,通过事件解析引擎解析用户自定义事件并完成事件的绑定,完成解析赋值以及事件绑定后进行视图的渲染,最终将目
本文结合实际工作经验,详细描述了从如何建设实时数据双流到实时数据双流如何做大促备战的整个流程,希望大家看过之后,对如何保障实时数据链路的稳定性和高可用性能有所借鉴,给大家带来帮助。


推荐阅读Ui2Code+ChatGPT助力低代码搭建
单体分层应用架构剖析
JDK 17 营销初体验 —— 亚毫秒停顿 ZGC 落地实践
从原理聊JVM:染色标记和垃圾回收算法

求分享

求点赞

求在看

打造SAAS化服务的会员徽章体系,可以作为标准的产品化方案统一对外输出。结合现有平台的通用能力,实现会员行为全路径覆盖,并能结合企业自身业务特点,规划相应的会员精准营销活动,提升会员忠诚度和业务的持续增长。底层能力:维护用户基础数据、行为数据建模、用户画像分析、精准营销策略的制定

▪功能支撑:会员成长体系、等级计算策略、权益体系、营销底层能力支持

▪用户活跃:会员关怀、用户触达、活跃活动、业务线交叉获客、拉新促活

继续滑动看下一个
京东技术
向上滑动看下一个

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存