1. 程式人生 > >rabbitmq(二)原理

rabbitmq(二)原理

瓶頸 bubuko 完全匹配 .com 發布 以及 共享 為什麽 限制

一.基本概念
1.1

技術分享圖片

可以看到提供方提供一個Broker(消息隊列實體)當中的虛擬主機->>包含了Exchange(交換器)通過binding綁定一個隊列Queue 客戶端再通過連接不同渠道(Channel)給客戶端提供消息
而一個消息隊列又分幾種模式

1.2
VirtualHost
虛擬主機。表示一批交換器,消息隊列和相關對象。虛擬主機是共享相同的身份認證
和加密環境的獨立服務器域。每個 vhost 本質上就是一個 mini 版的 RabbitMQ 服務器,擁有
自己的隊列、交換器、綁定和權限機制。vhost 是 AMQP 概念的基礎,必須在鏈接時指定,
RabbitMQ 默認的 vhost 是/
1.3
Channel 信道。
1,Channel 中文叫做信道,是 TCP 裏面的虛擬鏈接。例如:電纜相當於 TCP,信道是
一個獨立光纖束,一條 TCP 連接上創建多條信道是沒有問題的。
2,TCP 一旦打開,就會創建 AMQP 信道。
3,無論是發布消息、接收消息、訂閱隊列,這些動作都是通過信道完成的。
1.4
交換器和隊列的
交換器是通過路由鍵和隊列綁定在一起的,如果消息擁有的路由鍵跟隊列和交換器的
路由鍵匹配,那麽消息就會被路由到該綁定的隊列中。
也就是說,消息到隊列的過程中,消息首先會經過交換器,接下來交換器在通過路由
鍵匹配分發消息到具體的隊列中。
路由鍵可以理解為匹配的規則。
1.5 RabbitMQ 為什麽需要信道?為什麽不是 TCP 直接通

  1. TCP 的創建和銷毀開銷特別大。創建需要 3 次握手,銷毀需要 4 次分手。
  2. 如果不用信道,那應用程序就會以 TCP 鏈接 Rabbit,高峰時每秒成千上萬條鏈接
    會造成資源巨大的浪費,而且操作系統每秒處理 TCP 鏈接數也是有限制的,必定造成性能
    瓶頸。
  3. 信道的原理是一條線程一條通道,多條線程多條通道同用一條 TCP 鏈接。一條 TCP
    鏈接可以容納無限的信道,即使每秒成千上萬的請求也不會成為性能的瓶頸。

1.Direct(發布訂閱 完全匹配)

技術分享圖片

rabbitmq默認隊列
如圖 Direct是根據交換器的routing key找到queues的
所以我們使用的時候消息接收就使用交換器名稱,以及routingkey找到隊列接收值

2.fanoutg(廣播)

技術分享圖片

通過發送Exchange 將消息發送到所有綁定的隊列中 所有連接到exchange的客戶端 都會收到消息

3.topic

技術分享圖片

生產隊列發送消息根據topic類型 發送到交換器 匹配幾種相同的binding key 發送到隊列 客戶端消費

rabbitmq(二)原理