2017-01-13 376 views
0

我有一组独特的价值观,我想给每个请求其中之一。最佳方式处理

每个值仅可一次分发。顺序并不重要。 我正在寻找一个很好的工具来做到这一点。

我一直在想使用MySQL与SELECT .. LIMIT 1 FOR UPDATE。工作,有没有办法选择一个解锁的行,而不是等待第一个锁释放?

我已经采用的RabbitMQ,登记每个请求作为消费者消费只是一个消息试过,但这种方法是慢的。在WAN上花费几乎一秒。

+0

这很奇怪,通常RMQ非常快。也许消息大小太大? – cantSleepNow

+0

消息大小只是几个字节。 RMQ速度很快,但连接时似乎有相当长的延迟(高WAN延迟)。但即使在本地网络上,抓取信息也需要0.05秒。 –

+0

这很奇怪。前段时间我运行测试时,我正在处理约5-6k信息/秒,他们是10-50KB – cantSleepNow

回答

1

从注释

似乎有连接[到RMQ]

是的,肯定是有什么时候需要很长一段延迟!在某些情况下,我已经看到连接需要5到10秒或更长时间。

但我们应该管理RabbitMQ的方式是每个应用程序实例都有一个打开的连接 - 当应用程序实例启动时打开它,并将其永远打开。

当我们需要做的工作,创建该做的工作通道。

渠道便宜,非常快速的打开和关闭,不像连接。

+0

好主意!目前我正在使用的php-amqplib似乎不支持这一点。将研究它来得到这个工作。你认为使用RMQ是最好的解决方案吗(例如Redis列表)? –