分布式系统的现代消息传递
論文?《分布式系統(tǒng)的現(xiàn)代消息傳遞》Modern Messaging for Distributed Sytems
L Magnoni?
通過IOP出版有限公司出版許可物理學(xué)學(xué)報(bào):會(huì)議系列,?608卷,?第1會(huì)議
?
作者電子郵件
luca.magnoni@cern.ch
作者隸屬關(guān)系
1歐洲核子研究中心,歐洲粒子物理實(shí)驗(yàn)室(CERN),瑞士日內(nèi)瓦
引文
L Magnoni 2015?J.?物理學(xué):Conf。序列。608?012038
?
抽象
現(xiàn)代軟件應(yīng)用程序很少孤立存在,而現(xiàn)在通常的做法是依賴服務(wù)或使用遠(yuǎn)程實(shí)體提供的信息。
在這種分布式架構(gòu)中,集成是關(guān)鍵。
十多年來,消息傳遞是解決分布式性質(zhì)挑戰(zhàn)的參考解決方案,例如網(wǎng)絡(luò)不可靠性,
生產(chǎn)者和消費(fèi)者的強(qiáng)烈耦合以及應(yīng)用的異質(zhì)性。
?
由于強(qiáng)大的社區(qū)以及對(duì)標(biāo)準(zhǔn)和整合的共同努力,消息代理如今已成為許多項(xiàng)目和服務(wù)的傳輸層構(gòu)建塊,
無論是在物理界還是在外面。此外,近年來出現(xiàn)了新一代的消息服務(wù),
重點(diǎn)關(guān)注低延遲和高性能用例,突破了消息傳遞應(yīng)用程序的界限。
本文將介紹分布式應(yīng)用程序的消息傳遞解決方案,概述主要概念,技術(shù)和服務(wù)。
1.介紹
本文概述了消息傳遞概念,功能和現(xiàn)代技術(shù)。
首先介紹分布式通信和系統(tǒng)集成的消息傳遞。
然后提供對(duì)主要消息傳遞功能的回顧,然后概述從代理到無代理系統(tǒng)的消息傳遞的主要技術(shù)。
最后,介紹了有關(guān)使用消息傳遞解決分布式應(yīng)用程序通信問題的成功案例列表。
?
2.用于松散耦合通信的消息傳遞
現(xiàn)代分布式系統(tǒng)可以包括數(shù)百個(gè)(如果不是數(shù)千個(gè))應(yīng)用程序以多層操作,并為彼此提供不同的服務(wù)和功能。
在這樣的分布式架構(gòu),存在諸如網(wǎng)絡(luò)不可靠性,強(qiáng)耦合等諸多挑戰(zhàn),生產(chǎn)者和消費(fèi)者以及需要的應(yīng)用程序的異構(gòu)性,致力于建立一個(gè)堅(jiān)實(shí)可靠的系統(tǒng)。
?
2.1 面向連接的通信
面向連接的通信是在遠(yuǎn)程實(shí)體之間交換信息的簡單解決方案。如圖1所示,考慮通過面向連接的協(xié)議(如TCP / IP)打開套接字,并通過它傳輸原始數(shù)據(jù)流。這將是一種快速而廉價(jià)的信息交換方式,但與此同時(shí),緊密耦合的通信將基于許多假設(shè),這些假設(shè)需要滿足才能進(jìn)行通信:
圖1:緊密耦合的通信。
- 時(shí)間依賴:所有組件必須同時(shí)可用。
- 位置:每個(gè)組件必須知道對(duì)方地址。
- 數(shù)據(jù)結(jié)構(gòu)和表示:在最簡單的實(shí)現(xiàn)中,所有組件必須就數(shù)據(jù)格式和二進(jìn)制表示達(dá)成一致。
?
2.2 用于松散耦合通信的消息傳遞
耦合可以通過各方在溝通時(shí)相互作出的假設(shè)數(shù)來衡量。
消息傳遞是松耦合通信解決方案的一個(gè)示例,其中消息是信息構(gòu)建塊,其目的在于最小化這些假設(shè)。
它不是直接向特定地址發(fā)送信息,而是發(fā)送到可尋址信道,以解決位置依賴性。
為了消除時(shí)間依賴性,可以增強(qiáng)該信道以對(duì)信息進(jìn)行排隊(duì),直到遠(yuǎn)程組件準(zhǔn)備好接收它為止。
這樣,生產(chǎn)者現(xiàn)在可以將請(qǐng)求發(fā)送到通道并繼續(xù)處理,而不必?fù)?dān)心交付。
消息傳遞不對(duì)數(shù)據(jù)表示做出任何假設(shè),因此標(biāo)準(zhǔn)數(shù)據(jù)格式(例如,自描述和與JSON或XML無關(guān)的平臺(tái))可用于消除在所有組件之間共享數(shù)據(jù)處理邏輯的需要。
?
2.3消息傳遞方案
典型的消息傳遞用例是:
信息發(fā)布:實(shí)體發(fā)布易變信息而沒有關(guān)于誰感興趣的先驗(yàn)知識(shí)(例如傳感器);?
信息存儲(chǔ):實(shí)體從多個(gè)來源(例如日志收集器)收集信息;?
遠(yuǎn)程過程調(diào)用:實(shí)體向一個(gè)或多個(gè)遠(yuǎn)程實(shí)體發(fā)送請(qǐng)求并期望回復(fù)。
?
2.4消息傳遞中間件
消息傳遞是一種松散耦合的通信解決方案,可最大限度地減少生產(chǎn)者和消費(fèi)者的依賴,刪除這些依賴項(xiàng)使整個(gè)架構(gòu)更靈活,更容忍變更,但它帶來了額外的復(fù)雜性。
因此,多年來已經(jīng)開發(fā)了專用消息中間件以提供消息傳遞功能而無需處理內(nèi)部復(fù)雜性。
下一節(jié)將介紹消息傳遞系統(tǒng)的主要概念和原理。
?
3.消息系統(tǒng)
如圖2所示,消息傳遞系統(tǒng)充當(dāng)想要通信的實(shí)體之間的間接層。
通常稱為消息代理,它負(fù)責(zé)將數(shù)據(jù)作為消息從一個(gè)應(yīng)用程序傳輸?shù)搅硪粋€(gè)應(yīng)用程序,
這樣生產(chǎn)者和消費(fèi)者就可以專注于分享內(nèi)容,而不是如何分享內(nèi)容。
與許多其他技術(shù)一樣,消息傳遞基于一些基本概念和屬性,這些概念和屬性在所有不同的風(fēng)格和實(shí)現(xiàn)之間共享。
圖2:松散耦合通信的消息傳遞。
?
3.1 信息
消息是信息構(gòu)建塊。它由一個(gè)主體組成,它是不可變的,包含通信的結(jié)構(gòu)化數(shù)據(jù)(例如JSON,XML,序列化協(xié)議)對(duì)象,以及一組頭,通常是可由代理處理并用于路由的鍵值對(duì)。
?
3.2 通信模型:主題和隊(duì)列
消息傳遞系統(tǒng)支持不同的通信模型,每個(gè)模型定義了生產(chǎn)者和消費(fèi)者之間如何交換信息。
最常見的通信模型是隊(duì)列和主題。
隊(duì)列用于實(shí)現(xiàn)點(diǎn)對(duì)點(diǎn)通信,其中,如果在生成信息時(shí)不存在消費(fèi)者,則消息將保留在通道中以供以后傳遞,
如果有多個(gè)消費(fèi)者,則消息僅傳送一次。
主題是針對(duì)經(jīng)典發(fā)布/訂閱方案,
如果不存在消費(fèi)者,則消息被丟棄,并且在多個(gè)消費(fèi)者的情況下,消息系統(tǒng)將消息傳遞給每個(gè)消費(fèi)者。
來自隊(duì)列和主題的部分被廣泛支持,更復(fù)雜的傳遞語義存在于協(xié)議級(jí)別(例如來自AMQP的交換/節(jié)點(diǎn))以及許多其他中間件特定的。
?
3.3 協(xié)議
多年來,缺乏與消息代理交互的獨(dú)特標(biāo)準(zhǔn)方式已成為消息傳遞技術(shù)的已知問題。
AMQP協(xié)議由主要的消息傳遞參與者,公司和軟件生產(chǎn)者設(shè)計(jì),以克服這一限制。
然而,定義有線通信和傳遞語義的統(tǒng)一協(xié)議的內(nèi)部復(fù)雜性要求消息傳遞系統(tǒng)的主要開發(fā)工作變得完全兼容。
本節(jié)概述了主消息系統(tǒng)當(dāng)前支持的最常見的標(biāo)準(zhǔn)協(xié)議。
對(duì)于面向消息的體系結(jié)構(gòu),協(xié)議選擇是一個(gè)關(guān)鍵的設(shè)計(jì)決策,就其在應(yīng)用程序中的強(qiáng)耦合而言。
?
3.3.1 AMQP(高級(jí)消息隊(duì)列協(xié)議)[1]是標(biāo)準(zhǔn)化工作的結(jié)果消息傳遞領(lǐng)域的主要貢獻(xiàn)者(例如思科,微軟,紅帽,銀行)。
它是旨在實(shí)現(xiàn)不同消息傳遞系統(tǒng)之間的互操作性。?
它提供了定義二進(jìn)制線協(xié)議和完整的傳遞語義,理論上允許AMQP消息傳遞客戶端能夠與不同的代理實(shí)現(xiàn)無縫交互符合AMQP標(biāo)準(zhǔn)。?
如今,該協(xié)議的最新穩(wěn)定版本(1.1)的奉獻(xiàn)是尚未廣泛,但鑒于它已經(jīng)得到了主要消息代理的支持,預(yù)計(jì)未來幾年將更廣泛地實(shí)施。
?
3.3.2 STOMP(流式文本定向消息傳遞協(xié)議)[2]是基于文本的協(xié)議意味著簡單且可廣泛互操作。?
它主要是一種有線協(xié)議,它非常有用基本的消息傳遞語義內(nèi)置(例如,不支持通信模型,目的地是只是一個(gè)字符串消息頭),
需要在消息系統(tǒng)級(jí)別進(jìn)行適當(dāng)?shù)呐渲?#xff08;例如,目的地必須適當(dāng)?shù)赜成涞疥?duì)列或主題)。 多虧了它簡單,有許多語言提供的廣泛的客戶端,它是由支持大多數(shù)經(jīng)紀(jì)人。
?
3.3.3 MQTT(Message Queue遙測(cè)傳輸)[3]是輕量級(jí)協(xié)議設(shè)計(jì)的最初來自IBM。?
它適用于低帶寬,高延遲的網(wǎng)絡(luò)。?
它定義了一個(gè)緊湊的二進(jìn)制格式,通信開銷非常有限,幾十字節(jié),這使得它適用于簡單的物聯(lián)網(wǎng)風(fēng)格應(yīng)用(例如移動(dòng)電話,傳感器)生產(chǎn) - 忘記的情景。
?
3.4功能
如第2節(jié)所述,消息傳遞系統(tǒng)可以被視為中間通道通過排隊(duì)等附加功能進(jìn)行增強(qiáng),以改善通信遠(yuǎn)程實(shí)體的經(jīng)驗(yàn)。
多年來,雖然沒有正式的協(xié)議,但不同消息傳遞系統(tǒng)融合在一組共同的功能上,這些功能已成為事實(shí)上的標(biāo)準(zhǔn)用于消息傳遞中間件。
功能列表包括Persistence,即保存功能永久存儲(chǔ)上的消息,例如文件系統(tǒng)或數(shù)據(jù)庫;故障轉(zhuǎn)移,允許客戶端經(jīng)紀(jì)人失敗時(shí)自動(dòng)重新連接;
保證交付,定義政策用于消息傳遞(例如,至少一次或完全一次);
訂購,發(fā)送消息它們的生產(chǎn)順序;
交易,將多個(gè)請(qǐng)求視為一部分的能力分布式事務(wù),具有回滾選項(xiàng)和聚類,這是創(chuàng)建的可能性消息代理網(wǎng)絡(luò),用于高可用性和負(fù)載平衡。
盡管如此,每個(gè)消息系統(tǒng)可以為相同的功能提供不同的解釋。許多其他獨(dú)特的經(jīng)紀(jì)人特定存在功能,但它們的使用意味著將應(yīng)用程序與特定代理硬連接味道。
?
4.消息傳遞技術(shù)
面向消息的中間件已經(jīng)發(fā)展了十多年,現(xiàn)在已經(jīng)成為一個(gè)豐富而穩(wěn)固的服務(wù)和庫生態(tài)系統(tǒng)。
消息代理作為為分布式應(yīng)用程序提供消息傳遞功能的中間獨(dú)立服務(wù),是最常見的消息傳遞系統(tǒng)類型。
多年來,消息代理已廣泛用于在分布式系統(tǒng)中實(shí)現(xiàn)通信和集成[4],但數(shù)據(jù)密集型和高性能用例除外,
中間實(shí)體的存在不適合的選擇。
近年來,出現(xiàn)了新一代消息傳遞系統(tǒng),重點(diǎn)關(guān)注低延遲和高性能用例,突破了消息傳遞應(yīng)用程序的界限。
下一節(jié)將介紹主要消息傳遞技術(shù)的概述。
?
4.1 消息代理
消息代理是消息系統(tǒng)最常見的實(shí)現(xiàn)。
消息代理是獨(dú)立的中間實(shí)體,它通過標(biāo)準(zhǔn)或自定義協(xié)議提供消息傳遞功能。
存在許多消息代理,不同的功能,協(xié)議,實(shí)現(xiàn)語言,平臺(tái)支持。
本評(píng)論的重點(diǎn)是開源解決方案,但許多也作為企業(yè)商業(yè)軟件的一部分存在。
消息代理是功能最豐富的消息傳遞系統(tǒng)類型,具有協(xié)議支持的功能,如第2節(jié)所述。
經(jīng)紀(jì)人可以是多語言,允許生產(chǎn)者和消費(fèi)者使用不同的協(xié)議(例如AMQP上的發(fā)送者,STOMP上的接收者)
并且它們可以支持消息轉(zhuǎn)換(例如,將消息有效負(fù)載從XML轉(zhuǎn)換為JSON)以進(jìn)一步解耦應(yīng)用程序。
?
4.1.1 ActiveMQ是最廣泛采用的開源消息代理之一。
它是一個(gè)Apache項(xiàng)目,用Java編寫,得到了Red Hat的商業(yè)支持。
ActiveMQ具有廣泛的協(xié)議支持(例如AMQP,STOMP,MQTT,Openwire,HTTP和許多其他),
它提供了許多跨語言客戶端,并且完全符合JMS標(biāo)準(zhǔn)。
ActiveMQ提供了許多高級(jí)功能,例如:豐富的語義傳遞(例如虛擬隊(duì)列,復(fù)合目標(biāo),通配符),
JDBC消息存儲(chǔ)(例如,用于在任何JDBC兼容數(shù)據(jù)庫中保留消息)和高級(jí)群集配置(例如,主從,經(jīng)紀(jì)人網(wǎng)絡(luò))。
ActiveMQ是一種功能完備的消息傳遞解決方案,可用于實(shí)現(xiàn)許多通信和集成模式[4]。
?
4.1.2 RabbitMQ? 是一個(gè)用Erlang編寫的輕量級(jí)開源消息代理,它從下面語言的消息傳遞功能中獲益。
RabbitMQ架構(gòu)是深度模塊化的,它主要支持AMQP和STOMP,但是附加協(xié)議可以作為插件加載(例如MQTT,HTTP)。
它支持主要的消息傳遞功能,例如持久性,群集,高可用性和聯(lián)合。
RabbitMQ仍然是一種輕量級(jí)的消息傳遞解決方案,由于其簡單性和可靠性,可以嵌入到多個(gè)項(xiàng)目(例如Logstash)中。
?
4.1.3性能和可伸縮性 對(duì)于消息傳遞系統(tǒng),沒有詳細(xì)的上下文化,每秒消息的量化度量(msg / s)幾乎沒有意義。
使用的協(xié)議(例如二進(jìn)制或文本)起著重要作用,但存在許多其他延遲因素:
持久性消息可以慢幾個(gè)數(shù)量級(jí),放大因子(例如主題消費(fèi)者的數(shù)量)可以通過多個(gè)內(nèi)存中的消息副本影響系統(tǒng),
對(duì)于有效載荷大小也是如此。次優(yōu)的客戶端可能導(dǎo)致大量的開/關(guān)連接,行為不端的消費(fèi)者可能導(dǎo)致低用戶問題,
消息傳遞基礎(chǔ)結(jié)構(gòu)最常見的問題之一。
?
[5]中的比較,其中幾個(gè)消息代理通過STOMP協(xié)議在幾個(gè)通信模型中進(jìn)行評(píng)估,顯示了在實(shí)際情況下如何
性能可能在100000 msg / s和1000 msg / s之間變化。
?
4.2 Apache Kafka
Apache Kafka是一個(gè)最初來自LinkedIn的開源項(xiàng)目,現(xiàn)在是Apache基金會(huì)的一部分。
它已經(jīng)被開發(fā)用于實(shí)時(shí)活動(dòng)流分析,以解決對(duì)從生產(chǎn)者向許多潛在消費(fèi)者移動(dòng)大量數(shù)據(jù)(例如,用戶指標(biāo),計(jì)算機(jī)農(nóng)場(chǎng)監(jiān)控)的有效方式的需求。
規(guī)模和數(shù)據(jù)大小(數(shù)十億條消息和每天數(shù)百千兆字節(jié))和時(shí)間限制使得用例不適合標(biāo)準(zhǔn)經(jīng)紀(jì)人,如[6]中的比較。
?
Kafka的創(chuàng)新理念是成為無國籍經(jīng)紀(jì)人,因此不保留任何有關(guān)消費(fèi)者的信息。
消費(fèi)者必須保留其自己的狀態(tài)(例如關(guān)于最后讀取的數(shù)據(jù)的信息)并在需要時(shí)向Kafka輪詢新數(shù)據(jù)。
這允許Kafka獨(dú)立于消費(fèi)者的數(shù)量來保留單個(gè)消息副本(例如,消費(fèi)時(shí)不會(huì)刪除消息,而是通過保留期或其他策略刪除消息),
從而實(shí)現(xiàn)讀取和寫入操作的高吞吐量。
Kafka持久性是作為分布式提交日志實(shí)現(xiàn)的,如圖3所示,設(shè)計(jì)為易于擴(kuò)展的分布式系統(tǒng)(基于Zookeeper),允許自動(dòng)平衡消費(fèi)者/生產(chǎn)者/代理。
(a)Kafka集群
(b)Kafka主題分區(qū)
圖3:Kafka架構(gòu)。
與標(biāo)準(zhǔn)消息代理相比,Kafka提供有限的消息傳遞功能(例如主要是主題語義,文件系統(tǒng)作為唯一持久存儲(chǔ),嚴(yán)格保證排序)。
盡管有許多客戶端庫可用,但它僅支持TCP上的自定義二進(jìn)制格式。
Kafka是數(shù)據(jù)移動(dòng)的最佳解決方案,經(jīng)常被用作不同處理系統(tǒng)(例如Hadoop,Storm)的管道。
?
4.3 ZeroMQ
盡管名稱如此,ZeroMQ(也稱為0MQ或ZMQ)[7]不是標(biāo)準(zhǔn)的消息代理,而是一個(gè)提供消息傳遞功能的輕量級(jí)消息傳遞庫。
分布式應(yīng)用程序可以使用ZeroMQ進(jìn)行高吞吐量和低延遲通信,
利用其在生產(chǎn)者和消費(fèi)者之間實(shí)現(xiàn)直接聯(lián)系的能力,
沒有涉及中間實(shí)體。雖然這可能與消息傳遞的主要假設(shè)之一相矛盾,
ZeroMQ通過創(chuàng)新方法實(shí)現(xiàn)松耦合通信,充當(dāng)網(wǎng)絡(luò)堆棧的新層。
它使用類似的API擴(kuò)展了socket的概念,但內(nèi)置了消息傳遞模式:
請(qǐng)求/回復(fù),發(fā)布/訂閱,流水線和獨(dú)占對(duì),如圖4所示。
(a)請(qǐng)求/回復(fù)
(b)發(fā)布/訂閱
圖4:ZeroMQ套接字的示例。
?
與經(jīng)典套接字相比,每個(gè)ZeroMQ套接字都帶有一個(gè)內(nèi)部隊(duì)列,以允許異步通信。
結(jié)果是,例如在用于點(diǎn)對(duì)點(diǎn)通信的請(qǐng)求/回復(fù)場(chǎng)景中,
如果在消費(fèi)者未運(yùn)行時(shí)生成數(shù)據(jù),
ZeroMQ庫將負(fù)責(zé)延遲交付,而生產(chǎn)者方無需額外負(fù)載。
?
ZeroMQ背后的理念是強(qiáng)大的,它允許高性能和低延遲的通信,但在應(yīng)用程序級(jí)別具有額外的復(fù)雜性。
ZeroMQ主要支持自己的二進(jìn)制協(xié)議,并提供有限的消息傳遞功能(例如,故障轉(zhuǎn)移,1-N拓?fù)涞亩嗖ブС?#xff09;。
雖然可以使用ZMQ API輕松實(shí)現(xiàn)多個(gè)功能(例如確認(rèn)),
實(shí)現(xiàn)高級(jí)消息傳遞功能(例如保證傳遞,持久性)可能需要相當(dāng)大的努力,
使其適用于需要簡單消息語義的數(shù)據(jù)廣告場(chǎng)景。
?
5.用例
本節(jié)介紹了幾種成功采用基于消息傳遞通信的用例,以解決分布式系統(tǒng)中的交換信息問題。
5.1 CERN Beam Control中間件
CERN實(shí)驗(yàn)室的光束控制部門正在為大型強(qiáng)子對(duì)撞機(jī)(LHC)的高可靠性控制/監(jiān)控/報(bào)警應(yīng)用使用信息。
自2005年以來,一組ActiveMQ經(jīng)紀(jì)人,在商店和正向配置中,
用于收集安全系統(tǒng)生成的關(guān)鍵數(shù)據(jù)(例如30個(gè)生產(chǎn)者,2MB / s,4.5K msg / s)并將其轉(zhuǎn)發(fā)給許多消費(fèi)者(例如監(jiān)控工具,儀表板)。
作為安全數(shù)據(jù)關(guān)鍵任務(wù),存儲(chǔ)和轉(zhuǎn)發(fā)配置允許將數(shù)據(jù)生成與消耗完全分離,防止行為不端的客戶端進(jìn)行數(shù)據(jù)收集和歸檔[8]。
此外,LHC Control框架最近已從CORBA遷移到ZeroMQ作為通信層[9]。
?
5.2 DAQ在線監(jiān)測(cè)
消息傳遞還廣泛用于數(shù)據(jù)采集(DAQ)系統(tǒng)的幾個(gè)監(jiān)控工具,
負(fù)責(zé)從檢測(cè)器(例如高能物理實(shí)驗(yàn))過濾和收集數(shù)據(jù)到存儲(chǔ)設(shè)施。
?
5.2.1 ATLAS TDAQ移位器助手項(xiàng)目[10]依靠消息傳遞將業(yè)務(wù)警報(bào)從私有TDAQ網(wǎng)絡(luò)分發(fā)到GPN到許多異構(gòu)消費(fèi)者。
ActiveMQ群集用于主/從配置,以最大限度地減少對(duì)單個(gè)出站連接所需的防火墻配置的影響。
?
5.2.2 STAR Online框架依賴于基于AMQP的系統(tǒng),可靈活,松散地耦合檢測(cè)器元數(shù)據(jù),
使用消息傳遞作為統(tǒng)一傳輸層進(jìn)行處理,
存儲(chǔ)和監(jiān)控。 此外,已經(jīng)進(jìn)行了調(diào)查以重新編寫MQTT上的控制框架,從協(xié)議的靈活性和互操作性中獲益[11]。
?
5.3 WLCG消息服務(wù)
消息傳遞也已成功用于大規(guī)模地理分布式基礎(chǔ)設(shè)施。
WLCG(全球LHC計(jì)算網(wǎng)格)消息服務(wù)是用于監(jiān)控全球WLCG站點(diǎn)和服務(wù)的骨干傳輸層,
擁有超過50000個(gè)客戶端,平均消息速率為100 KHz。 監(jiān)視基礎(chǔ)結(jié)構(gòu)基于具有JSON有效負(fù)載的STOMP。
由于STOMP協(xié)議在多種代理風(fēng)格中的互操作性,
異構(gòu)消息代理群集(ActiveMQ,Apollo或RabbitMQ)用于客戶端應(yīng)用程序生成任何內(nèi)容并消費(fèi)給所有人[12]的場(chǎng)景。
?
6.總結(jié)
消息傳遞從根本上說是對(duì)分布式系統(tǒng)問題的實(shí)用反應(yīng)[4]。
如第2節(jié)所述,它允許松散耦合的通信作為生產(chǎn)者和消費(fèi)者之間的中間層。
它為分布式應(yīng)用程序的靈活性和可伸縮性帶來了許多好處,并對(duì)應(yīng)用程序和基礎(chǔ)架構(gòu)的復(fù)
消息系統(tǒng)仍然是不斷發(fā)展的技術(shù),如第3節(jié)所示,AMQP標(biāo)準(zhǔn)化工作指向了良好的方向,
但仍然部分采用。
消息代理是在許多項(xiàng)目和服務(wù)中用作傳輸層構(gòu)建塊的可靠且可靠的技術(shù),
無論是在物理界還是在外面。近年來,
新一代系統(tǒng)正在推動(dòng)低延遲/高吞吐量/數(shù)據(jù)密集型通信的消息傳遞,
如第5節(jié)所述,縮小用例和放松假設(shè),但將消息傳遞應(yīng)用程序的界限推向新的領(lǐng)域。
?
參考
[1] AMQP(高級(jí)消息隊(duì)列協(xié)議)http://www.amqp.org
[2] STOMP(簡單文本導(dǎo)向消息傳遞協(xié)議)http://stomp.gith?ub.io [3] MQTT(MQ遙測(cè)傳輸)http://mqtt.org
[4] G Hohpe和B Woolf 2003?企業(yè)集成模式?Addison-Wesley Professional [5] Chirino H?STOMP基準(zhǔn)http://hiramchirino.com/stomp-benchmark
[6] Kreps J,Narkhede N和Rao J?Kafka:用于日志處理的分布式消息系統(tǒng)。NetDB研討會(huì)(雅典,希臘)
[7] Hintjens P?ZeroMQ:指南http://zeromq.org
[8] Ehm F?為CERN的控制系統(tǒng)運(yùn)行可靠的消息傳遞基礎(chǔ)設(shè)施。?ICALEPCS2011會(huì)議錄(法國格勒諾布爾)
[9] Dworak A,Ehm F,Sliwinski W和Sobczak M 2011?中間件趨勢(shì)和市場(chǎng)領(lǐng)導(dǎo)者2011。
ICALEPCS2011會(huì)議錄(法國格勒諾布爾)
[10] Kazarov A,Miotto GL和Magnoni L 2012?AAL項(xiàng)目:ATLAS數(shù)據(jù)采集基礎(chǔ)設(shè)施的自動(dòng)監(jiān)測(cè)和智能分析。物理學(xué)雜志:會(huì)議系列,第368卷
[11] Arkhipkin D,Lauret J和Betts W 2011?STARs在線監(jiān)控和元數(shù)據(jù)收集的消息排隊(duì)框架。物理學(xué)雜志:會(huì)議系列,第331卷
[12] Cons L和Paladin M 2011?WLCG消息服務(wù)及其未來。物理學(xué)雜志:會(huì)議系列,第396卷
總結(jié)
以上是生活随笔為你收集整理的分布式系统的现代消息传递的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 适配器模式(Adapter模式)
- 下一篇: 【原创】 互联网大事记-开章