女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線(xiàn)課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

架構(gòu)師應(yīng)該使用Kafka還是Rabbit MQ

汽車(chē)玩家 ? 來(lái)源:今日頭條 ? 作者:聞數(shù)起舞 ? 2020-05-03 18:10 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

介紹

作為處理許多基于微服務(wù)的系統(tǒng)的軟件架構(gòu)師,我經(jīng)常遇到一個(gè)不斷重復(fù)的問(wèn)題:"我應(yīng)該使用RabbitMQ還是Kafka?" 由于某些原因,許多開(kāi)發(fā)人員認(rèn)為這些技術(shù)是可互換的。 盡管在某些情況下確實(shí)如此,但這些平臺(tái)之間存在各種潛在的差異。

結(jié)果,不同的方案需要不同的解決方案,選擇錯(cuò)誤的方案可能會(huì)嚴(yán)重影響您設(shè)計(jì),開(kāi)發(fā)和維護(hù)軟件解決方案的能力。

本文的目的是首先介紹基本的異步消息傳遞模式。 然后,它將繼續(xù)介紹RabbitMQ和Kafka及其內(nèi)部結(jié)構(gòu)。 第2部分將重點(diǎn)介紹這些平臺(tái)之間的關(guān)鍵區(qū)別,它們的各種優(yōu)缺點(diǎn)以及如何在兩者之間進(jìn)行選擇。

異步消息傳遞模式

異步消息傳遞是一種消息傳遞方案,其中生產(chǎn)者的消息生產(chǎn)與消費(fèi)者的消息處理不相關(guān)。 在處理消息傳遞系統(tǒng)時(shí),我們通常會(huì)確定兩種主要的消息傳遞模式-消息排隊(duì)和發(fā)布/訂閱。

消息隊(duì)列

在消息隊(duì)列通信模式中,隊(duì)列在時(shí)間上使生產(chǎn)者與消費(fèi)者脫鉤。 多個(gè)生產(chǎn)者可以將消息發(fā)送到同一隊(duì)列。 但是,當(dāng)使用者處理郵件時(shí),該郵件將被鎖定或從隊(duì)列中刪除,并且不再可用。 只有一個(gè)消費(fèi)者消費(fèi)一條特定的消息。

架構(gòu)師應(yīng)該使用Kafka還是Rabbit MQ

Message queuing

附帶說(shuō)明一下,如果使用者無(wú)法處理某條消息,則消息傳遞平臺(tái)通常會(huì)將消息返回到隊(duì)列中,以供其他使用者使用。 除了臨時(shí)解耦,隊(duì)列還使我們能夠獨(dú)立地?cái)U(kuò)展生產(chǎn)者和消費(fèi)者的規(guī)模,并提供一定程度的容錯(cuò)能力以應(yīng)對(duì)處理錯(cuò)誤。

發(fā)布/訂閱

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

架構(gòu)師應(yīng)該使用Kafka還是Rabbit MQ

Publish/subscribe

例如,此模式允許發(fā)布者通知所有訂閱者系統(tǒng)中發(fā)生了某些事情。 許多排隊(duì)平臺(tái)通常將pub / sub與術(shù)語(yǔ)主題相關(guān)聯(lián)。 在RabbitMQ中,主題是pub / sub實(shí)現(xiàn)的一種特定類(lèi)型(確切地說(shuō)是一種交換類(lèi)型),但是在本篇文章中,我將主題稱(chēng)為pub / sub整體的表示。

一般而言,訂閱有兩種類(lèi)型:

· 臨時(shí)訂閱,僅在使用者啟動(dòng)并運(yùn)行時(shí),訂閱才處于活動(dòng)狀態(tài)。 使用者關(guān)閉后,其訂閱和尚未處理的消息就會(huì)丟失。

· 長(zhǎng)期訂閱,只要未明確刪除訂閱,訂閱就會(huì)一直保留。 當(dāng)使用者關(guān)閉時(shí),消息傳遞平臺(tái)將維護(hù)訂閱,并且稍后可以恢復(fù)消息處理。

RabbitMQ

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

消息隊(duì)列

RabbitMQ支持開(kāi)箱即用的經(jīng)典消息隊(duì)列。 開(kāi)發(fā)人員定義命名隊(duì)列,然后發(fā)布者可以將消息發(fā)送到該命名隊(duì)列。 消費(fèi)者進(jìn)而使用相同的隊(duì)列來(lái)檢索消息以對(duì)其進(jìn)行處理。

信息交流

RabbitMQ通過(guò)使用消息交換來(lái)實(shí)現(xiàn)pub / sub。 發(fā)布者將其消息發(fā)布到消息交換,而不知道這些消息的訂閱者是誰(shuí)。

