Tech 导读 在企业的业务经营中,实时数据是营销、运维、决策的重要支撑,实时数据链路基本是所有大公司所拥有的,无论是否采用了中台模式,本文从如何建设实时数据双流、数据双流的建设标准,以及数据双流的压测备战三方面进行了详细的论述。
01
大数据双流建设
在今年的敏捷团队建设中,我通过Suite执行器实现了一键自动化单元测试。Juint除了Suite执行器还有哪些执行器呢?由此我的Runner探索之旅开始了!
1.1 数据双流
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 会依据模板缓存状态判断是否需要网络获取最新模板,当获取到模板后进行模板加载,加载阶段会将产物转换为视图树的结构,转换完成后将通过表达式引擎解析表达式并取得正确的值,通过事件解析引擎解析用户自定义事件并完成事件的绑定,完成解析赋值以及事件绑定后进行视图的渲染,最终将目
本文结合实际工作经验,详细描述了从如何建设实时数据双流到实时数据双流如何做大促备战的整个流程,希望大家看过之后,对如何保障实时数据链路的稳定性和高可用性能有所借鉴,给大家带来帮助。