



下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
一文幫你選擇開源消息中間件
現(xiàn)代開源消息中間件對比,接下來,我們就來一起看看吧!
一、#NATS:
https://nats.io/
https://github./nats-io/nats-streaming-serverNATS最初是使用Ruby構(gòu)建的,每秒可實現(xiàn)150k消息的消費速度。該團隊用Go中重寫了它,現(xiàn)在您可以每秒奇妙地發(fā)送8-11百萬條消息。它可以用作發(fā)布-訂閱引擎,但是您也可以把它用于綜合排隊。
優(yōu)點:口號:始終可用,撥號音簡潔,設(shè)計低CPU消耗,快速:高速通信總線,高可用性,高可擴展性,輕松:體積很小,只有3MBDocker映像!
缺點:忘卻,沒有長久性:NATS不進行長久性消息傳遞;假如您處于離線狀態(tài),則不會收到消息。沒有事務(wù),沒有增加的交付方式,沒有企業(yè)排隊。
總的來說,NATS和Redis更適合較小的消息(遠低于1MB),其中延遲通常在不到毫秒的時間內(nèi)達到四個9.NATS不是HTTP,它是擁有它自己的特別簡潔的基于文本的協(xié)議,類似于RPC。因此,它不會在郵件信封中添加任何標題。
NATS沒有復(fù)制,分片或整體訂購。使用NATS,隊列可以有效地按節(jié)點分片。假如節(jié)點死亡,則其消息將丟失。到活動節(jié)點的傳入消息仍將傳遞給已連接的訂戶,并且訂戶應(yīng)重新連接到可用節(jié)點池。一旦從前死掉的節(jié)點重新加入,它將開頭接收消息。在這種狀況下,NATS會替換HAProxy之類的內(nèi)容;一個簡潔的內(nèi)存路由器,用于懇求后端。
NATS的用戶包括Buzzfeed,Tinder,Stripe,Rakutan,Ericsson,HTC,Siemens,VMware,Pivotal,GE和Baidu。一個用例:“我們使用NATS進行同步通信,每秒通過它發(fā)送約1萬條消息。
必需說,即使負載更大(超過10MB),穩(wěn)定性也很高。我們已經(jīng)在生產(chǎn)環(huán)境中運行了幾周,并且沒有任何問題。主要限制是沒有大規(guī)模集群。您可以擁有一個特別強大的集群,但是每個節(jié)點只能轉(zhuǎn)發(fā)一次,這是有限制的。”
二、#RabbitMQ:
RabbitMQ是遵循AMQP0.9.1標準的代理消息傳遞引擎。它遵循標準的存儲轉(zhuǎn)發(fā)模式,您可以選擇將數(shù)據(jù)存儲在RAM中,在磁盤上,或是在這兩者中。它支持各種消息路由范例。RabbitMQ可以以集群方式進行部署以提高性能,而可以通過鏡像方式進行部署,以實現(xiàn)高可用性。
消費者直接在隊列上偵聽,但是發(fā)布者只知道“交換”。這些交換通過綁定(指定路由范式)與綁定鏈接到隊列。綁定隊列和事務(wù)傳遞語義。因此,RabbitMQ是一種更為“重量級”的排隊解決方案,并為此付出額外的費用。
缺點:RabbitMQ的高可用性支持特別糟糕。無論您如何轉(zhuǎn)動,它都是單點故障,由于它無法合并由于分區(qū)狀況而導(dǎo)致的沖突隊列。分區(qū)不僅會在網(wǎng)絡(luò)中斷時發(fā)生,還會在高負載狀況下發(fā)生。RabbitMQ不會將消息長久保存到磁盤。
三、#Kafka:
基于Scala。
使用Kafka,您可以進行實時處理和批處理。Kafka在JVM上運行(詳細來說是Scala)。攝取大量數(shù)據(jù),通過發(fā)布-訂閱(或排隊)路由。Broker對消費者幾乎一無所知。真正存儲的只是一個“偏移”值,該值指定使用者在日志中保留的位置。
與很多假定消費者主要在線的集成代理不同,Kafka可以勝利保存大量數(shù)據(jù)并支持“重播”方案。該體系結(jié)構(gòu)特別獨特。主題按分區(qū)排列(用于并行性),分區(qū)跨節(jié)點復(fù)制(以實現(xiàn)高可用性)。
與Kafka相比,NATS是一個很小的基礎(chǔ)架構(gòu),獨角獸初創(chuàng)公司,物聯(lián)網(wǎng),健康和大型金融組織(LinkedIn,F(xiàn)B,Netflix,GE,美國銀行,房利美,大通銀行等)都使用Kafka。與Nats相比,Kafka更成熟,并且在巨大的數(shù)據(jù)流中表現(xiàn)精彩。NATSServer相比Kafka具有部分功能,由于它專注于狹窄的用例集。
NATS被設(shè)計用于以下場景:高性能和低延遲至關(guān)重要,但是假如需要,可以丟失一些數(shù)據(jù),以跟上數(shù)據(jù)的步伐-NATS文檔將其描述為“一勞永逸”。從結(jié)構(gòu)上講,這是由于NATS沒有長久性層可用于長久存儲數(shù)據(jù),而Kafka卻具有長久性層(使用群集中的存儲)。為了完全確保消息不會丟失,它看起來像您需要將隊列聲明為長久+將您的消息標記為長久+使用發(fā)布者確認。這花費了數(shù)百毫秒的延遲。
對于分區(qū)而言,相對平安的唯一隊列或發(fā)布/訂閱系統(tǒng)是Kafka。當(dāng)您需要5至50臺服務(wù)器時,Kafka就是一個特別牢靠的工程。擁有那么多服務(wù)器,您每秒可以處理數(shù)百萬條消息,這通常對于中型公司而言已經(jīng)足夠。
由于多種緣由,Kafka完全不適合RPC。首先,它的數(shù)據(jù)模型將隊列中的數(shù)據(jù)分片,每個分區(qū)只能由一個使用者使用。假設(shè)我們有分區(qū)1和2。P1為空,P2有大量消息。
現(xiàn)在,當(dāng)C2工作時,您將擁有一個空閑的使用者C1。C1無法擔(dān)當(dāng)C2的任何工作,由于它只能處理自己的分區(qū)。換句話說:一個緩慢的使用者可以堵塞隊列的很大一部分。Kafka專為快速(或至少表現(xiàn)勻稱)的消費者而設(shè)計。
1、NATS與Kafka的關(guān)系
NATS最近加入了CNCF(托管Kubernetes,Prometheus等項目-在這里查看Golang的優(yōu)勢!)協(xié)議-Kafka是基于TCP的二進制文件,而不是NATS是簡潔文本(也基于TCP)的消息傳遞模式-兩者都支持發(fā)布/訂閱和隊列,但是NATS也支持懇求-應(yīng)答(同步和異步)。
NATS具有隊列的概念(當(dāng)然具有唯一的名稱),并且掛接到同一隊列的全部訂戶最終都成為一部分屬于同一隊列組。(可能多個)訂閱者中只有一個收到消息。多個此類隊列組也將接收同一組消息。這使其成為混合的發(fā)布-訂閱(一對多)和隊列(點對點)。
Kafka通過消費者組支持相同的事物,這些用戶組可以從一個或多個主題中提取數(shù)據(jù)。流處理—NATS不像Kafka那樣對KafkaStreams供應(yīng)一流的功能,因此不支持流處理。相對于NATS,NATS提取消息的方式與服務(wù)器本身將消息路由到客戶端的NATS(內(nèi)部維護愛好圖)相對。
NATS可以實行敏感措施,由于它可以切斷不符合生產(chǎn)速度的消費者,以及不響應(yīng)心跳懇求的客戶。消費者活躍度檢查也由Kafka執(zhí)行。這是從客戶端本身完成/啟動的,因此可能會導(dǎo)致簡單的狀況(例如,當(dāng)您處于消息處理循環(huán)中且未輪詢時)。有許多配置參數(shù)(在客戶端上)可調(diào)整此行為。
2、交付語義
NATS支持最多一次(Atmostonce)(并且NATS流至少支持一次),而Kafka則支持僅一次(Exactlyonce)(NATs好像沒有像Kafka那樣對分區(qū)/分片消息的概念,在NATS狀況下沒有外部依靠性。
Kafka要求Zookeeper,NATSStreaming好像與Kafka功能集相像,但是使用Go構(gòu)建并且看起來更易于設(shè)置.NATS目前不支持復(fù)制(或?qū)嶋H上沒有任何高可用性設(shè)置)。與Kafka相比,這是一個主要的缺失功能。
四、#NSQ:
易于設(shè)置NSQ好像更敏捷,它支持消息長久性,并且在長久性要求不高的狀況下,還供應(yīng)類似于NATS的臨時通道。它配備了NATS缺少的閃亮的管理儀表板。當(dāng)優(yōu)先考慮原始性能時,NATS很有用.NATS和NSQ隊列均支持按消息TTL,以修剪時間敏感消息。
Kafka很簡單,但保證不會丟失任何數(shù)據(jù)。適合訂購日志。NSQ缺乏長久性和復(fù)制力量。大規(guī)模操作特別簡潔。Kafka的性能和增加的保證以難以操作為代價。有了Kafka,除了Kafka經(jīng)紀人,您還需要一個Zookeeper集群。Kafka需要考慮分區(qū)和偏移量,最好將Kafka視為分布式日志服務(wù),而不是消息傳遞代理,例如數(shù)據(jù)庫中的預(yù)寫日志而不是printf語句。
NSQ是一種更為傳統(tǒng)的緩沖消息系統(tǒng)。它具有文件長久性,但僅作為a)優(yōu)化以防止一旦內(nèi)存用完就會丟失消息,以及b)作為使用者檔案。但是,節(jié)點的嚴峻丟失意味著尚未傳遞的那些消息可能會丟失,由于無法保證它們會在其他地方發(fā)布。
此外,不能保證發(fā)布到主題和頻道的消息挨次是消費者接收到的消息挨次。使用NSQ,有一個內(nèi)置有用程序nsq_to_file,它成為您將每個消息主題歸檔到磁盤時的另一個使用方。它供應(yīng)了簡潔的郵件存檔功能,但不供應(yīng)任何本地重播功能。
五、#ApachePulsar():
基于Java。
它是雅虎公司設(shè)計的,是一種高性能,低延遲,可擴展的長久解決方案,用于發(fā)布訂閱消息和消息排隊。ApachePulsar將高性能流(ApacheKafka追求)和敏捷的傳統(tǒng)排隊(RabbitMQ追求)結(jié)合在一起,成為統(tǒng)一的消息傳遞模型和API。Pulsar使用統(tǒng)一的API為您供應(yīng)具有相同高性能的流和排隊系統(tǒng)??偠灾?,Kafka的目標是高吞吐量,Pulsar的目標是低延遲。
1、Pulsar優(yōu)點:
①豐富—長久性/非長久性主題,多租戶,ACL,多DC復(fù)制等。
②更易于使用的更敏捷的客戶端API(包括CompletableFutures,流暢的接口等)。
③Java客戶端組件是線程平安的,消費者可以確認來自不同的線程的消息
2、Pulsar缺點:
①Java客戶端幾乎沒有Javadoc
②Small社區(qū)-當(dāng)前有8個stackoverflow問題
③與BookKeeper綁定的MessageId
④與連續(xù)數(shù)字序列的Kafka偏移量相比,消費者無法輕松地將自己定位在主題上。讀者無法輕松閱讀關(guān)于該主題的最終一條消息。
⑤沒有事務(wù)支持。
⑥更高的操作簡單性—Zookeeper+Broker節(jié)點+BookKeeper—全部clusterLatency都可疑—Broker節(jié)點與BookKeeper之間有一個額外的遠程調(diào)用(與Kafka相比)
3、Kafka優(yōu)點:
①特別豐富和有用的JavaDoc。
②KafkaStre
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年九年級語文上冊 第一單元 第1課《沁園春 雪》教學(xué)設(shè)計1 新人教版
- 九年級化學(xué)下冊 第8單元 金屬和金屬材料 課題3 金屬資源的利用和保護 第2課時 金屬資源的保護教學(xué)設(shè)計 (新版)新人教版
- 6營養(yǎng)要均衡 教學(xué)設(shè)計-2024-2025學(xué)年科學(xué)四年級上冊教科版
- 自考現(xiàn)代教育技術(shù)實踐課
- 聯(lián)合申報合作協(xié)議
- ICU??谱o理評審方法課件
- 《第五單元 唱歌 其多列》(教學(xué)設(shè)計)-2023-2024學(xué)年人教版(2012)音樂一年級下冊
- 2024-2025版新教材高中化學(xué) 第1章 第1節(jié) 第1課時 物質(zhì)的分類及物質(zhì)的轉(zhuǎn)化教學(xué)設(shè)計 新人教版必修第一冊
- 七年級信息技術(shù) 8.3制作基本動畫教學(xué)設(shè)計 人教新課標版
- 統(tǒng)計學(xué)培訓(xùn)課件
- 2024年計算機軟件水平考試-高級系統(tǒng)架構(gòu)師考試近5年真題附答案
- 醫(yī)院缺陷管理辦法
- 自考15040習(xí)新時代思想概論高通過率題庫
- SAP ERP:SAPPM設(shè)備管理模塊介紹.Tex.header
- QSPI-9708-2016-光伏電站安裝施工質(zhì)量驗收規(guī)定
- 財政投資評審咨詢服務(wù)預(yù)算和結(jié)算評審項目 投標方案(技術(shù)方案)
- 細胞制備中心建設(shè)與管理規(guī)范
- 商業(yè)空間設(shè)計(高職環(huán)境藝術(shù)設(shè)計專業(yè)和室內(nèi)設(shè)計專業(yè))全套教學(xué)課件
- 2024公路工程巖石試驗規(guī)程
- 幼兒園課件:《父愛如山》
- 四川鄉(xiāng)村振興文旅策劃方案-全面推進農(nóng)業(yè)與旅游、教育、文化、健康養(yǎng)老等多產(chǎn)業(yè)帶深度融合
評論
0/150
提交評論