国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

怎么去選消息隊(duì)列? Kafka vs. RabbitMQ

這篇具有很好參考價(jià)值的文章主要介紹了怎么去選消息隊(duì)列? Kafka vs. RabbitMQ。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

在上周,我們討論了使用消息隊(duì)列的好處。然后我們回顧了消息隊(duì)列產(chǎn)品的發(fā)展歷史。如今,在項(xiàng)目中需要使用消息隊(duì)列時(shí),Apache Kafka似乎是首選產(chǎn)品。然而,考慮到特定需求時(shí),它并不總是最佳選擇。

基于數(shù)據(jù)庫(kù)的隊(duì)列

讓我們?cè)俅问褂眯前涂说睦?。最重要的兩個(gè)需求是:

?異步處理,使收銀員可以在不等待的情況下接下一個(gè)訂單。?持久性,以防出現(xiàn)問題時(shí)錯(cuò)過顧客的訂單。

在這里,消息的順序不太重要,因?yàn)榭Х葞熃?jīng)常批量制作相同的飲料。可擴(kuò)展性也不是很重要,因?yàn)殛?duì)列受限于每個(gè)星巴克門店。

星巴克的隊(duì)列可以在數(shù)據(jù)庫(kù)表中實(shí)現(xiàn)。下面的圖表顯示了它的工作原理:

怎么去選消息隊(duì)列? Kafka vs. RabbitMQ,kafka,rabbitmq,分布式
?

當(dāng)收銀員接受一個(gè)訂單時(shí),在數(shù)據(jù)庫(kù)支持的隊(duì)列中創(chuàng)建一個(gè)新訂單。然后收銀員可以繼續(xù)接受另一個(gè)訂單,而咖啡師則會(huì)批量獲取新的訂單。一旦訂單完成,咖啡師會(huì)在數(shù)據(jù)庫(kù)中標(biāo)記為已完成。然后顧客可以在柜臺(tái)上取走他們的咖啡。

每天結(jié)束時(shí)可以運(yùn)行一個(gè)維護(hù)作業(yè)來(lái)刪除已完成的訂單(即“DONE”狀態(tài)的訂單)。

對(duì)于星巴克的用例,一個(gè)簡(jiǎn)單的數(shù)據(jù)庫(kù)隊(duì)列可以在不需要使用Kafka的情況下滿足需求。具有CRUD(創(chuàng)建-讀取-更新-刪除)操作的訂單表就可以勝任。

基于Redis的隊(duì)列

基于數(shù)據(jù)庫(kù)的消息隊(duì)列仍然需要開發(fā)工作來(lái)創(chuàng)建隊(duì)列表并從中讀取/寫入數(shù)據(jù)。對(duì)于預(yù)算有限且已經(jīng)使用Redis進(jìn)行緩存的小型創(chuàng)業(yè)公司,Redis也可以用作消息隊(duì)列。

有三種使用Redis作為消息隊(duì)列的方法:

1.發(fā)布/訂閱(Pub/Sub)2.列表(List)3.流(Stream)

下面的圖表顯示了它們的工作原理。

怎么去選消息隊(duì)列? Kafka vs. RabbitMQ,kafka,rabbitmq,分布式

發(fā)布/訂閱是方便的,但有一些傳遞限制。消費(fèi)者訂閱一個(gè)鍵,當(dāng)生產(chǎn)者向相同的鍵發(fā)布數(shù)據(jù)時(shí),消費(fèi)者會(huì)接收數(shù)據(jù)。限制在于數(shù)據(jù)最多只會(huì)傳遞一次。如果消費(fèi)者關(guān)閉并且未接收到已發(fā)布的數(shù)據(jù),則該數(shù)據(jù)會(huì)丟失。此外,數(shù)據(jù)不會(huì)持久保存在磁盤上。如果Redis宕機(jī),所有發(fā)布/訂閱數(shù)據(jù)都會(huì)丟失。發(fā)布/訂閱適用于度量監(jiān)視等情況,其中可以接受一些數(shù)據(jù)丟失。

Redis中的列表數(shù)據(jù)結(jié)構(gòu)可以構(gòu)建FIFO(先進(jìn)先出)隊(duì)列。消費(fèi)者使用BLPOP以阻塞模式等待消息,因此應(yīng)該應(yīng)用超時(shí)。等待相同列表的消費(fèi)者形成一個(gè)消費(fèi)者組,每個(gè)消息只由一個(gè)消費(fèi)者消費(fèi)。作為Redis數(shù)據(jù)結(jié)構(gòu),列表可以持久保存在磁盤上。

流解決了上述兩種方法的限制。消費(fèi)者可以選擇從何處讀取消息 - 使用“$”表示新消息,“”表示特定消息ID,或使用“0-0”從開始讀取消息。

總而言之,基于數(shù)據(jù)庫(kù)和基于Redis的消息隊(duì)列易于維護(hù)。如果它們無(wú)法滿足我們的需求,專用的消息隊(duì)列產(chǎn)品更好。接下來(lái)我們將比較兩個(gè)流行的選項(xiàng)。

