分布式ActiveMQ集群

回顾总结前一段时间学习的ActiveMQ分布式集群相关的知识,分享出来但愿对看到的人有所帮助。html

1、分布式ActiveMQ集群的部署配置细节:数据库

官方资料:http://activemq.apache.org/clustering.htmlapache

基本上看这个就足够了,本文就不具体分析配置文件了。网络

一、Queue consumer clusters:负载均衡

同一个queue,若是一个consumer失效,那么未被确认的消息都会被发送到这个queue的其它consumer上。分布式

若是某个consumer处理消息比较快,那么它将处理更多的消息。学习

(Queue consumer clusters 不须要特殊的配置。)编码

二、Master-Slave高可用性:htm

主要目的是实现AMQ的高可用性和容错,若是某broker挂了,须要等待它重启才能继续处理消息。而若是消息被复制到slave上,在当master挂了时,能够直接切换到slave致使消息不会丢失。分为3种形式:blog

(1)pure master-slave。

该方式已经逐渐被淘汰:http://activemq.apache.org/pure-master-slave.html

(2)Shared File System Master Slave。

官方资料:http://activemq.apache.org/masterslave.html

利用共享文件系统:当多台机器上都部署了AMQ时,指定这些机器的一个共享的文件路径做为存储。

存储默认是基于AMQ的kahaDB(底层是文件系统)实现。

当一个AMQ实例得到了共享文件的锁,这个实例就成为了Master,其它实例即为Slave。若是这时Master挂了,其它AMQ实例会竞争共享文件的锁,得到锁的就成为Master,其它实例仍是Slave。部署时Slave没有限制数,并且自动切换Master不须要人工干预。(官方资料有详细的过程图片介绍)

(3)JDBC Master Slave。

官方资料:http://activemq.apache.org/masterslave.html

其实与Shared File System同样,只是把共享文件系统换成数据库做为存储。方便实用,但要保证数据库的高可用性。

三、Broker Cluster中的静态与动态发现:

如何让一个broker知道网络上的其它多个broker呢?主要分为静态发现和动态发现两种类型:

(1)The Static Transport(静态发现,包括failover协议)。

官网资料:http://activemq.apache.org/static-transport-reference.html

所谓静态发现:就是将全部已知的broker uri链接时手工进行配置,对client端uri地址作相应修改。

关于failover:

当一个client链接到某个broker,而这个broker挂了,客户端就须要自动链接到网络上其它已知的broker上。

AMQ使用failover协议实现该功能,但须要在client链接时将全部broker以硬编码的形式进行配置。

AMQ的failover协议官方资料:http://activemq.apache.org/failover-transport-reference.html

(2)The Discovery Transport(动态发现)。

官网资料:http://activemq.apache.org/static-transport-reference.html

所谓动态发现,就是部署前不须要知道全部AMQ实例的uri地址,只要进行相关配置,启动后让AMQ本身检测。

须要修改AMQ配置文件,同时client端链接uri地址也要相应修改。

四、Network of Broker:

主要目的是实现负载均衡,提升消息处理能力。

一个client1链接broker1发送消息,另外一个client2链接broker2消费消息,这时就须要将broker1上的消息路由到broker2上。而当broker2上的consumer挂了,也须要将消息转发到其它的有consumer的broker上,避免消息大量堆积没法处理,目前的解决方案是Network of Broker。

官方资料:http://activemq.apache.org/networks-of-brokers.html

 

本文主要对ActiveMQ分布式集群相关知识进行整理总结,具体配置过程见上文中的官方资料,很详细的。

 

网上一些不错的参考资料:

 

http://www.doc88.com/p-086413647667.html

http://wenku.baidu.com/view/d0cd7757ad02de80d4d8408a.html

http://bh-keven.iteye.com/blog/1617788

相关文章
相关标签/搜索