什麼是rabbitmq?
為什麼要使用rabbitmq?
訊息佇列的優缺點?
rabbitmq 的使用場景有哪些?
rabbitmq 有哪些重要的角色?
rabbitmq 有哪些重要的元件?
rabbitmq 中 vhost 的作用是什麼?
rabbitmq 的訊息是怎麼傳送的?
rabbitmq 怎麼保證訊息的穩定性?
rabbitmq 怎麼避免訊息丟失?
要保證訊息持久化成功的條件有哪些?
rabbitmq 持久化有什麼缺點?
rabbitmq 有幾種廣播型別?
rabbitmq 怎麼實現延遲訊息佇列?
rabbitmq 集群有什麼用?
rabbitmq 節點的型別有哪些?
rabbitmq 集群搭建需要注意哪些問題?
rabbitmq 每個節點是其他節點的完整拷貝嗎?為什麼?
rabbitmq 集群中唯一乙個磁碟節點崩潰了會發生什麼情況?
rabbitmq 對集群節點停止順序有要求嗎?
kafka 與 rabbitmq 的區別?
rabbitmq 即乙個訊息佇列,主要是用來實現應用程式的非同步和解耦,同時也能起到訊息緩衝,訊息分發的作用。rabbitmq使用的是amqp協議,它是一種二進位制協議。
amqp,即advanced message queuing protocol,乙個提供統一訊息服務的應用層標準高階訊息佇列協議,是應用層協議的乙個開放標準,為面向訊息的中介軟體設計。基於此協議的客戶端與訊息中介軟體可傳遞訊息,並不受客戶端/中介軟體不同產品,不同的開發語言等條件的限制。erlang中的實現有 rabbitmq等。
要結合具體應用場景去分析,知道不同訊息佇列的區別。
具體文章見:kafka、activemq、rabbitmq、rocketmq 有什麼優缺點:
具體文章見:kafka、activemq、rabbitmq、rocketmq 有什麼優缺點:rabbitmq 中重要的角色有:生產者,消費者和**
vhost:每個rabbitmq都能建立多個vhost,我們稱之為虛擬主機,每個虛擬主機其實都是mini版的rabbitmq,它擁有自己的佇列,交換器和繫結,擁有自己的許可權機制。
首先客戶端必須連線到rabbitmq伺服器才能發布和消費訊息,客戶端和 rabbit server 之間會建立乙個tcp連線,一旦tcp開啟並通過了認證(認證就是你傳送給rabbit伺服器的使用者名稱和密碼),你的客戶端和 rabbitmq 就建立一條 amqp 通道(channel),通道是建立在「真實」tcp上的虛擬連線,amqp命令都是通過通道傳送出去的,每個通道都會有唯一的id,不論是發布訊息,訂閱佇列都是通過這個通道完成的。
持久化的缺點就是降低了伺服器的吞吐量,因為使用的是磁碟而非記憶體儲存,從而降低了吞吐量。可盡量使用ssd硬碟來緩解吞吐量的問題。
延遲佇列的實現有兩種方式:
集群主要有以下兩個用途:
不是,原因有以下兩個:
效能的考慮:如果每條訊息都需要完整拷貝每乙個集群節點,那新增節點並沒有提公升處理訊息的能力,最多是保持和單節點相同的效能甚至更糟。
如果唯一磁碟的磁碟節點崩潰,不能進行一下操作:
唯一磁碟節點崩潰了,集群是可以保持執行的,但你不能更改任何東西。
rabbitmq 對集群的停止的順序是有要求的,應該先關閉記憶體節點,最後關閉磁碟節點。如果順序恰好相反的話,可能造成訊息的丟失。
應用場景方面
rabbitmq:用於實時的,對可靠性要求較高的訊息傳遞上。
kafka:用於處於活躍的流式資料,大資料量的資料處理上。
架構模型方面
producer,broker,consumer
rabbitmq:以broker為中心,有訊息的確認機制
kafka:以consumer為中心,無訊息的確認機制
吞吐量方面
rabbitmq:支援訊息的可靠的傳遞,支援事務,不支援批量操作,基於儲存的可靠性的要求儲存可以採用記憶體或硬碟,吞吐量小。
kafka:內部採用訊息的批量處理,資料的儲存和獲取是本地磁碟順序批量操作,訊息處理的效率高,吞吐量高。
集群負載均衡方面
rabbitmq:本身不支援負載均衡,需要loadbalancer的支援
kafka:採用zookeeper對集群中的broker,consumer進行管理,可以註冊topic到zookeeper上,通過zookeeper的協調機制,producer儲存對應的topic的broker資訊,可以隨機或者輪詢傳送到broker上,producer可以基於語義指定分片,訊息傳送到broker的某個分片上。
kafka通過zk和分割槽機制實現:zk記錄broker資訊,生產者可以獲取到並通過策略完成負載均衡;通過分割槽,投遞訊息到不同分割槽,消費者通過服務組完成均衡消費。
訊息中介軟體選型分析——從kafka與rabbitmq的對比來看全域性:
RabbitMQ常見問題以及解決措施
rabbitmq訊息丟失 這個是rabbitmq最常見的問題,rabbitmq丟失分三種情況,生產者訊息丟失,rabbitmq訊息丟失,消費者訊息丟失.生產者訊息丟失 生產者在傳送訊息給rabbitmq,在中途有可能因為網路問題導致訊息丟失,我們可以選擇rabbitmq提供的事務,也可以用confi...
最全RabbitMQ教程4 常見問題
二 如何保證訊息冪等?三 如何保證訊息的順序?這是面試時最喜歡問的問題,其實這個是所有mq的乙個共性的問題,大致的解決思路也是差不多的,但是針對不同的mq產品會有不同的解決方案。之前針對rocketmq做過分析,我們再按照rabbitmq來分析下這個問題。我們考慮乙個通用的mq場景 其中,1,2,4...
RabbitMQ 實踐經驗與常見問題
生產者傳送訊息到broker的可靠性 服務端確認機制 交換機的可靠性 路由保證 佇列的可靠性 消費端的可靠性 消費者確認機制 為什麼訊息會重複?消費端 響應 假如生產者未收到 重發 重發間隔 重發次數 如何冪等處理訊息 業務訊息必須有唯一的業務id,訊息id。即msgid bizid。資料庫中的唯一...