色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

    瀏覽量

    10302
  • kafka
    +關注

    關注

    0

    文章

    52

    瀏覽量

    5236
收藏 人收藏

    評論

    相關推薦

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

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

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

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

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

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

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

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

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

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

    AFE0064的輸入應該是電荷信號還是電流信號呢?還是都可以?

    想問一下,AFE0064的輸入應該是電荷信號還是電流信號呢?還是都可以?
    發表于 12-04 06:07

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

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

    Kafka高性能背后的技術原理

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

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

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

    AMD Vitis統一軟件平臺2024.1全新發布

    通過新版本,系統架構師和開發者可以進一步優化設計開發流程,同時提升整體系統性能。
    的頭像 發表于 09-18 09:34 ?478次閱讀

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

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

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

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

    面試官:Kafka會丟消息嗎?

    許多開發人員普遍認為,Kafka 的設計本身就能保證不會丟失消息。然而,Kafka 架構和配置的細微差別會導致消息的丟失。我們需要了解它如何以及何時可能丟失消息,并防止此類情況的發生。
    的頭像 發表于 04-29 17:32 ?1066次閱讀
    面試官:<b class='flag-5'>Kafka</b>會丟消息嗎?

    Redis流與Kafka相比如何?

    我們先來看看Kafka的基本架構。基本的數據結構是主題。它是一個按時間排序的記錄序列,只需追加。使用這種數據結構的好處在Jay Kreps的經典博文The Log中得到了很好的描述。
    的頭像 發表于 02-21 16:09 ?500次閱讀
    Redis流與<b class='flag-5'>Kafka</b>相比如何?

    arm架構和x86架構區別 linux是x86還是arm

    ARM架構和x86架構是兩種不同的計算機處理器架構,它們在體系結構、指令集、應用領域等方面有著明顯的區別。Linux操作系統則具有廣泛的適配性,可以運行在各種架構上,包括x86和ARM
    的頭像 發表于 01-30 13:46 ?1.9w次閱讀
    主站蜘蛛池模板: 国产在线综合色视频 | 久久国产精品萌白酱免费 | 99久久精品国产亚洲AV | 在线观看中文字幕国产 | 欧美亚洲日韩国码在线观看 | 日本片bbbxxx | 精品丰满人妻无套内射 | 一级毛片两人添下面 | 国内国外精品影片无人区 | 九九热这里只有精品视频免费 | 久久亚洲精品无码A片大香大香 | 日本理论片午午伦夜理片2021 | 美女乱草鲍高清照片 | 欧美日韩一区在线观看 | 九九99热久久精品在线6 | 麻豆一二三四区乱码 | 影音先锋亚洲AV少妇熟女 | 亚洲国产精品特色大片观看 | 四房播播最新地址 | 大学生一级毛片免费看 | 夫妻性姿势真人做视频 | 最近中文字幕2018MV高清在线 | 国产 亚洲 中文在线 字幕 | 久久综合久综合久久鬼色 | 超碰97人在线视频 | md2.pud 麻豆传媒官网 | 一本色道久久综合亚洲AV蜜桃 | 人妻免费久久久久久久了 | 99久久国语露脸精品国产 | 亚洲中文字幕国产综合 | 2019午夜75福利不卡片在线 | 99热久久久无码国产精品性麻豆 | 亚洲精品免播放器在线观看 | 制服国产欧美亚洲日韩 | 亚洲一区自拍高清亚洲精品 | 亚洲欧美国产综合在线一区 | 777米奇色狠狠俺去啦 | 白嫩美女直冒白浆 | 日韩在线av免费视久久 | 无人影院在线播放视频 | 国产精品国产三级国AV在线观看 |