在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

架構師應該使用Kafka還是Rabbit MQ

汽車玩家 ? 來源:今日頭條 ? 作者:聞數起舞 ? 2020-05-03 18:10 ? 次閱讀

介紹

作為處理許多基于微服務的系統的軟件架構師,我經常遇到一個不斷重復的問題:"我應該使用RabbitMQ還是Kafka?" 由于某些原因,許多開發人員認為這些技術是可互換的。 盡管在某些情況下確實如此,但這些平臺之間存在各種潛在的差異。

結果,不同的方案需要不同的解決方案,選擇錯誤的方案可能會嚴重影響您設計,開發和維護軟件解決方案的能力。

本文的目的是首先介紹基本的異步消息傳遞模式。 然后,它將繼續介紹RabbitMQ和Kafka及其內部結構。 第2部分將重點介紹這些平臺之間的關鍵區別,它們的各種優缺點以及如何在兩者之間進行選擇。

異步消息傳遞模式

異步消息傳遞是一種消息傳遞方案,其中生產者的消息生產與消費者的消息處理不相關。 在處理消息傳遞系統時,我們通常會確定兩種主要的消息傳遞模式-消息排隊和發布/訂閱。

消息隊列

在消息隊列通信模式中,隊列在時間上使生產者與消費者脫鉤。 多個生產者可以將消息發送到同一隊列。 但是,當使用者處理郵件時,該郵件將被鎖定或從隊列中刪除,并且不再可用。 只有一個消費者消費一條特定的消息。

架構師應該使用Kafka還是Rabbit MQ

Message queuing

附帶說明一下,如果使用者無法處理某條消息,則消息傳遞平臺通常會將消息返回到隊列中,以供其他使用者使用。 除了臨時解耦,隊列還使我們能夠獨立地擴展生產者和消費者的規模,并提供一定程度的容錯能力以應對處理錯誤。

發布/訂閱

在發布/訂閱(或pub / sub)通信模式中,多個訂戶可以同時接收和處理一條消息。

架構師應該使用Kafka還是Rabbit MQ

Publish/subscribe

例如,此模式允許發布者通知所有訂閱者系統中發生了某些事情。 許多排隊平臺通常將pub / sub與術語主題相關聯。 在RabbitMQ中,主題是pub / sub實現的一種特定類型(確切地說是一種交換類型),但是在本篇文章中,我將主題稱為pub / sub整體的表示。

一般而言,訂閱有兩種類型:

· 臨時訂閱,僅在使用者啟動并運行時,訂閱才處于活動狀態。 使用者關閉后,其訂閱和尚未處理的消息就會丟失。

· 長期訂閱,只要未明確刪除訂閱,訂閱就會一直保留。 當使用者關閉時,消息傳遞平臺將維護訂閱,并且稍后可以恢復消息處理。

RabbitMQ

RabbitMQ是消息代理的實現,通常稱為服務總線。 它本身支持上述兩種消息傳遞模式。 消息代理的其他流行實現包括ActiveMQ,ZeroMQ,Azure服務總線和Amazon Simple Queue Service(SQS)。 所有這些實現都有很多共同點。 本文中描述的許多概念都適用于大多數概念。

消息隊列

RabbitMQ支持開箱即用的經典消息隊列。 開發人員定義命名隊列,然后發布者可以將消息發送到該命名隊列。 消費者進而使用相同的隊列來檢索消息以對其進行處理。

信息交流

RabbitMQ通過使用消息交換來實現pub / sub。 發布者將其消息發布到消息交換,而不知道這些消息的訂閱者是誰。

每個希望訂閱交換的消費者都會創建一個隊列。 然后,消息交換將產生的消息排隊,以供消費者使用。 它還可以基于各種路由規則為某些訂戶過濾消息。

架構師應該使用Kafka還是Rabbit MQ

RabbitMQ message exchange

請務必注意,RabbitMQ支持臨時訂閱和持久訂閱。 消費者可以通過RabbitMQ的API決定要使用的訂閱類型。

由于RabbitMQ的體系結構,我們還可以創建一種混合方法-一些訂戶形成消費者組,這些消費者組以特定隊列中競爭的消費者的形式一起處理消息。 通過這種方式,我們實現了發布/訂閱模式,同時還允許某些訂閱者擴大規模以處理收到的消息。

架構師應該使用Kafka還是Rabbit MQ

Pub/sub and queuing combined

Apache Kafka

Apache Kafka不是消息代理的實現。 而是一個分布式流媒體平臺。

與基于隊列和交換的RabbitMQ不同,Kafka的存儲層是使用分區的事務日志實現的。 Kafka還提供用于實時處理流的Streams API和可輕松與各種數據源集成的Connector API。 但是,這些不在本文的討論范圍之內。

云供應商為Kafka的存儲層提供了替代解決方案。 這些解決方案包括Azure事件中心,在某種程度上還包括AWS Kinesis數據流。 Kafka的流處理功能也有特定于云的開源替代方案,但是同樣,這些不在本文的討論范圍之內。

話題 Topic

