java分片_用于将大量的数据进行分片分页分批处理的通用处理框架

数据处理通用框架

数据处理通用框架,用于将大量的数据进行分片分页分批处理的通用处理框架

背景

随着 系统迁移工作 的展开,数据迁移的需求越来越多:从SqlServer迁移到Mysql,或者SqlServer/Mysql到ES

这些迁移工作都有一个共同点,就是量比较大,耗时比较长,属于IO密集型的任务,可以使用多线程提升效率。

此框架脱胎于ES数据导入任务,该任务需要将 2000 万左右的商机主体数据从数据库查出并调用其他接口查询到商机的附加字段,然后导入到ES中。

其难点在于,数据量较大,耗时较长,商机没有自增主键无法按主键进行翻页,而且时间长的情况下,如果导到一半程序挂掉,需要支持断点续传(只重新导入失败的数据)

解决方案:数据分片分页分批处理框架

用户导向

使用者只需要关注数据从哪来,要做什么处理,其他的事情都交给框架解决。合理的默认值设置,通常情况下不需要关心处理的细节,如果有更高要求,则可以对一些参数进行定制化的调节。

实现原理

框架将需要分片分页分批处理的数据的处理过程进行抽象,使用模板模式将业务无关的模板代码抽离出来,让使用者只需要关注自己的业务实现,而无需关心实现的技术细节,如线程池的创建、切片处理、分批处理、出错记录等。

e9351e37238e4e1a1ea756cb583c69f7.png

每个分片做为任务条件提交到线程池进行处理,每个分片线程建立自己的线程池,以分片做为分页的依据获取来源资源,将分页数据分解成各个批次,将每批次的数据做为条件创建任务提交到分片线程中的线程池进行处理。各个批次提交完毕之后,分片线程等待任务执行完毕后再记录当前切片的处理结果。

核心接口 DataProcessor

本框架的核心接口 DataProcessor 展示了处理所需要的所有功能

process 执行处理逻辑

processErrorSlices 导入失败的分片

resumeProgre

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值