1. 程式人生 > >AMQP協議(經典)

AMQP協議(經典)

當前各種應用大量使用非同步訊息模型,並隨之產生眾多訊息中介軟體產品及協議,標準的不一致使應用與中介軟體之間的耦合限制產品的選擇,並增加維護成本。AMQP是一個提供統一訊息服務的應用層標準協議,基於此協議的客戶端與訊息中介軟體可傳遞訊息,並不受客戶端/中介軟體不同產品,不同開發語言等條件的限制。 

  當然這種降低耦合的機制是基於與上層產品,語言無關的協議。AMQP協議是一種二進位制協議,提供客戶端應用與訊息中介軟體之間非同步、安全、高效地互動。從整體來看,AMQP協議可劃分為三層:   

  這種分層架構類似於OSI網路協議,可替換各層實現而不影響與其它層的互動。AMQP定義了合適的伺服器端域模型,用於規範伺服器的行為(AMQP伺服器端可稱為broker)。在這裡Model層決定這些基本域模型所產生的行為,這種行為在AMQP中用”command”表示,在後文中會著重來分析這些域模型。Session層定義客戶端與broker之間的通訊(通訊雙方都是一個peer,可互稱做partner),為command的可靠傳輸提供保障。Transport層專注於資料傳送,並與Session保持互動,接受上層的資料,組裝成二進位制流,傳送到receiver後再解析資料,交付給Session層。Session層需要Transport層完成網路異常情況的彙報,順序傳送command等工作。 

  上面是對AMQP協議的大致說明。下面會以我們對訊息服務的需求來理解AMQP所提供的域模型。訊息中介軟體的主要功能是訊息的路由(Routing)和快取(Buffering)。在AMQP中提供類似功能的兩種域模型:Exchange 和 Message queue。

   Exchange接收訊息生產者(Message Producer)傳送的訊息根據不同的路由演算法將訊息傳送往Message queue。Message queue會在訊息不能被正常消費時快取這些訊息,具體的快取策略由實現者決定,當message queue與訊息消費者(Message consumer)之間的連線通暢時,Message queue有將訊息轉發到consumer的責任。 
       Message是當前模型中所操縱的基本單位,它由Producer產生,經過Broker被Consumer所消費。它的基本結構有兩部分: Header和Body。Header是由Producer新增上的各種屬性的集合,這些屬性有控制Message是否可被快取,接收的queue是哪個,優先順序是多少等。Body是真正需要傳送的資料,它是對Broker不可見的二進位制資料流,在傳輸過程中不應該受到影響。 
       一個broker中會存在多個Message queue,Exchange怎樣知道它要把訊息傳送到哪個Message queue中去呢? 這就是上圖中所展示Binding的作用。Message queue的建立是由client application控制的,在建立Message queue後需要確定它來接收並儲存哪個Exchange路由的結果。Binding是用來關聯Exchange與Message queue的域模型。Client application控制Exchange與某個特定Message queue關聯,並將這個queue接受哪種訊息的條件繫結到Exchange,這個條件也叫Binding key或是 Criteria。 
      在與多個Message queue關聯後,Exchange中就會存在一個路由表,這個表中儲存著每個Message queue所需要訊息的限制條件。Exchange就會檢查它接受到的每個Message的Header及Body資訊,來決定將Message路由到哪個queue中去。Message的Header中應該有個屬性叫Routing Key,它由Message傳送者產生,提供給Exchange路由這條Message的標準。Exchange根據不同路由演算法有不同有Exchange Type。比如有Direct類似,需要Binding key等於Routing key;也有Binding key與Routing key符合一個模式關係;也有根據Message包含的某些屬性來判斷。一些基礎的路由演算法由AMQP所提供,client application也可以自定義各種自己的擴充套件路由演算法。那麼一個Message的處理流程類似於這樣:   

  在這裡有個新名詞需要介紹: Virtual Host。一個Virtual Host可持有一些Exchange和Message queue。它是一個虛擬概念,一個Virtual Host可以是一臺伺服器,也可以是由多臺伺服器組成的叢集。同步擴充套件下,Exchange與Message queue的部署也可以是一臺或是多臺伺服器上。 
      Message的產生者和消費者可能是同一個應用。整個AMQP定義的就是Client application與Broker之間的互動。在粗略介紹完AMQP的域模型後,可以關注下Client是怎樣與Broker建立起連線的。 
      在AMQP中,Client application想要與Broker溝通,就需要建立起與Broker的connection,這種connection其實是與Virtual Host相關聯的,也就是說,connection是建立在client與Virtual Host之間。可以在一個connection上併發執行多個channel,每個channel執行與Broker的通訊,我們前面提供的session就是依附於channel上的。 
      這裡的Session可以有多種定義,既可以表示AMQP內部提供的command分發機制,也可以說是在巨集觀上區別與域模型的介面。正常理解就是我們平時所說的互動context,主要作用就是在網路上可靠地傳遞每一個command。在AMQP的設計中,應當是借鑑了TCP的各種設計,用於保證這種可靠性。 
      在Session層,為上層所需要互動的每個command分配一個惟一識別符號(可以是一個UUID),是為了在傳輸過程中可以對command做校驗和重傳。Command傳送端也需要記錄每個傳送出去的command到Replay Buffer,以期得到接收方的回饋,保證這個command被接收方明確地接收或是已執行這個command。對於超時沒有收到反饋的command,傳送方再次重傳。如果接收方已明確地回饋資訊想要告知command傳送方但這條資訊在中途丟失或是其它問題傳送方沒有收到,那麼傳送方不斷重傳會對接收方產生影響,為了降低這種影響,command接收方設定一個過濾器Idempotency Barrier,來攔截那些已接收過的command。 關於這種重傳及確認機制,可以參考下TCP的相關設計。 
     上面大致介紹了AMQP的域模型及連線機制中的確認及重傳模型,不涉及AMQP的詳細二進位制規範。