每個(gè)希望訂閱交換的消費(fèi)者都會(huì)創(chuàng)建一個(gè)隊(duì)列。 然后,消息交換將產(chǎn)生的消息排隊(duì),以供消費(fèi)者使用。 它還可以基于各種路由規(guī)則為某些訂戶(hù)過(guò)濾消息。

架構(gòu)師應(yīng)該使用Kafka還是Rabbit MQ

RabbitMQ message exchange

請(qǐng)務(wù)必注意,RabbitMQ支持臨時(shí)訂閱和持久訂閱。 消費(fèi)者可以通過(guò)RabbitMQ的API決定要使用的訂閱類(lèi)型。

由于RabbitMQ的體系結(jié)構(gòu),我們還可以創(chuàng)建一種混合方法-一些訂戶(hù)形成消費(fèi)者組,這些消費(fèi)者組以特定隊(duì)列中競(jìng)爭(zhēng)的消費(fèi)者的形式一起處理消息。 通過(guò)這種方式,我們實(shí)現(xiàn)了發(fā)布/訂閱模式,同時(shí)還允許某些訂閱者擴(kuò)大規(guī)模以處理收到的消息。

架構(gòu)師應(yīng)該使用Kafka還是Rabbit MQ

Pub/sub and queuing combined

Apache Kafka

Apache Kafka不是消息代理的實(shí)現(xiàn)。 而是一個(gè)分布式流媒體平臺(tái)。

與基于隊(duì)列和交換的RabbitMQ不同,Kafka的存儲(chǔ)層是使用分區(qū)的事務(wù)日志實(shí)現(xiàn)的。 Kafka還提供用于實(shí)時(shí)處理流的Streams API和可輕松與各種數(shù)據(jù)源集成的Connector API。 但是,這些不在本文的討論范圍之內(nèi)。

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

話(huà)題 Topic

Kafka沒(méi)有實(shí)現(xiàn)隊(duì)列的概念。 相反,Kafka將記錄的集合存儲(chǔ)在稱(chēng)為主題的類(lèi)別中。

對(duì)于每個(gè)主題,Kafka維護(hù)消息的分區(qū)日志。 每個(gè)分區(qū)都是一個(gè)有序的,不可變的記錄序列,在該記錄中連續(xù)附加消息。

當(dāng)這些分區(qū)到達(dá)時(shí),Kafka會(huì)將消息附加到這些分區(qū)。 默認(rèn)情況下,它使用循環(huán)分區(qū)程序在各個(gè)分區(qū)之間均勻分布消息。

生產(chǎn)者可以修改此行為以創(chuàng)建消息的邏輯流。 例如,在多租戶(hù)應(yīng)用程序中,我們可能想根據(jù)每個(gè)消息的租戶(hù)ID創(chuàng)建邏輯消息流。 在物聯(lián)網(wǎng)場(chǎng)景中,我們可能希望不斷將每個(gè)生產(chǎn)者的身份映射到特定分區(qū)。 確保來(lái)自同一邏輯流的所有消息都映射到同一分區(qū),以確保將其傳遞給消費(fèi)者。

架構(gòu)師應(yīng)該使用Kafka還是Rabbit MQ

Kafka producers

使用者通過(guò)維持這些分區(qū)的偏移量(或索引)并順序讀取它們來(lái)消費(fèi)消息。

單個(gè)使用者可以使用多個(gè)主題,并且使用者可以擴(kuò)展到可用分區(qū)的數(shù)量。

因此,在創(chuàng)建主題時(shí),應(yīng)仔細(xì)考慮該主題上消息傳遞的預(yù)期吞吐量。 一起工作以消費(fèi)主題的一組消費(fèi)者稱(chēng)為消費(fèi)群體。 Kafka的API通常會(huì)處理消費(fèi)者組中消費(fèi)者之間的分區(qū)處理與消費(fèi)者當(dāng)前分區(qū)偏移量的存儲(chǔ)之間的平衡。

架構(gòu)師應(yīng)該使用Kafka還是Rabbit MQ

Kafka consumers

使用Kafka實(shí)現(xiàn)消息傳遞模式

Kafka的實(shí)現(xiàn)非常適合pub / sub模式。

生產(chǎn)者可以將消息發(fā)送到特定主題,而多個(gè)消費(fèi)者組可以使用同一條消息。 每個(gè)消費(fèi)者組可以單獨(dú)擴(kuò)展以處理負(fù)載。 由于使用者維護(hù)其分區(qū)偏移量,因此他們可以選擇具有持久性的訂閱,該持久性訂閱在重新啟動(dòng)或臨時(shí)訂閱期間保持其偏移量,這將丟棄偏移量,并在每次啟動(dòng)時(shí)從每個(gè)分區(qū)中的最新記錄重新啟動(dòng)。

