不稳定网络中的分布式队列使用

时间:2017-01-11 11:23:25

标签: queue distributed

我正在研究分布式系统的设计。该系统由多个生产者,分布式队列和多个消费者即工人组成。 工作实例驻留在不同位置的数据中心内。有时手动断开一个位置。

在这种情况下,问题是来自断开连接的位置的工作人员从队列中获取了一些任务,然后在任务完成之前关闭。我想要:

  1. 来自活着的地方的工人能够完成这样的任务并完成它
  2. 当断开连接的工作人员最终打开时,它应该确定任务是否已经由其他工作人员完成并决定如何处理它
  3. 解决此类问题的方便方法是什么?

1 个答案:

答案 0 :(得分:1)

此设计可能对您有所帮助。每次工作人员消耗任务时,将任务从队列移动到其他分布式消耗任务列表。在此任务列表中,维护每个任务的时间戳。

然后,消耗该任务的工作者应该每隔一秒左右发送某种仍然存活的消息(类似于hadoop的listenbeat消息),该消息更新消耗任务列表中任务的时间戳。这是为了表明消费这项任务的工人仍然活着并且最近收到了他的消息。

现在,实现一个守护进程来监视这个消耗的任务列表,并将任务移回到时间戳早于阈值秒数的队列(考虑消息丢失)。