我正在尝试在网络中设置三个代理以实现负载 balancer - 客户端和 生产环境 者可以连接到这些代理中的任何一个 .
问题:
- 用于联网这些代理的推荐拓扑是什么?更具体地说,在每个这些代理上使用的networkConnector配置是什么?是否应启用双工设置? (我猜双工设置取决于我们选择的拓扑)
A-> B-> C-> A或A - B - C - A.
-
客户端应该使用故障转移协议连接到这些代理,对吧?例如failover://(tcp:// b1:6161,tcp:// b2:6161,tcp:// b3:6161)
-
重启时客户端需要重复的消息处理吗?请参阅http://forum.springsource.org/showthread.php?108461-Failover-issue-in-ActiveMQ - 不清楚为何存在重复的邮件问题
-
理想情况下,我们要设置拓扑,如本文所示http://edelsonmedia.com/?p=143 - 不清楚如何在主站和从站上设置networkConnector .
1 回答
1.)我实际上不能推荐拓扑 . 此选择取决于您可以接受的跳数(在消息进入集群的代理和消费者所在的代理之间) . 在升沉的流量场景中,每一跳都会增加网络负载 . 在我的公司,我们使用超立方体网络(每个经纪人都知道其他所有经纪人)并且效果很好 .
通常,您应该确保您的节点配置尽可能相似 . 使用双工可确保配置的连接较少(因为从B到A的连接已经是从A到B的双工连接的一部分),但它会在配置文件中引入大量差异 .
Personaly我为ActiveMQ创建了自己的启动脚本,它根据我的集群的dns名称(mycluster-01到06)自动生成连接配置 .
2.)是的 . 如果要确保客户端使用列表中的第一个条目,您可能需要添加?randomize = false .
3.)如果在消息传输期间出现故障或在重负载期间出现竞争条件,则可能发生重复条目 . 通常,一条消息仅由一个代理拥有 .
4.)不要在主设备和从设备之间设置网络连接器(真的不要) . 使用activeMQ的纯主从功能并为每个从站配置主站(您不必在主站上配置任何内容) . 对于所有Masters将NetworkConnections配置为其他Masters并故障转移到其从属设备上)http://activemq.apache.org/pure-master-slave.html