相關推薦

AMQP協議經典

當前各種應用大量使用非同步訊息模型,並隨之產生眾多訊息中介軟體產品及協議,標準的不一致使應用與中介軟體之間的耦合限制產品的選擇,並增加維護成本。AMQP是一個提供統一訊息服務的應用層標準協議,基於此協議的客戶端與訊息中介軟體可傳遞訊息,並不受客戶端/中介軟體不同產品,不同

TCP/IP協議2:網絡設備

數據包 服務器 網絡設備 風暴 二層交換機 不同的 中繼器 tcp/ip 解決 1、中繼器(Repeater) 中繼器工作在OSI的一層,我們知道,超5類線的傳輸距離最大為100米,超過這個距離信號就會衰減,中繼器就是為了防止信號變差,將網絡信號進行再生和重定時。 2、

CO-PRIME初探 莫比烏斯NYOJ1066經典gcda,b=1

put size 兩個 test hat ott == clas otto CO-PRIME 時間限制:1000 ms | 內存限制:65535 KB 難度:3 描寫敘述 This problem is so easy! Can you solve it

HTTP協議——了解Web及網絡基礎

協議 http web 一、使用HTTP協議訪問Web Web頁面不會憑空顯示出來,根據Web瀏覽器地址欄中指定的URL,Web瀏覽器從Web服務器獲取文件資源等信息,從而顯示出Web頁面。 像這種通過發送請求獲取服務器資源的Web瀏覽器等,都可稱為客戶端。本文出自 “IT菜鳥” 博客

[圖解]ARP協議

tcp/ip arp協議 一、ARP概述如果要在TCP/IP協議棧中選擇一個"最不安全的協議",那麽我會毫不猶豫把票投給ARP協議。我們經常聽到的這些術語,包括"網絡掃描"、"內網滲透"、"中間人攔截"、"局域網流控"、"流量欺騙",基本都跟ARP脫不了幹系。大量的安全工具,例如大名鼎鼎的Cain、功

圖解ARP協議ARP攻擊原理與實踐

