activeMQ主要的幾類集羣部署方式

官方主從實現的文檔: http://activemq.apache.org/masterslave.html
 
1、activeMQ主要的幾類部署方式比較
一、默認的單機部署(kahadb)
activeMQ的默認存儲的單機方式,以本地kahadb文件的方式存儲,因此性能指標徹底依賴本地磁盤IO,不能提供高可用。
 
二、基於zookeeper的主從(levelDB Master/Slave
5.9.0新推出的主從實現,基於zookeeper來選舉出一個master,其餘節點自動做爲slave實時同步消息。
由於有實時同步數據的slave的存在,master不用擔憂數據丟失,因此leveldb會優先採用內存存儲消息,異步同步到磁盤。因此該方式的activeMQ讀寫性能都最好,特別是寫性能可以媲美非持久化消息。
優勢:
實現高可用和數據安全
性能較好
缺點:
由於選舉機制要超過半數,因此最少須要3臺節點,才能實現高可用。
 
三、基於共享數據庫的主從(Shared JDBC Master/Slave)
能夠基於postgres、mysql、oracle等經常使用數據庫。
每一個節點啓動都會爭搶數據庫鎖,從而保證master的惟一性,其餘節點做爲備份,一直等待數據庫鎖的釋放。
由於全部消息讀寫,其實都是數據庫操做,activeMQ節點自己壓力很小,性能徹底取決於數據庫性能。
優勢:
實現高可用和數據安全
簡單靈活,2臺節點就能夠實現高可用
缺點:
穩定性依賴數據庫
性能依賴數據庫
 
2、性能測試:
用同一臺測試機做爲master。測試代碼爲java,使用activemq-client-5.11.1提供的client,每一個線程用一個鏈接反覆寫/讀,全部線程完畢後,彙總測試結果。
每秒寫/讀吞吐量測試結果以下(測試機性能較差,測試結果僅僅用來作3種部署方式的橫向比較):
150/500表示每秒寫入150條,讀取500條消息。
 
單線程
10線程
20線程
40線程
單機(kahadb)
150/500
350/2000
500/2000
480/2000
基於zk的主從(leveldb)
180/3000
600/5500
1400/6000
3200/4500
基於共享數據庫的主從
160/300
250/1050
250/1150
250/1200
 
3、災備方案(兩種方式都已經測試經過)
一、leveldb方式
須要3臺節點,2臺在主機房,1臺在備機房,主機房的節點權重設的比備機房節點高。
當master節點故障:
由於權重的關係,主機房另外一個節點會自動被選舉爲新的master。
當主機房故障:
須要啓動備用機房時,先更改備機房節點配置,把集羣規模從3改爲1,這樣1個節點能夠臨時提供服務(此時再也不保證高可用)。
 
二、共享數據庫方式
3臺節點便可,2臺在主機房,1臺在備機房,備機房節點指向災備activeMQ數據庫,平時要關閉。
當master節點故障:
主機房的另外一個節點會自動取得數據庫鎖,成爲新的master。
當主機房故障:
須要啓動備用機房時,先完成activeMQ數據庫的切換,而後啓動災備activeMQ節點便可臨時外提供服務(此時再也不保證高可用)。
相關文章
相關標籤/搜索