2017-01-11 29 views
0

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

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

  1. 从活着位置的工人能够拿到这样的任务并完成它
  2. 断开时工人终于接通时,应该确定任务已经由其他工作人员完成,并决定如何用它做

解决此类问题的便捷方法是什么?

回答

1

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

然后就是消耗的任务的工人应该发送某种还活着消息每秒左右(类似于Hadoop的hearbeat消息)的,更新的消费任务列表中的任务的时间戳。这是为了表明使用这项任务的工作人员还活着,并且最近收到了他的消息。

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

相关问题