消息中間件NMQ

轉(zhuǎn)自:http://www.cnblogs.com/lushilin/p/6209976.html(魯仕林

1.What is nmq?

nmq = new message queue;

一個(gè)通用消息隊(duì)列系統(tǒng)

為在線服務(wù)設(shè)計(jì)

什么是消息隊(duì)列剪勿?問什么需要哩至?有哪些功能握联?

消息隊(duì)列的本質(zhì):1.多個(gè)不同的應(yīng)用之間實(shí)現(xiàn)相互通信的一種異步傳輸模式2.異步3.解耦

業(yè)界有哪些比較好的mq镶骗?

yahoo YMB 、twitter Kestrel巡验、amazon SQS朵诫、apache kafka

百度的nmq和bigpipe

那么為什么會(huì)有這么多的實(shí)現(xiàn)呢?

影響設(shè)計(jì)的關(guān)鍵需求:

1.數(shù)據(jù)安全性

2.傳輸實(shí)時(shí)性

3.時(shí)序需求

4.吞吐需求

5.消費(fèi)方形態(tài)

6.消息關(guān)聯(lián)形態(tài)

現(xiàn)在介紹一下百度的nmq(看一下nmq的設(shè)計(jì)考量):

1.項(xiàng)目起源于大社區(qū)

2.重復(fù)開發(fā)毅哗、分散運(yùn)維;極大的人力浪費(fèi)捧挺;

并發(fā)+時(shí)序的難點(diǎn)虑绵,讓rd頭疼

核心+單點(diǎn)的運(yùn)維,讓op蛋疼

3.架構(gòu)的發(fā)展闽烙,讓老的系統(tǒng)不在適合

4.業(yè)務(wù)的發(fā)展翅睛,對性能、可擴(kuò)展性有了更高的要求黑竞;

mq的本質(zhì)需求:

1.數(shù)據(jù)安全性————》其實(shí)還好

2.傳輸實(shí)時(shí)性————》要求很高

3.吞吐需求————》很大

4.時(shí)序需求————》真的需要

5.消費(fèi)方形態(tài)————》多樣

6.消息關(guān)聯(lián)形態(tài)————》1vN

nmq的其他需求:

1.集中運(yùn)維

2.解耦

3.運(yùn)維平臺化捕发、自動(dòng)化

4.完善的功能,強(qiáng)大的時(shí)序+并發(fā)控制

5.支持國際化數(shù)據(jù)互通

模型設(shè)計(jì)(第一個(gè)問題)

nmq是基于消息的隊(duì)列很魂,還是基于消費(fèi)者的隊(duì)列

考慮點(diǎn):

1.存儲容量

2.運(yùn)維便利度

3.擴(kuò)展性

4.開發(fā)成本

所以最終選擇應(yīng)該基于消息本身扎酷。

模型設(shè)計(jì)(第二個(gè)問題):

1.推或者拉

2.核心問題:誰維護(hù)信息?

為了更加深入的對“推”和“拉”這兩種模式進(jìn)行對比遏匆,可以將consumer分為2類:

1.競爭模式:一個(gè)consumer模塊部署很多機(jī)器法挨,但所有機(jī)器競爭消費(fèi)同一份消息。

2.多主模式:一個(gè)consumer模塊部署很多機(jī)器幅聘,每個(gè)機(jī)器都消費(fèi)全量消息凡纳。

推模型的分析:

1.推模型是消息集中管理方式,消息隊(duì)列知道consumer的一切帝蒿。

2.可以支持2種consumer模式荐糜,容易實(shí)現(xiàn)各種策略。

3.優(yōu)點(diǎn)是靈活陵叽,什么都可以做

4.缺點(diǎn)是耦合狞尔,消息隊(duì)列本身的運(yùn)維是問題

拉模式分析

1.對多主的consumer:完美

消息隊(duì)列只負(fù)責(zé)消息的存儲和查詢

運(yùn)維便利、架構(gòu)清晰巩掺、簡單

2.對競爭的consumer:難以支持

兩種模式的選擇

1.競爭模式會(huì)是我們今后的主流模式和大趨勢偏序;

數(shù)據(jù)邏輯層和存儲引擎層的分離

數(shù)據(jù)的拆分和冗余,都會(huì)在存儲引擎層實(shí)現(xiàn)

2.PHP模塊實(shí)現(xiàn)“拉”有一定的難度

3.實(shí)現(xiàn)策略的靈活性和重要胖替,推模式有天然的優(yōu)勢

4.拉模式研儒,會(huì)帶來更大的遷移代價(jià)

5.最終選擇“推”模式

消息標(biāo)識:

1.msg = product+topic+cmd

2.product產(chǎn)品線標(biāo)識

3.topic

按業(yè)務(wù)劃分的消息序列,邏輯上的概念独令,可小可大端朵。

nmq只保證相同的topic內(nèi)的命令時(shí)序

