我正在尝试在网络中设置三个代理以进行负载平衡——客户端和生产者可以连接到这些代理中的任何一个。
问题:
A->B->C->A 或 ABCA
最佳答案
1.) 我实际上不能推荐拓扑。此选择取决于您可以接受的跃点数(在消息进入集群的代理和消费者连接到的代理之间)。在流量增加的情况下,每一跳都会增加网络负载。
在我的公司,我们使用超立方体网络(每个经纪人都认识其他经纪人)并且效果很好。
一般来说,您应该确保您的节点配置尽可能相似。使用双工确保您需要配置的连接更少(因为从 B 到 A 的连接已经是从 A 到 B 的双工连接的一部分),但它会在您的配置文件中引入大量差异。
我个人为 ActiveMQ 创建了自己的启动脚本,它根据集群的 dns 名称(mycluster-01 到 06)自动生成连接配置。
2.) 是的。如果您想确保客户端使用列表中的第一个条目,您可能需要添加 ?randomize=false。
3.) 如果在消息传输期间出现故障或在重负载期间出现竞争条件,则可能会发生重复条目。一般来说,一个消息只属于一个经纪人。
4.) 不要在主机和从机之间设置网络连接器(真的不要)。使用activeMQ的纯Master Slave特性,为每个slave配置master(你不必在master上配置任何东西)。对于所有主节点,配置到其他主节点的网络连接,并故障转移到它们的从节点)
http://activemq.apache.org/pure-master-slave.html
关于ActiveMQ - 多个代理配置的网络,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6801141/