但是,它不適用于消息隊(duì)列模式。 當(dāng)然,我們可以只包含一個(gè)消費(fèi)者組來(lái)模擬一個(gè)經(jīng)典消息隊(duì)列。 然而,這有多個(gè)缺點(diǎn)。本文的第2部分將詳細(xì)討論。

請(qǐng)務(wù)必注意,Kafka會(huì)將郵件保留在分區(qū)中,直到預(yù)定的時(shí)間,無(wú)論消費(fèi)者是否消費(fèi)了這些郵件。 這種保留意味著消費(fèi)者可以自由地重讀過(guò)去的消息。 此外,開(kāi)發(fā)人員還可以使用Kafka的存儲(chǔ)層來(lái)實(shí)現(xiàn)各種機(jī)制,例如事件源和審核日志。

進(jìn)一步閱讀

如果您想了解有關(guān)RabbitMQ和Kafka的內(nèi)部實(shí)現(xiàn)的更多信息,我建議您使用以下資源:

· AMQP 0.9.1模型解釋— RabbitMQ

· Apache Kafka簡(jiǎn)介

結(jié)束語(yǔ)

盡管RabbitMQ和Kafka有時(shí)可以互換,但是它們的實(shí)現(xiàn)卻有很大的不同。 因此,我們無(wú)法將它們視為同一類(lèi)工具的成員; 一個(gè)是消息代理,另一個(gè)是分布式流平臺(tái)。

