我有一个分布式电子邮件传送系统,定期发送电子邮件到一个地址列表,在特定的日期和时间。
我有一堆服务器轮询数据库,等待合适的时间发送电子邮件。
如何确保这些服务器不会在同一时间向同一客户发送相同的电子邮件?我必须在这里创建某种分布式锁定机制吗?有没有更好、更有效的方法呢?如果没有,推荐的实现这种分布式锁的最佳实践是什么(我当前的堆栈是node.js + postgres)
发布于 2017-09-23 16:51:54
好吧,一种可能的解决办法是,在(主题+时间+任何东西)的散列上使用一致的散列,并且如果它不是正确的轮询工作人员,则不执行任务。
分布式锁本身效率很低,很难扩展,但我的意思是,你可以看看lamports面包房,令牌环传递网络,除了胖乎乎的,所有这些在活跃度方面都是狗屎,胖乎乎的实现起来也很棘手,你也可以有一个轻量级的quorum,但效率也不高。
TLDR,一致性哈希,可能是聪明的方式,或者说实话,我不明白为什么你没有一个轮询器,它只是将所有的工作转发给一个负载均衡器,它将以预定的方式分发工作。
https://stackoverflow.com/questions/42872221
复制相似问题