分布式任务调度

需求背景:

业务一:

 1解析几g的json格式的元数据,多线程,存储db的方式,效率太低 ;

 2解决方案:文件读取解析都放到hdfs上,借助大数据的能力,快速完成数据处理;

 

业务二:

 每天定时执行特定业务,虽然从db层面可以支持幂等性,但从实际执行上,并不需要多机器执行;

2解决方案:增加shedlock,底层是在mysql中有一个表,增加锁支持。保证同一时刻只有一个任务在执行;

 

业务三:

 从db中捞取待处理的任务,多个机器之间,希望可以分别获取一部分任务,达到并行执行的目的。避免数据的重复获取,执行。

  问题:没有特定的关系可以将机器和任务之间做映射关系。

  解决方案:将db的待处理表的主键id做取余数操作,同时每台机器都有记录一个对应的index索引值,和当前的机器数目,从而在各自机器拉取db数据时增加此条件限制,达到过滤目的;

 不足之处:需要依赖于各台机器的配置文件,如果增删节点,则要相应的修改配置文件的 machine.no,machine.index的值,如果机器较多的话,间接影响了弹性扩容。

 改进方案:目前考虑使用elastic-job 这里分布式任务调度的技术方案。 同样需要对数据正确分片

 

 

以上谈及到的避免任务重复执行的技术方案:分布式锁

实现方式:数据库,redis,zookeeper

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值