Kafka沒有實現隊列的概念。 相反,Kafka將記錄的集合存儲在稱為主題的類別中。

對于每個主題,Kafka維護消息的分區日志。 每個分區都是一個有序的,不可變的記錄序列,在該記錄中連續附加消息。

當這些分區到達時,Kafka會將消息附加到這些分區。 默認情況下,它使用循環分區程序在各個分區之間均勻分布消息。

生產者可以修改此行為以創建消息的邏輯流。 例如,在多租戶應用程序中,我們可能想根據每個消息的租戶ID創建邏輯消息流。 在物聯網場景中,我們可能希望不斷將每個生產者的身份映射到特定分區。 確保來自同一邏輯流的所有消息都映射到同一分區,以確保將其傳遞給消費者。

架構師應該使用Kafka還是Rabbit MQ

Kafka producers

使用者通過維持這些分區的偏移量(或索引)并順序讀取它們來消費消息。

單個使用者可以使用多個主題,并且使用者可以擴展到可用分區的數量。

因此,在創建主題時,應仔細考慮該主題上消息傳遞的預期吞吐量。 一起工作以消費主題的一組消費者稱為消費群體。 Kafka的API通常會處理消費者組中消費者之間的分區處理與消費者當前分區偏移量的存儲之間的平衡。

架構師應該使用Kafka還是Rabbit MQ

Kafka consumers

使用Kafka實現消息傳遞模式

Kafka的實現非常適合pub / sub模式。

生產者可以將消息發送到特定主題,而多個消費者組可以使用同一條消息。 每個消費者組可以單獨擴展以處理負載。 由于使用者維護其分區偏移量,因此他們可以選擇具有持久性的訂閱,該持久性訂閱在重新啟動或臨時訂閱期間保持其偏移量,這將丟棄偏移量,并在每次啟動時從每個分區中的最新記錄重新啟動。

但是,它不適用于消息隊列模式。 當然,我們可以只包含一個消費者組來模擬一個經典消息隊列。 然而,這有多個缺點。本文的第2部分將詳細討論。

請務必注意,Kafka會將郵件保留在分區中,直到預定的時間,無論消費者是否消費了這些郵件。 這種保留意味著消費者可以自由地重讀過去的消息。 此外,開發人員還可以使用Kafka的存儲層來實現各種機制,例如事件源和審核日志。

進一步閱讀

如果您想了解有關RabbitMQ和Kafka的內部實現的更多信息,我建議您使用以下資源:

· AMQP 0.9.1模型解釋— RabbitMQ

· Apache Kafka簡介

結束語

盡管RabbitMQ和Kafka有時可以互換,但是它們的實現卻有很大的不同。 因此,我們無法將它們視為同一類工具的成員; 一個是消息代理,另一個是分布式流平臺。

作為解決方案架構師,我們應該承認這些差異,并積極考慮在給定場景下應使用哪種類型的解決方案。 第2部分解決了這些差異,并提供了何時使用它們的指南。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 軟件架構
    +關注

    關注

    0

    文章

    64

    瀏覽量

    10467
  • kafka
    +關注

    關注

    0

    文章

    53

    瀏覽量

    5368
