ActiveMQ(八)——ActiveMQ的集群

1、队列消费者集群(Queue consumer clusters)
     ActiveMQ支持Consumer对消息高可靠性的负载平衡消费,若是一个Consumer死掉,该消息会转发到其余的Consumer消费的Queue上。若是一个Consumer得到消息比其它的Consumer快,那么它将得到更多的消息。所以推荐ActiveMQ的Broker和Client使用failover://transport的方式来配置连接。
2、Broker的集群(Broker clusters)
     大部分状况下是使用一些列的Broker和Client连接到一块儿。若是一个Broker死掉了,Client能够自动连接到其它的Broker上。实现以上行为须要用failover协议做为Client。
     若是启动了多个Broker,Client可使用static discovery或者Dynamic discovery容易的从一个broker到另外一个broker直接连接。
     这样当一个broker上没有Consumer的话,那么它的消息不会被消费,然而该broker会经过存储和转发的策略来把该消息发到其它的broker上。
注意:
ActiveMQ默认的两个broker,static连接后是单方向的,broker-A能够访问消费broker-B的消息,若是要支持双向通讯,须要在netWorkConnector配置的时候,设置duplex=true就能够了。
3、Master Slave
     在5.9的版本里面,废除了Pure Master Slave的方式,目前支持:
1:Shared File System Master Slave:基于共享存储的Master-Slave,多个broker实例使用一个存储文件,谁拿到文件锁就是master,其余处于待启动状态,若是master挂掉了,某个抢到文件锁的slave变成master
2:JDBC Master Slave:基于JDBC的Master-Slave,使用同一个数据库,拿到LOCK表的写锁的broker成为master
3:Replicated LevelDB Stroe:基于ZooKeeper复制LevelDB存储的Master-Slave机制,这个是5.9新加的
详情:http://activemq.apache.org/masterslave.htmlhtml

  • JDBC Master Slave的方式
    利用数据库做为数据源,采用Master/Slave模式,其中在启动的时候Master首先得到独有锁,其它Slaves Broker则等待获取独有锁
         推荐客户端使用Failover来链接Brokers。
    如图所示:
    ActiveMQ(八)——ActiveMQ的集群
  • Master失败
         若是Master失败,则它释放独有锁,其余Slaver则获取独有锁,其余Slaver当即得到独有锁后此时它将变成Master,而且启动全部的传输链接。同时,Client将中止链接以前的Master和将会轮询链接到其余可用利用的Broker,即新Master。如上中图所示
  • Master重启
         任什么时候候去启动新的Broker,即做为新的Slaver来加入集群,如上右图所示
  • JDBC Master Slaver的配置     使用<jdbcPersistenceAdapter/>来配置消息的持久化,自动就会使用JDBC Master Slave的方式。
相关文章
相关标签/搜索