如何确保在分布式系统中进行单次交付?

时间:2017-03-18 08:40:13

标签: node.js locking distributed-computing

我有一个分布式电子邮件递送系统,可以定期向特定日期和时间的地址列表发送电子邮件。

我有一堆服务器轮询数据库并等待发送电子邮件的正确时间。

如何确保这些服务器不会同时向同一客户发送相同的电子邮件?我是否必须在这里创建某种分布式锁机制?是否有更好,更有效的方法呢?如果没有,那么实现这种分布式锁定的最佳实践建议是什么(我当前的堆栈是node.js + postgres)

1 个答案:

答案 0 :(得分:0)

嗯,如果它不是正确的轮询工作者,那么可能的解决办法就是使用一致性散列,对主题+主题+时间+等等进行散列,而不执行任务。

分布式锁定本身效率很低,难以扩展,但我的意思是你可以看看lamports面包店,令牌环传递网络,胖乎乎的所有这些都是生机勃勃,胖乎乎的相当棘手为了实现正确,你也可以拥有一个轻量级的仲裁,但这也没有效率。

TLDR,一致哈希,可能是明智之举,或者老实说,我不明白为什么你没有一个轮询器,只是将所有工作转发到负载均衡器,这将分配工作,按计划的方式。