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的方式。
相關文章
相關標籤/搜索