我正在尝试在网络中设置三个代理以实现负载平衡 - 客户端和生产者可以连接到任何这些代理。
问题:
用于联网这些代理的推荐拓扑是什么?更具体地说,在每个这些代理上使用的networkConnector配置是什么?是否应启用双工设置? (我猜双工设置取决于我们选择的拓扑结构)
A-> B-> C-> A或A - B - C -
客户端应该使用故障转移协议连接到这些代理,对吧?例如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。
答案 0 :(得分:3)
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