91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何理解RabbitMQ核心概念和AMQP協議

發布時間:2021-10-12 09:30:26 來源:億速云 閱讀:127 作者:iii 欄目:編程語言

本篇內容主要講解“如何理解RabbitMQ核心概念和AMQP協議”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“如何理解RabbitMQ核心概念和AMQP協議”吧!

目錄  

前言

1. 初識RabbitMQ

2. 互聯網大廠為什么選擇RabbitMQ?

3. RabbiMQ的高性能之道是如何做到的?

4. 什么是AMQP高級消息隊列協議?

5. AMQP核心概念是什么?

6. RabbitMQ整體架構模型是什么樣子的?

7. RabbitMQ消息是如何流轉的?

前言

本章學習,我們可以了解到以下知識點:

  • 互聯網大廠為什么選擇RabbitMQ?

  • RabbiMQ的高性能之道是如何做到的?

  • 什么是AMQP高級協議?

  • AMQP核心概念是什么?

  • RabbitMQ整體架構模型是什么樣子的?

  • RabbitMQ消息是如何流轉的?

1. 初識RabbitMQ

RabbitMQ 是一個開源的消息代理和隊列服務器,用來通過普通協議在完全不同的應用之間共享數據(RabbitMQ能夠實現跨語言跨平臺的機制,),RabbitMQ是使用Erlang語言來編寫的,并且RabbitMQ是基于AMQP協議的。

僅僅通過上面一句話,相信大家一定有很多疑惑和問題。

  • RabbitM成熟度到底怎么樣?

  • 業界使用度怎么樣?哪些大廠在使用?為什么?

  • 包括RabbitMQ到底都有哪些特點?

  • RabbitMQ為什么要用Erlang語言去編寫?

  • 什么是AMQP協議?AMQP協議里面的具體的規范又是什么?

我相信大家跟我一樣都會有這樣的疑惑。那么我們一起來學習一RabbitMQ吧。

我們來了解第一個問題。

2. 互聯網大廠為什么選擇RabbitMQ?

業界使用度怎么樣?哪些大廠在使用?為什么?都有哪些優點?
據我了解:滴滴、美團、去哪兒、頭條…

這些互聯網大廠都會采用RabbitMQ作為它底層的消息通信的一個基礎組件。根本原因:

  1. 開源、性能優秀、穩定性保障

  2. 提供可靠性消息投遞模式(confirm)、返回模式(return)

  3. 與SpringAMQP完美的整合、擴展性變得更強、API豐富

  4. 集群模式豐富、表達式配置、HA(高可用)模式、鏡像隊列模型

  5. 保證數據不丟失的前提下做到高可靠性、可用性

3. RabbiMQ的高性能之道是如何做到的?

原因就在于它使用了Erlang語言,Erlang語言最初在于交換機領域的架構模式,這樣使得RabbitQ在Broker之間進行數據交互的性能是非常優秀的。

還有一點也是取決于作者,RabbitMQ開發的作者在開發RabbitMQ之間,先用Erlang語言做了一個簡單的交換機,然后他驚奇的發現:Erlang的優點:Erlang有著和原生Socket一樣好的延遲效果。
相信大家接觸過Socket的朋友,對它的有怎樣的性能有一定的了解。像我們耳熟能詳的RPC通信框架。比如說:dubbo,它底層就是采用了Netty,Netty無非就是網絡編程中的高性能之王,它無非就是一個Socket
基于這個特點呢,我們就有了一個充分的選擇RabbitMQ的理由。其實我們選擇RabbitMQ的時候,有一個主要的考量目標就是:當消息入到RabbtMQ節點上的時候,RabbitMQ的延遲以及響應。

4. 什么是AMQP高級消息隊列協議?

  • AMQP全稱:Advanced Message Queuing Protocol(高級消息隊列協議)

AMQP定義:是具有現代特征的二進制協議。是一個提供統一消息服務的應用層標準高級消息隊列協議,是應用層協議的一個開放標準,為面向消息的中間件設計。

它就類似于Java中的JMS。是比較上層的規范,基于這個規范可以開發出各種各項的消息中間件。

如何理解RabbitMQ核心概念和AMQP協議

