我要确保在服务器实例(或集群节点)之间逐个调用每个函数。
我可以在需要时自由地向队列中添加函数,这些函数是异步的。
它可以由redis支持,并在nodejs上工作。
你知道有什么办法吗?
或者有什么办法实施?
我尝试了很多像kue这样的作业队列lib,但它并不能确保实例之间只有一个调用。
谢谢
赛博

最佳答案

我知道怎么做了。
对于任何被问到的人:我使用了一个锁库和无限重试。
lib是节点重锁:https://github.com/mike-marcacci/node-redlock
它实现了redis锁定ressources的最新建议方式:http://redis.io/topics/distlock,这在集群redis基础设施上更可靠。在这个页面上有比nodejs更多的实现。
使用函数调用的轮询队列的愚蠢技巧是使用具有无穷大值的储物柜作为retrycount设置的值。
用一个具有aquire(callabck)广告发布函数的对象来处理它是非常容易的。
如果有人对这个解决方案和/或其他技术持批评态度,我会很高兴听到。
谢谢

10-05 20:29
查看更多