Activemq構(gòu)建高并發(fā)氧急、高可用的大規(guī)模消息系統(tǒng)

摘要:?Activemq構(gòu)建高并發(fā)、高可用的大規(guī)模消息系統(tǒng) 在網(wǎng)上看了很多關(guān)于Activemq的帖子八回,但是大部分的內(nèi)容都只能算是對activemq官網(wǎng)內(nèi)容的翻譯酷愧。很少有相關(guān)的案例分析,本文將分享"如何用Activemq構(gòu)建超大(10萬筆消息/秒以上)規(guī)模消息系統(tǒng)" 在實(shí)時消息系統(tǒng)中缠诅,MQ消息中間件廣泛應(yīng)用于各類消息系統(tǒng)中伟墙,在異步消息處理架構(gòu)中,MQ幾乎是必備的中間件滴铅。

Activemq構(gòu)建高并發(fā)戳葵、高可用的大規(guī)模消息系統(tǒng)

在網(wǎng)上看了很多關(guān)于Activemq的帖子,但是大部分的內(nèi)容都只能算是對activemq官網(wǎng)內(nèi)容的翻譯汉匙。很少有相關(guān)的案例分析拱烁,本文將分享"如何用Activemq構(gòu)建超大(10萬筆消息/秒以上)規(guī)模消息系統(tǒng)"

在實(shí)時消息系統(tǒng)中生蚁,MQ消息中間件廣泛應(yīng)用于各類消息系統(tǒng)中,在異步消息處理架構(gòu)中,MQ幾乎是必備的中間件乖篷。 同時辖所,MQ的處理性能也將直接影響整個系統(tǒng)的性能。如果MQ出現(xiàn)故障志衣,那么整個系統(tǒng)將癱瘓,其后果將是災(zāi)難性的猛们。 所以在一般情況下MQ會中HA念脯,或是failover,但是如果要求消息處理能力在10萬/秒以上時弯淘,簡單的HA或failover將不能滿足要求绿店。

?一、Activemq broker部署方式

1) 單MQ broker 時


整個系統(tǒng)中只有一個Activemq Broker庐橙,在生產(chǎn)系統(tǒng)中幾乎不使用假勿。因為單個MQ存在單點(diǎn)故障。

2) Master - slave 模式


采用Master-slave模式态鳖,同時在鏈接串中增加failover功能转培, 能夠?qū)崿F(xiàn)HA, 避免單點(diǎn)故障。但是浆竭,Master-slave方式一般需要"共享文件系統(tǒng)"堡距,同時必須保證出現(xiàn)問題時,文件鎖能正常切換兆蕉。另外羽戒,slave處于stand by狀態(tài),不對外提供服務(wù)虎韵。 在Master高負(fù)荷的情況下易稠,Slave不能提供能幫助。如果Master在高負(fù)荷情況下掛掉包蓝,那么Slave在同樣的情況下也可能掛掉驶社,只是時間問題。( Replicate Leveldb 方案也存在上述問題)测萎。 另外亡电,activemq 還有network模式,但此模式的應(yīng)用場景不是很明確硅瞧。

? ? 二份乒、多個Activemq broker 同時工作

通過上面的分析, 簡單的采用Activemq官網(wǎng)上提供的方案基本上不能滿足生產(chǎn)系統(tǒng)的性能和高可用要求。因此或辖,必須對上述方案進(jìn)行改進(jìn)瘾英,實(shí)現(xiàn) “高性能”,“高可用”颂暇,“可擴(kuò)展”的MQ集群方案缺谴。

同時部署多個Activemq broker實(shí)例, 多個Activemq broker實(shí)例同時工作。單個broker實(shí)例耳鸯,生產(chǎn)和消費(fèi)消息的速度在1萬條/秒湿蛔,部署N個Broker, 整個消息通道就能拓寬N倍; 多個(4個以上)broker 實(shí)例同時工作县爬,其中1到2個mq實(shí)例出現(xiàn)問題時阳啥,消息可經(jīng)過其他broker處理,整個系統(tǒng)依然可以健康工作捌省,從而實(shí)現(xiàn)高可用苫纤。


a碉钠、消息發(fā)送方的應(yīng)用程序的采用輪循方式給多個broker發(fā)送消息

b纲缓、消息消費(fèi)方的應(yīng)用程序針對每個broker啟用對應(yīng)的consumer來消費(fèi)消息。

按照這樣的部署方案喊废,兩個或兩個以上MQ可以同時工作祝高,可以解決MQ單點(diǎn)問題。MQ做為消息的傳輸管道污筷, 增加MQ數(shù)量就可以拓寬管道的寬度工闺,提高消息傳輸性能。