4.cmd消息類別的最終標(biāo)識,不同topic之間可以同名

模型:

1.proxy

消息唯一入口燃箭,以topic為單位消息分流

2.topic-server(ts)

消息存儲冲呢。級聯(lián)和備份

3.pusher

消息發(fā)送,協(xié)議可擴(kuò)展

nmq集群圖片:

nmq的擴(kuò)展性設(shè)計(jì):

1.垂直擴(kuò)展

當(dāng)接收同一個(gè)topic的consumer增多招狸,導(dǎo)致pusher出現(xiàn)性能瓶頸敬拓。

可以通過ts級聯(lián)擴(kuò)展多個(gè)pusher解決邻薯,支持多級級聯(lián)

2.水平擴(kuò)展

當(dāng)一個(gè)topic的命令增多,導(dǎo)致超過單機(jī)ts性能極限

可以通過將該topic拆分到多個(gè)ts解決乘凸;比如按照某個(gè)partition key進(jìn)行拆分厕诡;拆分后,只有相同pk的消息才能保證時(shí)序营勤。

運(yùn)維設(shè)計(jì)

1.隊(duì)列的存儲粒度

一個(gè)ts內(nèi)部的所有topic串行存儲于一個(gè)隊(duì)列中灵嫌,共享一維transid;

犧牲性能換取簡單葛作,易運(yùn)維

2.主從同步和切換

ts級聯(lián)和備份合一寿羞;slave主動(dòng)從master拉數(shù)據(jù),配合資源定位进鸠,簡化主從切換步驟稠曼。

異步pipeline模式,強(qiáng)吞吐客年,支持跨機(jī)房霞幅。

并發(fā)+時(shí)序

1.一發(fā)一答的串行更新模式遠(yuǎn)不能滿足更新性能的需求

2.在并發(fā)的前提下,可以做到按照某個(gè)key的時(shí)需保證量瓜;

具有相同key的消息司恳,可以保證時(shí)序

比如接貼吧發(fā)帖的命令的consumer,可以通過配置做到不同發(fā)帖更新并發(fā)绍傲,但保證同一個(gè)吧的發(fā)帖是有序串行的扔傅;

3.實(shí)現(xiàn)

正在發(fā)送窗口+待發(fā)送窗口

發(fā)送先前check是否有互斥的消息正在發(fā)送

國內(nèi)跨城市方案:

國際化數(shù)據(jù)互通方案:

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末并思,一起剝皮案震驚了整個(gè)濱河市捺球,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌蔓罚,老刑警劉巖杠纵,帶你破解...
    沈念sama閱讀 211,639評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件荠耽,死亡現(xiàn)場離奇詭異,居然都是意外死亡比藻,警方通過查閱死者的電腦和手機(jī)铝量,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,277評論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來银亲,“玉大人慢叨,你說我怎么就攤上這事∥耱穑” “怎么了拍谐?”我有些...
    開封第一講書人閱讀 157,221評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我赠尾,道長力穗,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,474評論 1 283
  • 正文 為了忘掉前任气嫁,我火速辦了婚禮,結(jié)果婚禮上够坐,老公的妹妹穿的比我還像新娘寸宵。我一直安慰自己,他們只是感情好元咙,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,570評論 6 386
  • 文/花漫 我一把揭開白布梯影。 她就那樣靜靜地躺著,像睡著了一般庶香。 火紅的嫁衣襯著肌膚如雪甲棍。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,816評論 1 290
  • 那天赶掖,我揣著相機(jī)與錄音感猛,去河邊找鬼。 笑死奢赂,一個(gè)胖子當(dāng)著我的面吹牛陪白,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播膳灶,決...
    沈念sama閱讀 38,957評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼咱士,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了轧钓?” 一聲冷哼從身側(cè)響起序厉,我...
    開封第一講書人閱讀 37,718評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎毕箍,沒想到半個(gè)月后弛房,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,176評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡霉晕,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,511評論 2 327
  • 正文 我和宋清朗相戀三年庭再,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片牺堰。...
    茶點(diǎn)故事閱讀 38,646評論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡拄轻,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出伟葫,到底是詐尸還是另有隱情恨搓,我是刑警寧澤,帶...
    沈念sama閱讀 34,322評論 4 330
  • 正文 年R本政府宣布,位于F島的核電站斧抱,受9級特大地震影響常拓,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜辉浦,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,934評論 3 313
  • 文/蒙蒙 一弄抬、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧宪郊,春花似錦掂恕、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,755評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至乎串,卻和暖如春店枣,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背叹誉。 一陣腳步聲響...
    開封第一講書人閱讀 31,987評論 1 266
  • 我被黑心中介騙來泰國打工鸯两, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人桂对。 一個(gè)月前我還...
    沈念sama閱讀 46,358評論 2 360
  • 正文 我出身青樓甩卓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親蕉斜。 傳聞我的和親對象是個(gè)殘疾皇子逾柿,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,514評論 2 348

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