收藏 人收藏

    評論

    相關推薦
    熱點推薦

    如何釋放異構計算的潛能?Imagination與Baya Systems的系統架構實踐啟示

    報告作者:PallaviSharma,Imaginaiton產品管理總監Dr.EricNorige,BayaSystems首席軟件架構師關注Imagination公眾號,消息框發送【異構計算】,即可
    的頭像 發表于 06-13 08:33 ?162次閱讀
    如何釋放異構計算的潛能?Imagination與Baya Systems的系統<b class='flag-5'>架構</b>實踐啟示

    單片機實例項目:MQ系列模塊資料

    單片機實例項目:MQ系列模塊資料,推薦下載!
    發表于 06-03 21:11

    Kafka工作流程及文件存儲機制

    Kafka 中消息是以 topic 進行分類的,生產者生產消息,消費者消費消息,都是面向 topic 的。
    的頭像 發表于 05-19 10:14 ?358次閱讀
    <b class='flag-5'>Kafka</b>工作流程及文件存儲機制

    AD9253對時鐘抖動的要求怎么樣,應該選擇怎樣的時鐘架構

    1:這款芯片支持連續采樣、沿觸發和外觸發工作方式 2:時鐘必須使用時鐘芯片配置才行?使用有源晶振是否可以? 3:這款芯片對時鐘抖動的要求怎么樣,應該選擇怎樣的時鐘架構
    發表于 04-15 06:43

    一個優秀的嵌入式軟件“架構師” — AWFlow

    在大型項目的軟件開發過程中,模塊化開發面臨著接口設計不合理、代碼沖突以及模塊間不兼容等問題,導致團隊協作效率低下。為了解決這些問題,嵌入式軟件“架構師”—AWFlow,應運而生!在大型項目
    的頭像 發表于 02-10 16:44 ?478次閱讀
    一個優秀的嵌入式軟件“<b class='flag-5'>架構師</b>” — AWFlow

    英特爾前Xeon首席架構師加盟高通

    高通公司近日宣布,英特爾前Xeon服務器處理器首席架構師Sailesh Kottapalli已正式加入高通,并擔任高級副總裁一職。此舉被視為高通進軍數據中心CPU市場的重要一步
    的頭像 發表于 01-15 15:30 ?456次閱讀

    華為云 FlexusX 實例下的 Kafka 集群部署實踐與性能優化

    前言 華為云 FlexusX 實例,以創新的柔性算力技術,為 Kafka 集群部署帶來前所未有的性能飛躍。其靈活的 CPU 與內存配比,結合智能調度與加速技術,讓 Kafka 在高并發場景下依然
    的頭像 發表于 01-07 17:23 ?398次閱讀
    華為云 FlexusX 實例下的 <b class='flag-5'>Kafka</b> 集群部署實踐與性能優化

    寶藏級微服務架構工具合集

    寶藏級熱門微服務架構工具包含Spring Boot、Eclipse Vert.X、Kubernetes、Tyk、RabbitMQ、Apache Kafka等。其中,Spring Boot簡化了微服
    的頭像 發表于 12-21 16:33 ?566次閱讀

    超詳細“零”基礎kafka入門篇

    1、認識kafka 1.1 kafka簡介 Kafka?是一個分布式流媒體平臺 kafka官網:http://kafka.apache.or
    的頭像 發表于 12-18 09:50 ?2636次閱讀
    超詳細“零”基礎<b class='flag-5'>kafka</b>入門篇

    MQ消息亂序問題解析與實戰解決方案

    作者:京東物流 劉浩 1. 背景 在分布式系統中,消息隊列(MQ)是實現系統解耦、異步通信的重要工具。然而,MQ消費時出現的消息亂序問題,經常會對業務邏輯的正確執行和系統穩定性產生不良影響。本文將
    的頭像 發表于 12-06 09:46 ?578次閱讀

    ADS8638的thermal pad引腳應該接到地,還是懸空?

    請問該器件的thermal pad引腳應該接到地,還是懸空?
    發表于 11-14 07:45

    Kafka高性能背后的技術原理

    Kafka 是一款性能非常優秀的消息隊列,每秒處理的消息體量可以達到千萬級別。
    的頭像 發表于 10-23 09:37 ?713次閱讀
    <b class='flag-5'>Kafka</b>高性能背后的技術原理

    一位架構師的自述:在尚未踏入的世界成為你自己

    這是我參與創作者計劃的第1篇文章 ? ? 我叫艾佳,工作經驗14年,編程經驗30年。 我來自智能平臺部,負責標簽平臺、標簽圈人、標簽選品、EasyData、算法數據流的架構工作。 致力于批量
    的頭像 發表于 09-23 15:25 ?540次閱讀
    一位<b class='flag-5'>架構師</b>的自述:在尚未踏入的世界成為你自己

    中級自動駕駛架構師應該學習哪些知識

    隨著自動駕駛技術的成熟,對系統架構師的需求逐漸增加。自動駕駛系統架構師負責設計整個系統的結構、組件、接口和數據流;需要協調不同領域的專業知識,確保系統的可靠性、安全性和性能。總之,自動駕駛系統架構師
    的頭像 發表于 06-20 21:47 ?503次閱讀

    初級自動駕駛架構師應該學習哪些知識

    隨著自動駕駛技術的成熟,對系統架構師的需求逐漸增加。自動駕駛系統架構師負責設計整個系統的結構、組件、接口和數據流;需要協調不同領域的專業知識,確保系統的可靠性、安全性和性能。總之,自動駕駛系統架構師
    的頭像 發表于 06-20 21:45 ?574次閱讀
    主站蜘蛛池模板: 在线亚洲一区 | 国产日本在线观看 | 欧美一级片免费观看 | 在线色网 | 色综合久久久久综合99 | 一级片视频在线观看 | 久久这里只有精品免费视频 | 精品亚洲午夜久久久久 | 国产精品xxxav免费视频 | 天天爱天天做久久天天狠狼 | 成人18毛片| 亚洲一区欧美日韩 | 日韩三级观看 | 91x视频 | 国内露脸夫妇交换精品 | 最猛91大神ben与女教师 | 日本在线www | 性色在线观看 | 久久综合色播 | 国产成人影院 | 伊人久久天堂 | 色屁屁www影院免费观看视频 | 在线观看h视频 | 99久久久精品免费观看国产 | 欧美a一级 | 色综合天天综合网国产国产人 | 性欧美大战久久久久久久久 | 亚洲综合婷婷 | 亚洲免费小视频 | 色中射| 日本xxxxbbbb| 一级特级毛片免费 | 五月情视频在线观看 | 特级做a爰片毛片免费看一区 | 亚洲精品理论 | 女主播扒开内衣让粉丝看个够 | 五月婷婷在线观看视频 | 国模私拍在线视频 | 日韩精品卡4卡5卡6卡7卡 | 日本黄色片免费看 | 片黄免费 |