我們將“多個同時工作的broker"成為 broker組瓣蛀,如果 broker組內(nèi)的broker數(shù)量太多的話陆蟆,那么再開發(fā)或部署時,broker內(nèi)的隊列配置將會是一件非常繁瑣的事惋增。因此叠殷,我們將broker內(nèi)的隊列queue進(jìn)行分組,具有相同前綴名的隊列為一組诈皿,前綴名相同的隊列中的消息的業(yè)務(wù)邏輯是相同的林束。通過隊列前綴名將消息組件與業(yè)務(wù)關(guān)聯(lián)上。 根據(jù)業(yè)務(wù)不同稽亏,配置不同的sender ?和 listener 時壶冒,只要配置不同的隊列前綴名。從而簡化配置與使用截歉,同時也可以防止消息發(fā)錯隊列的錯誤胖腾。


如上圖,有 ChargeQueue 和 QueryQueue連個隊列組,對應(yīng)不同的業(yè)務(wù)功能胸嘁。

在消息消費(fèi)的應(yīng)用程序中瓶摆,針對ChargeQueue 和 QueryQueue 配置Consumer Listener Container, 同時可以正對不同的隊列配置不同數(shù)量的消費(fèi)則數(shù)目性宏。

單個ActiveMQ的接收和消費(fèi)消息的速度在1萬筆/秒(持久化 一般為1-2萬群井, 非持久化 2 萬以上),在生產(chǎn)環(huán)境中部署10個Activemq就能達(dá)到10萬筆/秒以上的性能毫胜,部署越多的activemq broker 在MQ上latency也就越低书斜,系統(tǒng)吞吐量也就越高。

三酵使、Activemq 性能優(yōu)化荐吉。

1、 producer消息發(fā)送端口渔,需要采用 AsyncSend模式样屠, 在 activemq 的連接串中增加jsm.useAsyncSend, 例如 tcp://127.0.0.1:61616?jms.useAsyncSend=true

2、consumer消息消費(fèi)端缺脉,如果有多個不同的應(yīng)用程序去消費(fèi)同一個隊列中的消息痪欲,那么 activemq的 prefetchSize應(yīng)該設(shè)置為1。

以上兩個參數(shù)對性能的影響非常大攻礼。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末业踢,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子礁扮,更是在濱河造成了極大的恐慌知举,老刑警劉巖,帶你破解...
    沈念sama閱讀 210,914評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件太伊,死亡現(xiàn)場離奇詭異雇锡,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)僚焦,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,935評論 2 383
  • 文/潘曉璐 我一進(jìn)店門锰提,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人叠赐,你說我怎么就攤上這事欲账。” “怎么了芭概?”我有些...
    開封第一講書人閱讀 156,531評論 0 345
  • 文/不壞的土叔 我叫張陵赛不,是天一觀的道長。 經(jīng)常有香客問我罢洲,道長踢故,這世上最難降的妖魔是什么文黎? 我笑而不...
    開封第一講書人閱讀 56,309評論 1 282
  • 正文 為了忘掉前任,我火速辦了婚禮殿较,結(jié)果婚禮上耸峭,老公的妹妹穿的比我還像新娘。我一直安慰自己淋纲,他們只是感情好劳闹,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,381評論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著洽瞬,像睡著了一般本涕。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上伙窃,一...
    開封第一講書人閱讀 49,730評論 1 289
  • 那天菩颖,我揣著相機(jī)與錄音,去河邊找鬼为障。 笑死晦闰,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的鳍怨。 我是一名探鬼主播呻右,決...
    沈念sama閱讀 38,882評論 3 404
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼京景!你這毒婦竟也來了窿冯?” 一聲冷哼從身側(cè)響起骗奖,我...
    開封第一講書人閱讀 37,643評論 0 266
  • 序言:老撾萬榮一對情侶失蹤确徙,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后执桌,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體鄙皇,經(jīng)...
    沈念sama閱讀 44,095評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,448評論 2 325
  • 正文 我和宋清朗相戀三年仰挣,在試婚紗的時候發(fā)現(xiàn)自己被綠了伴逸。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,566評論 1 339
  • 序言:一個原本活蹦亂跳的男人離奇死亡膘壶,死狀恐怖错蝴,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情颓芭,我是刑警寧澤顷锰,帶...
    沈念sama閱讀 34,253評論 4 328
  • 正文 年R本政府宣布,位于F島的核電站亡问,受9級特大地震影響官紫,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,829評論 3 312
  • 文/蒙蒙 一束世、第九天 我趴在偏房一處隱蔽的房頂上張望酝陈。 院中可真熱鬧,春花似錦毁涉、人聲如沸沉帮。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,715評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽遇西。三九已至,卻和暖如春严嗜,著一層夾襖步出監(jiān)牢的瞬間粱檀,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,945評論 1 264
  • 我被黑心中介騙來泰國打工漫玄, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留茄蚯,地道東北人。 一個月前我還...
    沈念sama閱讀 46,248評論 2 360
  • 正文 我出身青樓睦优,卻偏偏與公主長得像渗常,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子汗盘,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,440評論 2 348

推薦閱讀更多精彩內(nèi)容