我试用兔子mq,发现它相当不错。看看HA页面,我发现交换/队列复制效果很好。RabbitMQ客户端负载平衡
我很担心我必须使用TCP负载平衡器来平衡节点之间的负载。它是否正确?
我想在具有“全部复制”策略的集群中拥有2个节点。
我希望发布者或消费者能够以类似循环的行为连接到所有节点。不幸的是,客户端API只允许为每个连接设置一台主机。
有什么(第三方也许?)连接池像解决方案,所以发布者发布和消费者从所有节点消耗?
我试用兔子mq,发现它相当不错。看看HA页面,我发现交换/队列复制效果很好。RabbitMQ客户端负载平衡
我很担心我必须使用TCP负载平衡器来平衡节点之间的负载。它是否正确?
我想在具有“全部复制”策略的集群中拥有2个节点。
我希望发布者或消费者能够以类似循环的行为连接到所有节点。不幸的是,客户端API只允许为每个连接设置一台主机。
有什么(第三方也许?)连接池像解决方案,所以发布者发布和消费者从所有节点消耗?
我还没有看到任何为AMQP/RabbitMQ做连接池的客户端。 AMQP通过频道在一个进程中处理多个发布者/消费者,并且一些客户端使其易于使用,但似乎无法处理使用连接池的节点的自动故障转移。
在群集中,不需要连接群集中的所有节点,消耗和发布操作将在群集内正确路由。对于尝试管理具有多个订阅的单个或多个进程(每个连接至少占用一个进程)的尝试从来没有成为我的最高优先级。随着多个进程消耗,每个进程随机连接到RabbitMQ,如果其中一个RabbitMQ节点发生故障,您将能够保持可用性。
出版商长期连接可以轻易地重新连接,如果故障检测,使得小于中断第二,在什么我工作过上不会有问题足够小。
从几年的使用情况来看,重新连接到新主机是在故障转移期间更简单的问题,难题是管理应用程序中关于现有AMQP连接的状态。在实践中,我只保留了可用主机的列表,并为每个新连接选择下一个。任何时候连接关闭只是选择一个新的主机,然后再试一次。它的意思是很短的时间你不能发布,如果你不得不在PHP中建立新的连接,那么可能会更困难。
由于flow control TCP负载平衡器可能比他们的价值更麻烦。 TCP背压可能无法通过LB使发布商发布速度比RabbitMQ更快。在不科学的测试中,当RabbitMQ处于负载平衡器后面时,我遇到了更多与RabbitMQ稳定性有关的问题,然后客户端直接连接。
你没有提到你使用的是什么样的客户,但对于Python中有出色的海带库。 Kombu支持connection and producer pools。
你也可以用圆形罗宾,洗牌,或自定义的故障切换策略when settting up a connection指定几个AMQP服务器。
对于python nameko建议的实现HA的方法(Rabbitmq)被提及here。菇管理,以实现这一目标作为后盾 库(海带)支持round-robin failover
AMQP_URI: pyamqp://guest:[email protected]:5672/;pyamqp://guest:[email protected]:5672/
你有没有想出一个解决方案吗? –
相关 - http://stackoverflow.com/a/32478091/830964。 –