背景
最近在做一个新的对账平台,旧的对账系统存在很多问题,其中一个问题就是性能问题,因此新的对账平台从设计之初就考虑了性能这一块,下面不会讲为什么选择做新的对账平台,也不会讲对账平台的其他设计,就说一下如何使用xxl的分片广播路由策略实现对账的分片计算。
场景分析
渠道对账,一天一个批次,我们对接了100个渠道,然后每个渠道一天有100W的订单数,这是假设,不过对账平台的对账数据量的确会不断增加,事实上我们的对账平台不仅仅只有渠道对账,还有内部业务对账,因此单机计算不行,很自然的想到分片计算,就是我们可以通过增加对账服务实例数量来增加对账的性能,以此来保障性能要求。
实现原理
抽象出两个概念对账批次和对账单,一个对账批次下有多笔对账单,批次下的每个对账单都对齐了那这个对账批次就算对齐了,分片计算就是作用在单笔对账单上。我们拿订单ID去mod总分片数,如果值等于当前对账服务的分片序号那就分配给当前实例来计算。
具体实现
1、设置job的路由策略

2、获取总分片数和当前服务的分片序号
ShardingUtil.ShardingVO shardingVO = ShardingUtil.getShardingVo();
int index = 0;
int total = 1;
if (shardingVO != null) {
index = shar

在构建新的对账平台时,为解决旧系统的性能问题,采用了xxl的分片广播路由策略进行对账的分片计算。针对每天100个渠道每个渠道100W订单的场景,通过增加对账服务实例,实现性能提升。分片计算基于对账批次和对账单,订单ID模总分片数确定计算实例。具体实现包括设置job路由策略、获取分片信息及匹配对账单。
最低0.47元/天 解锁文章
1765

被折叠的 条评论
为什么被折叠?



