原文地址:http://shensy.iteye.com/blog/1752529html
回顧總結前一段時間學習的ActiveMQ分佈式集羣相關的知識,分享出來但願對看到的人有所幫助。數據庫
1、分佈式ActiveMQ集羣的部署配置細節:apache
官方資料:http://activemq.apache.org/clustering.html網絡
基本上看這個就足夠了,本文就不具體分析配置文件了。負載均衡
一、Queue consumer clusters:分佈式
同一個queue,若是一個consumer失效,那麼未被確認的消息都會被髮送到這個queue的其它consumer上。學習
若是某個consumer處理消息比較快,那麼它將處理更多的消息。編碼
(Queue consumer clusters 不須要特殊的配置。)htm
二、Master-Slave高可用性:blog
主要目的是實現AMQ的高可用性和容錯,若是某broker掛了,須要等待它重啓才能繼續處理消息。而若是消息被複制到slave上,在當master掛了時,能夠直接切換到slave致使消息不會丟失。分爲3種形式:
(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