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

RabbitMQ具有什么優(yōu)勢,為什么好多公司依然選擇 RabbitMQ

RabbitMQ 這個消息隊列相信很多程序員都用過,我第一次使用是在 2016 年,確實是一個老牌的消息隊列了,但是為什么一直沒有被淘汰呢?今天來聊一聊這個話題。

為什么說RabbitMQ老舊差

發(fā)布歷史

為什么說 RabbitMQ 老呢?下圖是 RabbitMQ 最早的發(fā)布記錄,可以看到 RabbitMQ 在 2007 年已經(jīng)發(fā)布,已經(jīng)有 16 年多的使用歷史了。

RabbitMQ 使用歷史

為什么說 RabbitMQ 比較小眾呢?

一方面 RabbitMQ 使用 Erlang 語言編寫,這是一個比較小眾的編程語言,學(xué)習(xí)成本非常高,不像 Java、Scala、C 等編程語言學(xué)起來簡單。所以雖然 RabbitMQ 也是開源的消息隊列,但基于 RabbitMQ 做擴展和二次開發(fā)的情況是很少的。

另一方面從使用的協(xié)議來看,RabbitMQ 支持 AMQP(Advanced Message Queuing Protocol) 協(xié)議,這也是主流消息隊列不支持的。

AMQP 協(xié)議如下圖:

AMQP 協(xié)議

有幾個概念介紹一下:

  • Connection:一個網(wǎng)絡(luò)連接,AMQP 協(xié)議通常使用長連接;

  • Channel:網(wǎng)絡(luò)信道,建立在 Connection 之上的輕量級的連接,一個 Connection 可以有多個 Channel;

  • Exchange:交換器,接收消息后將消息路由轉(zhuǎn)發(fā)給綁定(Binding)的 Queue;

  • Binding:Exchange 和 Queue 之間的虛擬連接;

  • Routing Key:這個概念在圖中沒有畫,是指路由規(guī)則,用來確定 Exchange 將消息路由到哪些 Queue。

可以看到,好多概念在主流的消息隊列比如 Kafka、RocketMQ 是沒有的,所以說 RabbitMQ 比較小眾。

性能差

在底層消息持久化的方式上,RabbitMQ 并沒有使用 MMAP、Sendfile 等零拷貝技術(shù),這是性能差的一個重要原因。

在架構(gòu)上,RabbitMQ 提供了鏡像隊列來做 Master 的備份。如下圖:

RabbitMQ架構(gòu)

無論生產(chǎn)者發(fā)送消息,還是消費者拉取消息,如果請求發(fā)送到鏡像隊列,則鏡像隊列需要把請求轉(zhuǎn)發(fā)到 Master 進行處理,Master 處理后再把結(jié)果回復(fù)給鏡像節(jié)點,鏡像隊列回復(fù)給請求者。

在特定硬件環(huán)境下,RabbitMQ 支持的消息吞吐量在萬級~十萬級,相比 RocketMQ 的十萬級~百萬級和 Kafka 的百萬級以上,吞吐量還是差一些。

為什么受歡迎?

從我過往的公司、身邊的一些朋友、面試過的候選人簡歷可以看出,好多公司消息隊列技術(shù)選型時選擇了 RabbitMQ,這跟 RabbitMQ 老舊和性能差形成鮮明對比。

RabbitMQ 為什么這么受歡迎呢?

持續(xù)更新

雖然 RabbitMQ 老舊,但是并沒有停止更新,而且更新還挺頻繁,下圖是 2023 年最近發(fā)布的幾個版本:

 2023 年最近發(fā)布的幾個版本

從 2007 年開始,RabbitMQ 已經(jīng)有 16 年的使用歷史,可以稱得上是一個久經(jīng)考驗的戰(zhàn)士,各種問題已經(jīng)修復(fù),學(xué)習(xí)資料豐富,性能穩(wěn)定。

運維簡單

RabbitMQ 是一個非常輕量級的消息隊列,官方宣稱開箱即用。在 Docker 上部署 RabbitMQ,三個命令就可以。

  1. 拉取鏡像
docker pull rabbitmq:3.8.2-management
  1. 創(chuàng)建路徑
mkdir /var/lib/rabbitmq
  1. 啟動容器
docker run -d --name rabbitmq3.8.2 -p 5672:5672 -p 15672:15672 -v `pwd`/data:/var/lib/rabbitmq --hostname myRabbit -e RABBITMQ_DEFAULT_VHOST=my_vhost -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=admin --privileged=true

這種開箱即用的效果,大大降低了學(xué)習(xí)成本和運維成本。

靈活路由

依托于 AMQP 中的 Exchange,RabbitMQ 提供了靈活的路由配置,有 4 種。

  1. Direct Exchange

生產(chǎn)者將消息發(fā)送給 Exchange 后,Exchange 通過 Routing Key 把消息路由到對應(yīng)的隊列。如下圖(來自官網(wǎng)):

Direct Exchange

  1. Fanout Exchange