作為解決方案架構(gòu)師,我們應(yīng)該承認(rèn)這些差異,并積極考慮在給定場(chǎng)景下應(yīng)使用哪種類(lèi)型的解決方案。 第2部分解決了這些差異,并提供了何時(shí)使用它們的指南。

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 軟件架構(gòu)
    +關(guān)注

    關(guān)注

    0

    文章

    64

    瀏覽量

    10495
  • kafka
    +關(guān)注

    關(guān)注

    0

    文章

    54

    瀏覽量

    5398
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    Kafka生產(chǎn)環(huán)境應(yīng)用方案

    Apache Kafka作為分布式流處理平臺(tái),在現(xiàn)代大數(shù)據(jù)架構(gòu)中扮演著消息中間件的核心角色。本文將從運(yùn)維工程的角度,詳細(xì)介紹Kafka在生產(chǎn)環(huán)境中的部署方案、配置優(yōu)化、監(jiān)控運(yùn)維等關(guān)鍵
    的頭像 發(fā)表于 07-09 09:56 ?123次閱讀

    如何釋放異構(gòu)計(jì)算的潛能?Imagination與Baya Systems的系統(tǒng)架構(gòu)實(shí)踐啟示

    報(bào)告作者:PallaviSharma,Imaginaiton產(chǎn)品管理總監(jiān)Dr.EricNorige,BayaSystems首席軟件架構(gòu)師關(guān)注Imagination公眾號(hào),消息框發(fā)送【異構(gòu)計(jì)算】,即可
    的頭像 發(fā)表于 06-13 08:33 ?367次閱讀
    如何釋放異構(gòu)計(jì)算的潛能?Imagination與Baya Systems的系統(tǒng)<b class='flag-5'>架構(gòu)</b>實(shí)踐啟示

    單片機(jī)實(shí)例項(xiàng)目:MQ系列模塊資料

    單片機(jī)實(shí)例項(xiàng)目:MQ系列模塊資料,推薦下載!
    發(fā)表于 06-03 21:11

    Kafka工作流程及文件存儲(chǔ)機(jī)制

    Kafka 中消息是以 topic 進(jìn)行分類(lèi)的,生產(chǎn)者生產(chǎn)消息,消費(fèi)者消費(fèi)消息,都是面向 topic 的。
    的頭像 發(fā)表于 05-19 10:14 ?434次閱讀
    <b class='flag-5'>Kafka</b>工作流程及文件存儲(chǔ)機(jī)制

    AD9253對(duì)時(shí)鐘抖動(dòng)的要求怎么樣,應(yīng)該選擇怎樣的時(shí)鐘架構(gòu)

    1:這款芯片支持連續(xù)采樣、沿觸發(fā)和外觸發(fā)工作方式 2:時(shí)鐘必須使用時(shí)鐘芯片配置才行?使用有源晶振是否可以? 3:這款芯片對(duì)時(shí)鐘抖動(dòng)的要求怎么樣,應(yīng)該選擇怎樣的時(shí)鐘架構(gòu)
    發(fā)表于 04-15 06:43

    一個(gè)優(yōu)秀的嵌入式軟件“架構(gòu)師” — AWFlow

    在大型項(xiàng)目的軟件開(kāi)發(fā)過(guò)程中,模塊化開(kāi)發(fā)面臨著接口設(shè)計(jì)不合理、代碼沖突以及模塊間不兼容等問(wèn)題,導(dǎo)致團(tuán)隊(duì)協(xié)作效率低下。為了解決這些問(wèn)題,嵌入式軟件“架構(gòu)師”—AWFlow,應(yīng)運(yùn)而生!在大型項(xiàng)目
    的頭像 發(fā)表于 02-10 16:44 ?531次閱讀
    一個(gè)優(yōu)秀的嵌入式軟件“<b class='flag-5'>架構(gòu)師</b>” — AWFlow

    英特爾前Xeon首席架構(gòu)師加盟高通

    高通公司近日宣布,英特爾前Xeon服務(wù)器處理器首席架構(gòu)師Sailesh Kottapalli已正式加入高通,并擔(dān)任高級(jí)副總裁一職。此舉被視為高通進(jìn)軍數(shù)據(jù)中心CPU市場(chǎng)的重要一步
    的頭像 發(fā)表于 01-15 15:30 ?485次閱讀

    華為云 FlexusX 實(shí)例下的 Kafka 集群部署實(shí)踐與性能優(yōu)化

    前言 華為云 FlexusX 實(shí)例,以創(chuàng)新的柔性算力技術(shù),為 Kafka 集群部署帶來(lái)前所未有的性能飛躍。其靈活的 CPU 與內(nèi)存配比,結(jié)合智能調(diào)度與加速技術(shù),讓 Kafka 在高并發(fā)場(chǎng)景下依然
    的頭像 發(fā)表于 01-07 17:23 ?423次閱讀
    華為云 FlexusX 實(shí)例下的 <b class='flag-5'>Kafka</b> 集群部署實(shí)踐與性能優(yōu)化

    寶藏級(jí)微服務(wù)架構(gòu)工具合集

    寶藏級(jí)熱門(mén)微服務(wù)架構(gòu)工具包含Spring Boot、Eclipse Vert.X、Kubernetes、Tyk、RabbitMQ、Apache Kafka等。其中,Spring Boot簡(jiǎn)化了微服
    的頭像 發(fā)表于 12-21 16:33 ?614次閱讀

    超詳細(xì)“零”基礎(chǔ)kafka入門(mén)篇

    1、認(rèn)識(shí)kafka 1.1 kafka簡(jiǎn)介 Kafka?是一個(gè)分布式流媒體平臺(tái) kafka官網(wǎng):http://kafka.apache.or
    的頭像 發(fā)表于 12-18 09:50 ?3138次閱讀
    超詳細(xì)“零”基礎(chǔ)<b class='flag-5'>kafka</b>入門(mén)篇

    MQ消息亂序問(wèn)題解析與實(shí)戰(zhàn)解決方案

    作者:京東物流 劉浩 1. 背景 在分布式系統(tǒng)中,消息隊(duì)列(MQ)是實(shí)現(xiàn)系統(tǒng)解耦、異步通信的重要工具。然而,MQ消費(fèi)時(shí)出現(xiàn)的消息亂序問(wèn)題,經(jīng)常會(huì)對(duì)業(yè)務(wù)邏輯的正確執(zhí)行和系統(tǒng)穩(wěn)定性產(chǎn)生不良影響。本文將
    的頭像 發(fā)表于 12-06 09:46 ?630次閱讀

    AFE0064的輸入應(yīng)該是電荷信號(hào)還是電流信號(hào)呢?還是都可以?

    想問(wèn)一下,AFE0064的輸入應(yīng)該是電荷信號(hào)還是電流信號(hào)呢?還是都可以?
    發(fā)表于 12-04 06:07

    ADS8638的thermal pad引腳應(yīng)該接到地,還是懸空?

    請(qǐng)問(wèn)該器件的thermal pad引腳應(yīng)該接到地,還是懸空?
    發(fā)表于 11-14 07:45

    Kafka高性能背后的技術(shù)原理

    Kafka 是一款性能非常優(yōu)秀的消息隊(duì)列,每秒處理的消息體量可以達(dá)到千萬(wàn)級(jí)別。
    的頭像 發(fā)表于 10-23 09:37 ?772次閱讀
    <b class='flag-5'>Kafka</b>高性能背后的技術(shù)原理

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

    這是我參與創(chuàng)作者計(jì)劃的第1篇文章 ? ? 我叫艾佳,工作經(jīng)驗(yàn)14年,編程經(jīng)驗(yàn)30年。 我來(lái)自智能平臺(tái)部,負(fù)責(zé)標(biāo)簽平臺(tái)、標(biāo)簽圈人、標(biāo)簽選品、EasyData、算法數(shù)據(jù)流的架構(gòu)工作。 致力于批量
    的頭像 發(fā)表于 09-23 15:25 ?569次閱讀
    一位<b class='flag-5'>架構(gòu)師</b>的自述:在尚未踏入的世界成為你自己