回顧總結(jié)前一段時(shí)間學(xué)習(xí)的ActiveMQ分布式集群相關(guān)的知識(shí),分享出來(lái)希望對(duì)看到的人有所幫助。
一、分布式ActiveMQ集群的部署配置細(xì)節(jié):
官方資料:http://activemq.apache.org/clustering.html
基本上看這個(gè)就足夠了,本文就不具體分析配置文件了。
1、Queue consumer clusters:
同一個(gè)queue,如果一個(gè)consumer失效,那么未被確認(rèn)的消息都會(huì)被發(fā)送到這個(gè)queue的其它c(diǎn)onsumer上。
如果某個(gè)consumer處理消息比較快,那么它將處理更多的消息。
(Queue consumer clusters 不需要特殊的配置。)
2、Master-Slave高可用性:
主要目的是實(shí)現(xiàn)AMQ的高可用性和容錯(cuò),如果某broker掛了,需要等待它重啟才能繼續(xù)處理消息。而如果消息被復(fù)制到slave上,在當(dāng)master掛了時(shí),可以直接切換到slave導(dǎo)致消息不會(huì)丟失。分為3種形式:
(1)pure master-slave。
該方式已經(jīng)逐漸被淘汰:http://activemq.apache.org/pure-master-slave.html
(2)Shared File System Master Slave。
官方資料:http://activemq.apache.org/masterslave.html
利用共享文件系統(tǒng):當(dāng)多臺(tái)機(jī)器上都部署了AMQ時(shí),指定這些機(jī)器的一個(gè)共享的文件路徑作為存儲(chǔ)。
存儲(chǔ)默認(rèn)是基于AMQ的kahaDB(底層是文件系統(tǒng))實(shí)現(xiàn)。
當(dāng)一個(gè)AMQ實(shí)例獲得了共享文件的鎖,這個(gè)實(shí)例就成為了Master,其它實(shí)例即為Slave。如果這時(shí)Master掛了,其它AMQ實(shí)例會(huì)競(jìng)爭(zhēng)共享文件的鎖,獲得鎖的就成為Master,其它實(shí)例還是Slave。部署時(shí)Slave沒(méi)有限制數(shù),而且自動(dòng)切換Master不需要人工干預(yù)。(官方資料有詳細(xì)的過(guò)程圖片介紹)
(3)JDBC Master Slave。
官方資料:http://activemq.apache.org/masterslave.html
其實(shí)與Shared File System一樣,只是把共享文件系統(tǒng)換成數(shù)據(jù)庫(kù)作為存儲(chǔ)。方便實(shí)用,但要保證數(shù)據(jù)庫(kù)的高可用性。
3、Broker Cluster中的靜態(tài)與動(dòng)態(tài)發(fā)現(xiàn):
如何讓一個(gè)broker知道網(wǎng)絡(luò)上的其它多個(gè)broker呢?主要分為靜態(tài)發(fā)現(xiàn)和動(dòng)態(tài)發(fā)現(xiàn)兩種類(lèi)型:
(1)The Static Transport(靜態(tài)發(fā)現(xiàn),包括failover協(xié)議)。
官網(wǎng)資料:http://activemq.apache.org/static-transport-reference.html
所謂靜態(tài)發(fā)現(xiàn):就是將所有已知的broker uri連接時(shí)手工進(jìn)行配置,對(duì)client端uri地址做相應(yīng)修改。
關(guān)于failover:
當(dāng)一個(gè)client連接到某個(gè)broker,而這個(gè)broker掛了,客戶端就需要自動(dòng)連接到網(wǎng)絡(luò)上其它已知的broker上。
AMQ使用failover協(xié)議實(shí)現(xiàn)該功能,但需要在client連接時(shí)將所有broker以硬編碼的形式進(jìn)行配置。
AMQ的failover協(xié)議官方資料:http://activemq.apache.org/failover-transport-reference.html
(2)The Discovery Transport(動(dòng)態(tài)發(fā)現(xiàn))。
官網(wǎng)資料:http://activemq.apache.org/static-transport-reference.html
所謂動(dòng)態(tài)發(fā)現(xiàn),就是部署前不需要知道所有AMQ實(shí)例的uri地址,只要進(jìn)行相關(guān)配置,啟動(dòng)后讓AMQ自己檢測(cè)。
需要修改AMQ配置文件,同時(shí)client端連接uri地址也要相應(yīng)修改。
4、Network of Broker:
主要目的是實(shí)現(xiàn)負(fù)載均衡,提高消息處理能力。
一個(gè)client1連接broker1發(fā)送消息,另一個(gè)client2連接broker2消費(fèi)消息,這時(shí)就需要將broker1上的消息路由到broker2上。而當(dāng)broker2上的consumer掛了,也需要將消息轉(zhuǎn)發(fā)到其它的有consumer的broker上,避免消息大量堆積無(wú)法處理,目前的解決方案是Network of Broker。
官方資料:http://activemq.apache.org/networks-of-brokers.html
本文主要對(duì)ActiveMQ分布式集群相關(guān)知識(shí)進(jìn)行整理總結(jié),具體配置過(guò)程見(jiàn)上文中的官方資料,很詳細(xì)的。
網(wǎng)上一些不錯(cuò)的參考資料:
http://www.doc88.com/p-086413647667.html
http://wenku.baidu.com/view/d0cd7757ad02de80d4d8408a.html
http://bh-keven.iteye.com/blog/1617788
聯(lián)系客服