生產(chǎn)者將消息發(fā)送給 Exchange 后,Exchange 將消息路由到所有綁定的隊列,類似于廣播模式。如下圖(來自官網(wǎng)):

Fanout Exchange

  1. Topic Exchange

這種路由策略首先定義一個 Topic,topic 中可以包含 * 和 #。* 可以代表一個單詞,# 可以代表 0 或多個單詞。如下圖(來自官網(wǎng)):

Topic Exchange

圖中 Topic 由三個單詞<celerity>.<colour>.<species>組成,分別代表特征、顏色和物種,單詞之間用.間隔。這樣 Q1 將接收顏色為 orange 的所有消息,Q2 將接收物種為 rabbit 的消息和特征為 lazy 的消息。

  1. Headers Exchange

這種路由策略要求消息中需要攜帶 Headers(類似 Http 中的消息頭),隊列跟 Routing Key 綁定時也要定義一個 Headers,只有綁定中定義的 Headers 跟消息中的 Header 匹配,才會路由到相應(yīng)的隊列。匹配規(guī)則有兩種:

  • ALL:要求兩個 Headers 中所有 key 和 value 匹配;
  • ANY:要求兩個 Headers 任何一個 key 和 value 匹配。

如下圖:

8.png

這種路由方式在定義綁定關(guān)系的時候就需要定義 Headers,如下代碼:

@Bean
public Binding binding1(HeadersExchange headersExchange,Queue queue1){
 HashMap<String, Object> headers = new HashMap<>();
 headers.put("key1","aaa");
 headers.put("key2","bbb");
 return BindingBuilder.bind(queue1).to(headersExchange).whereAll(headers).match();
}

public Binding binding2(HeadersExchange headersExchange,Queue queue2){
 HashMap<String, Object> headers = new HashMap<>();
 headers.put("key1","aaa");
 headers.put("key2","bbb");
 return BindingBuilder.bind(queue2).to(headersExchange).whereAny(headers).match();
}

客戶端豐富

RabbitMQ 客戶端支持的編程語言是消息隊列中最多的,很容易兼容自己系統(tǒng)使用的編程語言。參考下圖(來自官網(wǎng)):

 客戶端支持的編程語言

總結(jié)

RabbitMQ 雖然老舊,但具有運維簡單、靈活路由、客戶端豐富等特性。雖然吞吐量不高,但性能足夠滿足中小企業(yè)的使用需求。這讓 RabbitMQ 成為非常受歡迎的消息隊列。文章來源地址http://www.zghlxwxcb.cn/article/668.html

到此這篇關(guān)于RabbitMQ具有什么優(yōu)勢,為什么好多公司依然選擇 RabbitMQ的文章就介紹到這了,更多相關(guān)內(nèi)容可以在右上角搜索或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

原文地址:http://www.zghlxwxcb.cn/article/668.html

如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請聯(lián)系站長進行投訴反饋,一經(jīng)查實,立即刪除!

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

