【分布式系列1】多机分布式执行异步任务的实现姿势

​通过多机分片执行异步任务的一种实现姿势,基于GO语言实现。

往期精选(欢迎转发~~)

序言

执行异步任务时,比如需要处理10W个订单,如果是PHP,我们一般会配置一个定时任务,然后该定时任务就会在单机上执行;如果是GO或者JAVA,我们也需要使用相应的策略,保证该任务只在单机上执行,比如分布式锁。可能有同学会问,我直接在多机上执行同一个任务不行么,我只想说,你胆子真大,当多机同时处理一条数据,你会死的很惨的。

那我们是否有一种方法,可以让任务在多机同时执行,然后又可以避免多机同时处理相同数据的问题呢?这里给大家介绍一种多机分片的方式,也是最近在公司Get到的新技能。

应用场景

最近在做异步任务迁移,要求对DB中的订单进行处理,因为订单的数量非常大,10W的数量级是常规状态,如果只通过一台机器去处理,执行效率非常低,所以需要通过多机并发处理。

对于上述方式,其实还有另外一种解决方案,就是单机执行任务,然后把任务放入消息队列,再新增一个接口,用于消费队列中的数据,然后进行数据处理,因为接口对应的服务是集群部署,所以执行速度很快,不过这里在设计方案时,需要考虑消息重复消费,多机可能同时处理单条消息,网络异常导致消息未得到处理等问题,具体解决方案,欢迎大家线下和我讨论哈。

多机分片

什么是多机分片呢?说的通俗一点,就是把数据分成N份,分别给每一台机器执行。比如我们有1000条数据,通过相应策略,将数据分成5份,每份数据200条,如果我们有5台机器,那么每台机器可以分别处理200条数据。

那么具体是怎么实现?

为了更好讲解,我先简单模

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值