RabbitMQ vs. Kafka

對(duì)于需要可靠、可擴(kuò)展和可維護(hù)的系統(tǒng)的大公司,在以下方面評(píng)估消息隊(duì)列產(chǎn)品:

?功能?性能?可擴(kuò)展性?生態(tài)系統(tǒng)

下面的圖表比較了兩種典型的消息隊(duì)列產(chǎn)品:RabbitMQ和Kafka。

怎么去選消息隊(duì)列? Kafka vs. RabbitMQ,kafka,rabbitmq,分布式

工作原理

RabbitMQ的工作方式類似于消息中間件 - 它將消息推送給消費(fèi)者,然后在確認(rèn)后將其刪除。這避免了消息積壓,這是RabbitMQ認(rèn)為有問題的。

Kafka最初是為大規(guī)模日志處理而構(gòu)建的。它會(huì)保留消息直到過期,并允許消費(fèi)者以自己的速度拉取消息。

語(yǔ)言和API

RabbitMQ是用Erlang編寫的,這使得修改核心代碼變得具有挑戰(zhàn)性。然而,它提供了非常豐富的客戶端API和庫(kù)支持。

Kafka使用Scala和Java,但也有針對(duì)流行語(yǔ)言(如Python、Ruby 和Node.js)的客戶端庫(kù)和API。

性能和可擴(kuò)展性

RabbitMQ每秒可以處理數(shù)萬(wàn)條消息。即使在更好的硬件上,吞吐量也不會(huì)大幅提高。

Kafka可以處理數(shù)百萬(wàn)條每秒的消息,并具有很高的可擴(kuò)展性。

生態(tài)系統(tǒng)

許多現(xiàn)代大數(shù)據(jù)和流式應(yīng)用程序默認(rèn)集成了Kafka。這使得它非常適合這些用例。

消息隊(duì)列用例

既然我們已經(jīng)介紹了不同消息隊(duì)列的特點(diǎn),讓我們看一些如何選擇正確產(chǎn)品的示例。

日志處理與分析

對(duì)于具有購(gòu)物車、訂單和付款等服務(wù)的電子商務(wù)網(wǎng)站,我們需要分析日志以調(diào)查顧客訂單。

下面的圖表顯示了使用“ELK”堆棧的典型架構(gòu):

?ElasticSearch - 為全文搜索索引日志?LogStash - 日志收集代理?Kibana - 用于搜索和可視化日志的用戶界面?Kafka - 分布式消息隊(duì)列文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-665309.html

怎么去選消息隊(duì)列? Kafka vs. RabbitMQ,kafka,rabbitmq,分布式 希望這篇文章對(duì)你們有所幫助~ 日更不易,喜歡的話歡迎點(diǎn)贊、收藏、關(guān)注哈