相關(guān)文章

  • 公司為什么選擇云數(shù)據(jù)庫?它的魅力到底是什么!

    亞馬遜云科技提供了100余種產(chǎn)品免費套餐。其中,計算資源Amazon EC2首年12個月免費,750小時/月;存儲資源 Amazon S3 首年12個月免費,5GB標(biāo)準(zhǔn)存儲容量;數(shù)據(jù)庫資源 Amazon RDS 首年12個月免費,750小時;Amazon Dynamo DB 25GB存儲容量 永久免費。) 談到數(shù)據(jù)庫想必我們都不陌生,其中主流

    2024年02月04日
    瀏覽(24)
  • 為什么越來越多公司開始用低代碼開發(fā)?

    為什么越來越多公司開始用低代碼開發(fā)?

    時代洪流的走向,我們無法左右,能夠把握的,只有做好自己。如何在寒冬來之不易的機會中,生存并且壯大。 不知道大家有沒有發(fā)現(xiàn),今年的低代碼賽道異?;馃幔馃岬谋澈蟛胖档盟伎?,市場需求持續(xù)被挖掘,是什么造就了目前諸多低代碼平臺的井噴? 在低代碼應(yīng)用

    2024年02月04日
    瀏覽(24)
  • 【Linux(0)】為什么要學(xué)習(xí)Linux,為什么互聯(lián)網(wǎng)公司在招聘時,會提出要有Linux經(jīng)驗,及其使用;一些Linux常見指令

    【Linux(0)】為什么要學(xué)習(xí)Linux,為什么互聯(lián)網(wǎng)公司在招聘時,會提出要有Linux經(jīng)驗,及其使用;一些Linux常見指令

    ??作者簡介: 加油,旭杏,目前大二,正在學(xué)習(xí) C++ , 數(shù)據(jù)結(jié)構(gòu) 等?? ??作者主頁:加油,旭杏的主頁?? ?本文收錄在:再識C進階的專欄?? ??代碼倉庫:旭日東升 1?? ??歡迎大家點贊 ?? 收藏 ? 加關(guān)注哦!?? ???????在學(xué)習(xí)完C語言后,緊接著,我們要來 學(xué)習(xí)Li

    2024年02月05日
    瀏覽(21)
  • 阿里云有哪些優(yōu)勢?為什么選擇阿里云?

    阿里云有哪些優(yōu)勢?為什么選擇阿里云?

    為什么選擇阿里云?阿里云服務(wù)器有哪些優(yōu)勢?阿里云全球第三,國內(nèi)第一云,阿里云服務(wù)器網(wǎng)aliyunfuwuqi.com分享云服務(wù)器ECS在豐富ECS實例架構(gòu)、彈性靈活、穩(wěn)定可靠、便捷易用、安全保障和成本優(yōu)化多方面優(yōu)勢: 阿里云服務(wù)器ECS(Elastic Compute Service)是一種產(chǎn)品豐富、安全可

    2024年01月17日
    瀏覽(23)
  • 阿里云為什么是國內(nèi)第一云?有哪些優(yōu)勢?

    阿里云為什么是國內(nèi)第一云?有哪些優(yōu)勢?

    為什么選擇阿里云?阿里云服務(wù)器有哪些優(yōu)勢?阿里云全球第三,國內(nèi)第一云,阿里云服務(wù)器網(wǎng)aliyunfuwuqi.com分享云服務(wù)器ECS在豐富ECS實例架構(gòu)、彈性靈活、穩(wěn)定可靠、便捷易用、安全保障和成本優(yōu)化多方面優(yōu)勢: 阿里云服務(wù)器ECS(Elastic Compute Service)是一種產(chǎn)品豐富、安全可

    2024年01月16日
    瀏覽(19)
  • 華為云CDN為什么成為企業(yè)首選?四大優(yōu)勢助力企業(yè)騰飛

    華為云CDN為什么成為企業(yè)首選?四大優(yōu)勢助力企業(yè)騰飛

    隨著數(shù)字經(jīng)濟時代的逐步推進,越來越多的企業(yè)意識到,數(shù)字化轉(zhuǎn)型的重要性,也越來越多的企業(yè)了解到,云服務(wù)和CDN對于他們的重要。而在眾多的云服務(wù)平臺里,華為云CDN就受到了大量用戶的信任和支持,而這其實是源于華為云CDN的四大優(yōu)勢。 ? 華為云CDN究竟是什么?工作

    2024年02月06日
    瀏覽(20)
  • 為什么現(xiàn)代企業(yè)都在使用ERP系統(tǒng) 它有哪些優(yōu)勢

    為什么現(xiàn)代企業(yè)都在使用ERP系統(tǒng) 它有哪些優(yōu)勢

    隨著科技的不斷發(fā)展,企業(yè)管理方式也在不斷地發(fā)生改變。在這個信息化的時代,企業(yè)要想取得成功,必須要善于利用先進的信息化技術(shù)工具。其中, ERP系統(tǒng) 是企業(yè)管理中不可或缺的重要工具。本文將探討現(xiàn)代企業(yè)為什么會使用ERP系統(tǒng),并介紹其主要優(yōu)勢。 一、ERP系統(tǒng)的定

    2023年04月12日
    瀏覽(26)
  • RABBITMQ為什么要使用

    面試官問這個問題,肯定是想知道你們公司有一個什么場景需要使用到這個Mq,這個場景有一個什么技術(shù)挑戰(zhàn)導(dǎo)致必須要用這個mq,用了這個mq之后有什么好處。mq經(jīng)典的使用場景有 解耦,異步,削鋒 。 異步通信: 當(dāng)一個系統(tǒng)收到請求,需要在自己系統(tǒng)處理數(shù)據(jù),處理完后,

    2024年02月04日
    瀏覽(21)
  • 【云服務(wù)器】對比傳統(tǒng)服務(wù)器,為什么說云服務(wù)器更具優(yōu)勢?

    【云服務(wù)器】對比傳統(tǒng)服務(wù)器,為什么說云服務(wù)器更具優(yōu)勢?

    個人主頁:【??個人主頁】 系列專欄:【??其他領(lǐng)域】 2006年搜索引擎大會上,“云服務(wù)器”的概念孕育而生,時至今日云服務(wù)器與傳統(tǒng)服務(wù)器的優(yōu)劣對比仍在各大論壇進行著激烈論爭。但我們不可否認的是云服務(wù)器早已正式走入公眾視野,滲透到了我們工作和生活的各個

    2024年02月05日
    瀏覽(23)
  • RabbitMQ到底為什么要使用它?

    RabbitMQ到底為什么要使用它?

    一個技術(shù)的衍生必然是為了解決現(xiàn)實出現(xiàn)的問題,在講這個問題之前我們先了解一下傳統(tǒng)開發(fā)中關(guān)于服務(wù)調(diào)用出現(xiàn)的問題(痛點)有哪些? 在多服務(wù)體系架構(gòu)中,必然存在著 多個服務(wù)之間的調(diào)用關(guān)系 ,當(dāng)用戶提交了訂單,訂單服務(wù)會調(diào)用支付服務(wù)執(zhí)行用戶的金錢操作,執(zhí)行

    2024年02月16日
    瀏覽(29)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包