tcp/ip arp協議 網絡安全 局域網安全 一、ARP攻擊概述在上篇文章裏,我給大家普及了ARP協議的基本原理,包括ARP請求應答、數據包結構以及協議分層標準,今天我們繼續討論大家最感興趣的話題:ARP攻擊原理是什麽?通過ARP攻擊可以做什麽,賬號是否可以被竊取?有哪些常見的ARP滲透(攻

圖解ARP協議ARP防禦篇-如何揪出"內鬼"並"優雅的還手"

負責任 text 介紹 成功 過濾器 現在 導致 打開 是個 一、ARP防禦概述 通過之前的文章,我們已經了解了ARP攻擊的危害,黑客采用ARP軟件進行掃描並發送欺騙應答,同處一個局域網的普通用戶就可能遭受斷網攻擊、流量被限、賬號被竊的危險。由於攻擊門檻非常低,普通人只要拿

專利:結構化大數據通信協議2

結構化大數據通信協議說明2:數據的唯一性是實現“數據全球通”的基礎在班、組這樣的小環境中可以用每個人的姓名而區分出每一個人,然而在全國範圍內,由於人數太多,重名的很多,因此僅靠姓名就不能準確無誤地識別出每一個人。大數據時代以前的關系數據庫中的數據只是應用於某個機構內部,因此各個數據就容易識別,然而如果把關系數

關於HTTP協議

java類 post方法 -a wow 配置 即使 關閉 客戶端瀏覽器 實體 HTTP簡介 HTTP協議是Hyper Text Transfer Protocol(超文本傳輸協議)的縮寫,是用於從萬維網(WWW:World Wide Web )服務器傳輸超文本到本地瀏覽

HTTP協議:介紹

ans html 通過 www. cat hyper res lan 了解 HTTP協議(一):介紹 RFC 2616定義了今天普遍使用的一個版本——HTTP 1.1。HTTP協議(HyperText Transfer Protocol,超文本傳輸協議)

通信協議之Modbus協議

簡介 方法 電子 相互 dbus 通信 兼容 校驗位 行集 Modbus通信協議: 簡介:Modbus協議是應用於電子控制器上的一種通用語言 通過此協議,控制器相互之間,控制器經由網絡(例如以太網) 和其他設備之間可以通信,他已經成為一種通用工業標準,有啦它 不同廠商生產的

POJ3728The merchant (倍增)LCADP經典||並查集壓縮路徑?

城市 contain 分析 之間 pat rst .com span 題解 There are N cities in a country, and there is one and only one simple path between each pair of c

熱備份路由選擇協議HSRP配置命令及原理

ndb vrrp 恢復 命令 time conf eem 路由協議 調整 熱備份路由選擇協議(HSRP)HSRP是Cisco私有協議HSRP組成員:(1)活躍路由器(2)備份路由器(3)虛擬路由器(4)其他路由器HSRP消息:HSRP中的所有路由器都發送或接收HSRP消息U

七LWIP學習筆記之傳輸控制協議TCP

輸入 post wait syn 快速重傳 擁塞 斷開連接 其他 time 一、協議簡介 1、TCP的必要性 2、TCP的特性 3、連接的定義 4、數據流編號 5、滑動窗口 二、TCP報文 1、報文格式 2、TCP選項 3、緊急數據 4、強迫數據交互 5、報文首部數據結構

六LWIP學習筆記之用戶數據報協議UDP

端口 數據結構 筆記 udp協議 pos body 校驗 傳輸 連接 一、背景知識 1、傳輸層協議 2、UDP協議 3、端口 4、UDP報文的交付 5、UDP報文格式 6、UDP偽首部與校驗和 二、UDP數據結構 1、報文首部結構 2、控制塊 三、控制塊操作函數 1、使用U

地址解析協議ARP

1.3 開始 linu 網絡 報文結構 自己的 不可 分析 png 地址解析協議(ARP) 1.作用 為什麽主機需要有各自的ipv4地址和mac地址才能通信呢? ip屬於網絡層,mac地址屬於數據鏈路層。通過沿ip傳輸的路徑是邏輯路徑,由路由設備根據路由表進行轉發,而一條邏

經典TCP粘包分析

分配 網絡通訊 有一種 解析 全部 簡單 進程 影響 大小 一 .兩個簡單概念長連接與短連接:1.長連接 Client方與Server方先建立通訊連接,連接建立後不斷開, 然後再進行報文發送和接收。 2.短連接 Client方與Server每進行一次報文收發

計算機網絡相關:應用層協議:HTTP

toc connect html文本 con 也不會 http服務 lang 代碼 保存 前言 復習下計算機網絡的知識並記錄 正文 定義:HTTP協議(HyperText Transfer Protocol,超文本傳輸協議)是用於從WWW服務器傳輸超文本到本地瀏覽器的傳送協

有關冗余或者備份的那些協議1

鏈路冗余二層stp (scanning tree protocol):生成樹協議用於防止二層鏈路形成環路。認識如下幾個概念:BPDU(bridge protocol data unit)橋協議數據單元root switch:根交換機非根交換機root port根端口指定端口非指定端口配置命令(華為)默認開啟的