ActiveMQ的集群与高可用
ActiveMQ的集群與高可用
針對大量的消息吞吐量、對MQ可用性要求非常嚴(yán)格的場景、或者非常復(fù)雜的消息處理關(guān)系情況下,單個(gè)MQ實(shí)例通常已經(jīng)無法滿足我們的需要,這時(shí)候ActiveMQ的集群和高可用方案就對我們很重要了。
1.client的集群
對消費(fèi)者來說,使用queue即可做到某種意義上的消費(fèi)者集群,所有消費(fèi)者共同處理同一類消息。
非持久訂閱的topic,這種功能沒有實(shí)現(xiàn)。但是持久訂閱的topic,可以通過Composite Destination機(jī)制轉(zhuǎn)換成針對具體的持久消費(fèi)者的專用queue,從而實(shí)現(xiàn)多個(gè)client共同處理同一類消息。參見:http://blog.csdn.net/kimmking/article/details/9773085?
需要注意的是,如果緩存了consumer(例如spring DMLC+cache consumer)情況下使用了prefetch,多個(gè)consumer間可能導(dǎo)致消息順序混亂。見:http://activemq.apache.org/what-is-the-prefetch-limit-for.html
2.client的高可用
在客戶端來說,最簡單的高可用方案就是內(nèi)置的failover機(jī)制。它幫助我們在客戶端實(shí)現(xiàn):
- 在某個(gè)broker故障時(shí),自動(dòng)使用其他備用broker
- 強(qiáng)大的斷線重連機(jī)制,哪怕是只有一個(gè)broker時(shí),也可以用來在broker down掉重啟后,客戶端重新連接上
斷線重連的配置和參數(shù)說明參見:http://activemq.apache.org/failover-transport-reference.html
3.broker的集群
broker端,典型的集群方式就是Network Connector,通過橋接的方式把多個(gè)broker,一個(gè)個(gè)的串起來,整個(gè)broker網(wǎng)絡(luò)就可以作為一個(gè)整體,協(xié)同工作。
每個(gè)connect上去的broker,都會(huì)自動(dòng)在被連接的broker上創(chuàng)建一個(gè)client connecttion,并通過Advisory機(jī)制共享自己的消費(fèi)者列表,從而使得消息可以跨過broker在這個(gè)網(wǎng)絡(luò)上自由流動(dòng)。也可以設(shè)置duplex為true使得這個(gè)連通變?yōu)殡p向的對等網(wǎng)絡(luò)。在BrokerA上配置一個(gè)指向BrokerB上的network connector,則連接到BrokerA上的各個(gè)ConsumerA1、ConsumerA2、ConsumerA3,都可以消費(fèi)BrokerB上的QueueB里的消息。默認(rèn)這三個(gè)消費(fèi)者都被當(dāng)做一個(gè)消費(fèi)者來看待,即如果BrokerB上有一個(gè)ConsumerB1消費(fèi)。
詳細(xì)參見:http://blog.csdn.net/kimmking/article/details/8440150?
其實(shí)個(gè)人感覺更好的集群方式是增加類似kafka和metaq的partition,然后使用zk作為配置中心來協(xié)調(diào)各個(gè)不同的broker實(shí)例、以及不同的partition來協(xié)同工作,使得broker的讀寫都可以分散進(jìn)行。
4.broker的高可用
Broker端的高可用主要是Master-Slave實(shí)現(xiàn)的冷備,需要結(jié)合客戶端的failover來用。
5.8.0以前的版本,支持三種Master-Slave:
5.9.0版本以后,Pure Master-Slave機(jī)制被廢棄,新添加了基于zk的復(fù)制LevelDB存儲Master-Slave機(jī)制。
此外還有一種可選方式就是,使用某種存儲復(fù)制技術(shù),比如Raid、或是DB的replication等等機(jī)制來同步存儲,在故障的時(shí)候,使用這個(gè)復(fù)制的存儲恢復(fù)broker。
詳細(xì)參見:http://activemq.apache.org/masterslave.html?
總結(jié)
以上是生活随笔為你收集整理的ActiveMQ的集群与高可用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: redis安装,主从集群
- 下一篇: memcached安装运行