1.Rabbitmq學習記錄《本質介紹,協議AMQP分析》

1.RabbitMQ是一個由erlang開發的AMQP(Advanced Message Queue )的開源實現。安全

  RabbitMQ的優點-:服務器

                  除了Qpid,RabbitMQ是惟一一個實現了AMQP標準的消息服務器;網絡

                  可靠性,RabbitMQ的持久化支持,保證了消息的穩定性;併發

                  高併發,RabbitMQ使用了Erlang開發語言,Erlang是爲電話交換機開發的語言,天生自帶高併發光環,和高可用特性;框架

                  集羣部署簡單,正是應爲Erlang使得RabbitMQ集羣部署變的超級簡單;異步

                  社區活躍度高,根據網上資料來看,RabbitMQ也是首選;分佈式

2.RabbitMQ系統最核心的組件是Exchange(交換機)和Queue(隊列)高併發

   工做機制--> 生產者、消費者和代理加密

                 生產者:消息的建立者,負責建立和推送數據到消息服務器;代理

                 消費者:消息的接收方,用於處理數據和確認消息;

                 代理:就是RabbitMQ自己,用於扮演「快遞」的角色,自己不生產消息,只是扮演「快遞」的角色。

3.AMQP協議

                  AMQP協議是一個二進制協議,擁有一些現代特色:多信道、協商式、異步、安全、跨平臺、中立、高效。

                  AMQP一般被劃分爲三層:

                 模型層定義了一套命令(按功能分類),客戶端應用能夠利用這些命令來實現它的業務功能。

                 會話層負責將命令從客戶端應用傳遞給服務器,再將服務器的應答傳遞給客戶端應用,會話層爲這個傳遞過程提供可靠性、同步機制和錯誤處理。

                 傳輸層提供幀處理、信道複用、錯誤檢測和數據表示。

                 實現者能夠將傳輸層替換成任意傳輸協議,只要不改變AMQP協議中與客戶端應用程序相關的功能。實現者還可使用其餘高層協議中的會話層。

4.AMQP功能

                存儲轉發(多個消息發送者,單個消息接收者)。

                分佈式事務(多個消息發送者,多個消息接收者)。

                發佈訂閱(多個消息發送者,多個消息接收者)。

               基於內容的路由(多個消息發送者,多個消息接收者)。

               文件傳輸隊列(多個消息發送者,多個消息接收者)。

               點對點鏈接(單個消息發送者,單個消息接收者)。

5.AMQP術語

              AMQP模型(AMQP Model):一個由關鍵實體和語義表示的邏輯框架,聽從AMQP規範的服務器必須提供這些實體和語義。爲了實現本規範中定義的語義,客戶端能夠發送命令來控制AMQP服務器。

              鏈接(Connection):一個網絡鏈接,好比TCP/IP套接字鏈接。

              會話(Session):端點之間的命名對話。在一個會話上下文中,保證「剛好傳遞一次」。

              信道(Channel):多路複用鏈接中的一條獨立的雙向數據流通道。爲會話提供物理傳輸介質。

              客戶端(Client):AMQP鏈接或者會話的發起者。AMQP是非對稱的,客戶端生產和消費消息,服務器存儲和路由這些消息。

              服務器(Server):接受客戶端鏈接,實現AMQP消息隊列和路由功能的進程。也稱爲「消息代理」。

              端點(Peer):AMQP對話的任意一方。一個AMQP鏈接包括兩個端點(一個是客戶端,一個是服務器)。

              搭檔(Partner):當描述兩個端點之間的交互過程時,使用術語「搭檔」來表示「另外一個」端點的簡記法。好比咱們定義端點A和端點B,當它們進行通訊時,端點B是端點A的搭檔,端點A是端點B的搭檔。

             片斷集(Assembly):段的有序集合,造成一個邏輯工做單元。

             段(Segment):幀的有序集合,造成片斷集中一個完整子單元。

             幀(Frame):AMQP傳輸的一個原子單元。一個幀是一個段中的任意分片。

             控制(Control):單向指令,AMQP規範假設這些指令的傳輸是不可靠的。

             命令(Command):須要確認的指令,AMQP規範規定這些指令的傳輸是可靠的。

             異常(Exception):在執行一個或者多個命令時可能發生的錯誤狀態。

             類(Class):一批用來描述某種特定功能的AMQP命令或者控制。

             消息頭(Header):描述消息數據屬性的一種特殊段。

             消息體(Body):包含應用程序數據的一種特殊段。消息體段對於服務器來講徹底不透明——服務器不能查看或者修改消息體。

             消息內容(Content):包含在消息體段中的的消息數據。

             交換器(Exchange):服務器中的實體,用來接收生產者發送的消息並將這些消息路由給服務器中的隊列。

             交換器類型(Exchange Type):基於不一樣路由語義的交換器類。

             消息隊列(Message Queue):一個命名實體,用來保存消息直到發送給消費者。

             綁定器(Binding):消息隊列和交換器之間的關聯。

             綁定器關鍵字(Binding Key):綁定的名稱。一些交換器類型可能使用這個名稱做爲定義綁定器路由行爲的模式。

             路由關鍵字(Routing Key):一個消息頭,交換器能夠用這個消息頭決定如何路由某條消息。

            持久存儲(Durable):一種服務器資源,當服務器重啓時,保存的消息數據不會丟失。

            臨時存儲(Transient):一種服務器資源,當服務器重啓時,保存的消息數據會丟失。

            持久化(Persistent):服務器將消息保存在可靠磁盤存儲中,當服務器重啓時,消息不會丟失。

            非持久化(Non-Persistent):服務器將消息保存在內存中,當服務器重啓時,消息可能丟失。

            消費者(Consumer):一個從消息隊列中請求消息的客戶端應用程序。

            生產者(Producer):一個向交換器發佈消息的客戶端應用程序。

            虛擬主機(Virtual Host):一批交換器、消息隊列和相關對象。虛擬主機是共享相同的身份認證和加密環境的獨立服務器域。客戶端應用程序在登陸到服務器以後,能夠選擇一個虛擬主機。

 

6.示意圖:

相關文章
相關標籤/搜索