到了這里,關(guān)于怎么去選消息隊(duì)列? Kafka vs. RabbitMQ的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【面試需了解之消息隊(duì)列】RocketMQ、kafka、RabbitMQ概述

    消息隊(duì)列說(shuō)明:RocketMQ、kafka、RabbitMQ概述及關(guān)鍵概念 概述 消息隊(duì)列中間件是分布式系統(tǒng)中重要的組件,主要解決應(yīng)用耦合,異步消息,流量控制等問題。實(shí)現(xiàn)高性能、高可用、可伸縮和最終一致性架構(gòu),是大型分布式系統(tǒng)不可缺少的中間件 作用 異構(gòu)系統(tǒng)消息傳遞:上游系統(tǒng)

    2024年02月10日
    瀏覽(62)
  • Java中如何使用消息隊(duì)列實(shí)現(xiàn)異步(ActiveMQ,RabbitMQ,Kafka)

    在 Java 中,可以使用消息隊(duì)列實(shí)現(xiàn)異步處理。下面是一個(gè)簡(jiǎn)單的示例代碼,用于說(shuō)明如何使用 ActiveMQ 實(shí)現(xiàn)消息隊(duì)列異步處理: 添加 ActiveMQ 依賴 在 pom.xml 文件中添加以下依賴: 創(chuàng)建消息隊(duì)列 創(chuàng)建一個(gè)名為 “TestQueue” 的消息隊(duì)列,并配置 ActiveMQ 連接信息: 創(chuàng)建消息消費(fèi)者

    2024年02月16日
    瀏覽(33)
  • 基于golang多消息隊(duì)列中間件的封裝nsq,rabbitmq,kafka

    場(chǎng)景 在創(chuàng)建個(gè)人的公共方法庫(kù)中有這樣一個(gè)需求,就是不同的項(xiàng)目會(huì)用到不同的消息隊(duì)列中間件,我的思路把所有的消息隊(duì)列中間件進(jìn)行封裝一個(gè)消息隊(duì)列接口(MQer)有兩個(gè)方法一個(gè)生產(chǎn)一個(gè)消費(fèi),那么在實(shí)例化對(duì)象的時(shí)候根據(jù)配置文件指定當(dāng)前項(xiàng)目使用的那個(gè)消息隊(duì)列中

    2024年02月14日
    瀏覽(93)
  • 消息隊(duì)列黃金三劍客:RabbitMQ、RocketMQ和Kafka全面對(duì)決,誰(shuí)是最佳選擇?

    消息隊(duì)列黃金三劍客:RabbitMQ、RocketMQ和Kafka全面對(duì)決,誰(shuí)是最佳選擇?

    1.RabbitMQ: 適用于易用性和靈活性要求較高的場(chǎng)景 異步任務(wù)處理:RabbitMQ提供可靠的消息傳遞機(jī)制,適用于處理異步任務(wù),例如將耗時(shí)的任務(wù)放入消息隊(duì)列中,然后由消費(fèi)者異步處理,提高系統(tǒng)的響應(yīng)速度和可伸縮性。 解耦系統(tǒng)組件:通過使用RabbitMQ作為消息中間件,不同的

    2024年02月14日
    瀏覽(18)
  • 消息隊(duì)列之六脈神劍:RabbitMQ、Kafka、ActiveMQ 、Redis、 ZeroMQ、Apache Pulsar對(duì)比和如何使用

    消息隊(duì)列(Message Queue)是一種異步通信機(jī)制,它將消息發(fā)送者和接收者解耦,從而提高了應(yīng)用程序的性能、可擴(kuò)展性和可靠性。在分布式系統(tǒng)中,消息隊(duì)列經(jīng)常被用于處理高并發(fā)、異步處理、應(yīng)用解耦等場(chǎng)景。 本篇回答將分析比較常見的六種消息隊(duì)列:RabbitMQ、Kafka、Active

    2024年02月14日
    瀏覽(19)
  • rabbitMq怎么查看隊(duì)列消息-Tracing日志

    rabbitMq怎么查看隊(duì)列消息-Tracing日志

    Trace 是Rabbitmq用于記錄每一次發(fā)送的消息,方便使用Rabbitmq的開發(fā)者調(diào)試、排錯(cuò)。 1、啟動(dòng)Tracing插件 在RabbitMQ中默認(rèn)是關(guān)閉的,需手動(dòng)開啟。此處rabbitMQ是使用docker部署的 開啟了插件后,無(wú)需重啟,rabbitMq管理界面就會(huì)出現(xiàn)Tracing項(xiàng),可新建追蹤。 2、新建trace 新建trace時(shí),JSON模

    2024年02月12日
    瀏覽(20)
  • 消息中間件,RabbitMQ,kafka常見面試題

    RabbitMQ和Kafka都是消息隊(duì)列系統(tǒng),可以用于流處理。流處理是指對(duì)高速、連續(xù)、增量的數(shù)據(jù)進(jìn)行實(shí)時(shí)處理。 RabbitMQ 和 Kafka 的相同點(diǎn)有以下幾個(gè): 都是消息隊(duì)列系統(tǒng),可以用于流處理、異步通信、解耦等場(chǎng)景 都是開源的,有活躍的社區(qū)和豐富的文檔 都支持分布式部署,具有高

    2024年02月04日
    瀏覽(38)
  • Kafka、RocketMQ、RabbitMQ如何保證消息的順序消費(fèi)?

    一、1個(gè)Topic(主題)只創(chuàng)建1個(gè)Partition (分區(qū)),這樣生產(chǎn)者的所有數(shù)據(jù)都發(fā)送到了一個(gè)Partition (分區(qū)),保證了消息的消費(fèi)順序; 二、生產(chǎn)者在發(fā)送消息的時(shí)候指定要發(fā)送到哪個(gè) Partition,這樣同一個(gè) Partition 的數(shù)據(jù)會(huì)被同一個(gè)消費(fèi)者消費(fèi),從而保證了消息的消費(fèi)順序。 實(shí)現(xiàn)思路

    2024年02月09日
    瀏覽(24)
  • Debezium vs OGG vs Tapdata:如何實(shí)時(shí)同步 Oracle 數(shù)據(jù)到 Kafka 消息隊(duì)列?

    Debezium vs OGG vs Tapdata:如何實(shí)時(shí)同步 Oracle 數(shù)據(jù)到 Kafka 消息隊(duì)列?

    隨著信息時(shí)代的蓬勃發(fā)展,企業(yè)對(duì)實(shí)時(shí)數(shù)據(jù)處理的需求逐漸成為推動(dòng)業(yè)務(wù)創(chuàng)新和發(fā)展的重要驅(qū)動(dòng)力。在這個(gè)快速變化的環(huán)境中,許多企業(yè)選擇將 Oracle 數(shù)據(jù)庫(kù)同步到 Kafka,以滿足日益增長(zhǎng)的實(shí)時(shí)數(shù)據(jù)處理需求。本文將深入探討這一趨勢(shì)的背后原因,并通過一個(gè)真實(shí)的客戶案例

    2024年04月10日
    瀏覽(22)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包