模型分析

Pubilsher application:生產者應用 生產的消息,扔到Server端。

Server:指的就是RabbitMQ的節點

Virtual host:虛擬主機,比較上層的一個路由,類似于路由器這么一個概念。后續介紹

Exchange:交換機,生產者直接將消息投遞到Exchange中。但是要經歷3個過程 -》server->Virtual host->Exchange

先確定將消息發送到哪臺服務器,那么就需要先去建立連接,設置一些地址等等。
第二層,投遞到哪個Virtual host 需要定義。
第三層,投遞到哪個Exchange也需要定義。

再看Consumer application 消費者的應用端,消費端只需要監聽Message Queue,當隊列中有消息的時候,就拿出來消費。因此在Exchange和Message Queue之間有綁定的關系存在,后續詳細介紹。

5. AMQP核心概念是什么?

AMQP核心概念:

  • server: 又稱Broker,接收客戶端的鏈接,實現AMQP實體服務

  • Connection: 鏈接,應用程序與Broker的網絡連接

  • Channel:網絡信道,幾乎所有的操作(數據的讀、寫)都在Channel中進行,Channel是進行消息讀寫的通道。客戶端可建立多個Channel,每個Channel代表一個會話任務。

  • Message:消息,服務器和應用程序之間傳送的數據,由Properties和Body組成。Properties可以對消息進行修飾,比如消息的優先級、延遲等高級特性;Body則就是消息體內容。

  • Virtual host:虛擬地址,用于進行邏輯隔離,最上層的消息路由。一個Virtual host 里面可以有若干個Exchange和Queue,同一個Virtual Host里面不能有相同名稱的Exchange和Queue。一種邏輯概念,類似Redis的邏輯數據庫。用來劃分具體的服務。

  • Exchange:交換機,接收消息,根據路由鍵轉發消息到綁定的隊列

  • Binding:Exchange 和Queue之間的虛擬連接,Binding中可以包含routing key

  • Routing key:一個路由股則,虛擬機可用它來確定如何路由一個特定消息。

  • Queue:也稱為message Queue,消息隊列,保存消息并將它們轉發給消費者。

以上核心概念先有一個大概的認知,以后會詳細介紹。

6. RabbitMQ整體架構模型是什么樣子的?

如何理解RabbitMQ核心概念和AMQP協議
生產者把消息投遞到Exchange,Exchange投遞到Queue.
因此我們的生產者只需要關注把消息投遞到指定的Exchange即可,我們的消費者只需要監聽指定Queue即可。就是這么簡單的機制。
通過圖我們也能看到,生產者不需要關注投遞到哪個隊列,消費也不需要關注是從哪個Exchange上來的,這兩塊沒有耦合的情況。主要是應為Exchange和Queue有一個綁定的關系。

7. RabbitMQ消息是如何流轉的?

生產者publisher application 生產消息Message投遞到Exchange上,Exchange綁定MessageQueue,可以綁定過多個MessageQueue,為什么三個隊列只有其中一個隊列收到了消息呢?主要是由于Exchange是有一個路由功能的。這個路由就是routing key,這個路由有兩個非常關鍵的點,
第一個:你的消息是需要發送到哪個Exchange。
第二個:你發消息的時候需要帶上routing key,然后通過Exchange 和 MessageQueue 建立一個綁定關系,通過路由key把消息路由到一個指定的隊列上。然后我們的消費端直接監聽隊列就行了,就可以消費了。

到此,相信大家對“如何理解RabbitMQ核心概念和AMQP協議”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

蒙城县| 婺源县| 綦江县| 巴林右旗| 鹤山市| 彩票| 永靖县| 佳木斯市| 盐源县| 富锦市| 乌恰县| 怀柔区| 洛隆县| 阳朔县| 平乡县| 自治县| 淳安县| 三亚市| 武清区| 辽阳县| 获嘉县| 铜川市| 新乐市| 遂川县| 金溪县| 叙永县| 余庆县| 乐至县| 渭南市| 田阳县| 绥宁县| 石门县| 沁阳市| 饶平县| 永修县| 枣阳市| 扎鲁特旗| 罗定市| 陈巴尔虎旗| 高青县| 东光县|