[狗尾续貂第四篇]ActiveMQ集群

前言

这一篇是看过lifetragedy的两篇系列的Apache ActiveMQ实战(2)-集群之后,所写。
主要是写过程中,遇到的问题,和简要的总结。

关于ActiveMQ集群

当我们的系统庞大之后,需要很多不同的服务协同工作之后,系统和系统之间的关联如果仅仅是直接调用,或者是采用dubbo类似的系统协调,也不足够。比如说,一个下单动作需要关系到用户积分,账单/支付记录,可能还需要同步给第三方系统(比如阿里百川),发送通知,可能还需要失败重发机制。如果完全嵌入到一个服务端的一个方法里几乎是不可能的。那么,系统和系统之间就需要交互,消息队列是一种不错的减少关联请求的处理时间和解耦系统的良药。另外在日志服务器和消息服务器,一般也会采用消息队列。
关于ActiveMQ这两个博客,写的比较全面,从单机到集群(HA+均衡)
袁明凯的系列:http://blog.csdn.net/lifetragedy/article/details/51869032
菩提树下的杨过的系列:http://www.cnblogs.com/yjmyzz/category/195427.html

关于duplex的问题

文中说到了duplex的作用,在最后引出完美方案之前给出了一个集群架构方案,也就是“MASTER SLAVE+BROKER CLUSTER”同时设置duplex为true的方案。
博主给出的解释是,duplex=true之后,才能让消息在不同的broker之间传递。
其实这种理解是错的,broker中的自配置networkConnectors的目的就是要做到在不同的broker之间传递消息,duplex=false时是建立一方向另一方的单向消息,duplex=true时,是建立双向的消息。
比如broker1的tcp连接地址是192.168.0.1:61616,broker2的tcp连接地址是192.168.0.1:61617,如果使用duplex=false建立双向链接,需要在broker1和broker2的两个配置文件中都添加指向对方的networkConnector。如果使用duplex=true,那么只需要在任意一个broker的配置文件中添加即可。

关于使用zookeeper做Master-Slave的问题

在按照原博主的文章进行部署的过程中,遇到了一个问题,就是启动master和slave之后,出现几次“Not enough cluster members connected to elect a new master”的INFO提示,而且jetty服务器连不上,activemq也连接不上。

看配置文件,没有发现任何异常,最终在google上找到了问题的原因,是因为我在部署的时候,slave和master使用了不同的broker名称。这种方式要求master和slave必须有相同的broker名。

具体的见http://activemq.2283324.n4.nabble.com/ReplicatedLevelDb-Not-enough-cluster-members-connected-to-elect-a-new-master-td4669281.html

你可能感兴趣的:(狗尾续貂)