Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
分布式优先级队列(redis+;tornado)_Redis_Tornado - Fatal编程技术网

分布式优先级队列(redis+;tornado)

分布式优先级队列(redis+;tornado),redis,tornado,Redis,Tornado,我有3个不同的优先级队列A、B、C,存储在3个不同的服务器上 我有一个中央tornado服务器S,有3个客户机,连接到所有三个需要进行最大缩减的服务器,其中一个GET: 1) 查询每个队列的头 2) 头部得分最高的队列将弹出 然而,当两个GET同时处理时,我需要非常小心可能的竞争条件。我需要确保操作是在锁步中进行的,比如1212,而不是1122 我曾考虑使用阻塞单例来管理所有实例,但我希望有更好的解决方案。为什么不直接用单线程进程Web服务器替换tornado服务器?这样你就不需要锁定回调,也没

我有3个不同的优先级队列A、B、C,存储在3个不同的服务器上

我有一个中央tornado服务器S,有3个客户机,连接到所有三个需要进行最大缩减的服务器,其中一个GET:

1) 查询每个队列的头
2) 头部得分最高的队列将弹出

然而,当两个GET同时处理时,我需要非常小心可能的竞争条件。我需要确保操作是在锁步中进行的,比如1212,而不是1122


我曾考虑使用阻塞单例来管理所有实例,但我希望有更好的解决方案。

为什么不直接用单线程进程Web服务器替换tornado服务器?这样你就不需要锁定回调,也没有竞争条件:虽然我的评论很有挑衅性,但如果你认为50到100 req/sec之间的硬限制是可以接受的,这是一个非常简单有效的解决方案