是面向訊息的中介軟體的開放標準應用層協議,amqp的特徵是訊息導向,排隊,路由(包括點對點和發布和訂閱),可靠性和安全性。
amqp要求訊息傳遞提供商和客戶端的行為在不同**商實現可互操作的情況下,以與smtp,http,ftp等相同的方式建立了可互操作的系統。
amqp協議是具有現代特徵的二進位制協議。乙個提供統一訊息服務的應用層標準高階訊息佇列協議,是應用層協議的乙個開發標準,為面向訊息的中介軟體設計。基於此協議的客戶端與訊息中介軟體可傳遞訊息,並不受客戶端/中介軟體不同產品,不同開發語言等條件的限制。
amqp是一種二進位制應用層協議,旨在有效地支援各種訊息應用和通訊模式。
amqp的協議棧
modle layer:位於協議最高層,主要定義了一些供客戶端呼叫的命令,客戶端可以利用這些命令實現自己的業務邏輯,例如,客戶端可以通過queue.declare宣告乙個佇列,利用consume命令獲取乙個佇列中的訊息。
session layer:主要負責將客戶端的命令傳送給伺服器,在將伺服器端的應答返回給客戶端,主要為客戶端與伺服器之間通訊提供可靠性、同步機制和錯誤處理。
transport layer:主要傳輸二進位制資料流,提供幀的處理、通道復用、錯誤檢測和資料表示。
amqp協議模型
又稱作broker,用於接受客戶端的連線,實現amqp實體服務;
連線,應用程式與broker的網路連線;
網路通道,幾乎所有的操作都在channel中進行,channel是進行訊息讀寫的通道。客戶端可建立多個channel,每個channel代表乙個會話任務;
訊息,伺服器和應用程式之間傳送的資料,有properties和body組成。properties可以對訊息進行修飾,比如訊息的優先順序、延遲等高階特性;body則是訊息體內容,即我們要傳輸的資料;僅僅建立了客戶端到broker之間的連線後,客戶端還是不能傳送訊息的。需要為每乙個connection建立channel,amqp協議規定只有通過channel才能執行amqp的命令。乙個connection可以包含多個channel。之所以需要channel,是因為tcp連線的建立和釋放都是十分昂貴的,如果乙個客戶端每乙個執行緒都需要與broker互動,如果每乙個執行緒都建立乙個tcp連線,暫且不考慮tcp連線是否浪費,就算作業系統也無法承受每秒建立如此多的tcp連線。rabbitmq建議客戶端執行緒之間不要共用channel,至少要保證共用channel的執行緒傳送訊息必須是序列的,但是建議盡量共用connection。
虛擬位址,是乙個邏輯概念,用於進行邏輯隔離,是最上層的訊息路由。乙個virtual host裡面可以有若干個exchange和queue,同乙個virtual host裡面不能有相同名稱的exchange或者queue;virtual host是許可權控制的最小粒度;
交換機,用於接收訊息,可根據路由鍵將訊息**到繫結的佇列;
exchange和queue之間的虛擬連線,exchange在與多個message queue發生binding後會生成一張路由表,路由表中儲存著message queue所需訊息的限制條件即binding key。當exchange收到message時會解析其header得到routing key,exchange根據routing key與exchange type將message路由到message queue。binding key由consumer在binding exchange與message queue時指定,而routing key由producer傳送message時指定,兩者的匹配方式由exchange type決定。
乙個路由規則,虛擬機器可用它來確定如何路由乙個特定的訊息;
也稱作message queue,即訊息佇列,用於儲存訊息並將他們**給消費者;
kafka角色模型與核心概念
kafka主要有三大作用,其中訊息系統和流式處理是我們最常用的 訊息系統 kafka作為訊息中介軟體,具有mq的系統解耦 流量削峰 緩衝 非同步通訊等特性 儲存系統 kafka與其他訊息系統不同的是,它能夠把訊息持久化到磁碟,有效的降低了訊息丟失風險,只要把資料保留策略設定為永久,即訊息永不過期,可...
css盒模型 css核心概念
頁面中所有元素都被看成是乙個矩形盒子,盒子包含元素內容 內邊距 padding 邊框 border 和外邊距 margin 計算盒子大小方式 box sizing 預設計算方式 width 寬 padding 內邊距 border 邊框 元素實際寬度 height 高 padding 內邊距 bor...
概念模型 邏輯模型和物理模型
隨著系統開發的推進和成熟,系統模式可能代表了不同的細節層次。概念模型 記錄了系統中存在 或將存在 的領域實體以及它們與系統中其他領域實體的關係。概念層的建模與技術無 關,它是利用業務領域的術語來完成的。邏輯模型 根據概念模型中創造出的概念,建立起關鍵抽象和機制的意義,並確定系統的架構和整體設計。物理...