『壹』 rabbitmq消息中間件
消息中間件
消息中間件,又稱消息隊列,其核心功能在於利用高效可靠的消息傳遞機制進行分布式系統間的數據交流,依託數據通信機制集成分布式系統。當下主流的消息中間件有RabbitMQ、Kafka、ActiveMQ、RocketMQ等。
消息中間件的主要作用體現在以下幾個方面:
1、**消息中間件的兩種模式**:
- **P2P模式**:包含消息隊列(Queue)、發送者(Sender)、接收者(Receiver)三個角色。每個消息被發送到特定的隊列,接收者從中獲取消息。隊列保留消息直至被消費或超時。
- **Pub/Sub模式**:包含主題(Topic)、發布者(Publisher)、訂閱者(Subscriber)三個角色。多個發布者將消息發送至Topic,系統將消息傳遞給多個訂閱者。
**常用中間件介紹與對比**:
- **Kafka**:LinkedIn開源的分布式發布-訂閱消息系統,主要特點是追求高吞吐量,起始目的用於日誌收集和傳輸。自0.8版本開始支持復制,不支持事務,對消息的重復、丟失、錯誤沒有嚴格要求,適用於產生大量數據的互聯網服務的數據收集業務。
- **RabbitMQ**:基於Erlang語言開發的開源消息隊列系統,使用AMQP協議實現。AMQP重點在於面向消息、隊列、路由(包括點對點和發布/訂閱)、可靠性、安全。更多適用於企業系統內對數據一致性、穩定性和可靠性要求較高的場景。
- **RocketMQ**:阿里開源的消息中間件,純Java開發,具有高吞吐量、高可用性、適合大規模分布式系統應用的特點。對消息的可靠傳輸及事務性進行優化,廣泛應用於交易、充值、消息推送、日誌流式處理、binglog分發等場景。
RabbitMQ相較於Kafka在可靠性方面更為出色,而Kafka更適合處理高IO吞吐量的場景,通常應用於大數據日誌處理或對實時性(少量延遲)、可靠性(少量丟數據)要求稍低的場景,如ELK日誌收集。
RabbitMQ集群**:
- **簡介**:RabbitMQ基於Erlang開發,集群構建非常便捷,因為Erlang天生支持分布式。但RabbitMQ本身不支持負載均衡,支持高並發、可擴展性,支持AJAX、持久化,適用於分布式系統中存儲轉發消息。
- **特點**:模式分為**單模式**、**普通模式(默認集群模式)**、**鏡像模式**(將需要的隊列復制到多個節點,屬於RabbitMQ的HA方案,適合業務可靠性要求較高的場合)。實現鏡像模式需先構建普通集群模式,再配置鏡像模式以實現高可用。
**集群基本概念**:RabbitMQ集群包括內存節點和磁碟節點。內存節點將數據保存在內存中,磁碟節點則將數據保存在磁碟上。集群中可以共享用戶、虛擬主機、隊列、交換機等,所有數據和狀態都需要在所有節點上復制。
**面試注意點**:集群中有兩種節點:內存節點(只保存狀態到內存,持久化隊列內容將被保存到磁碟)與磁碟節點(保存狀態到內存和磁碟,推薦使用)。內存節點雖然不寫入磁碟,但在集群中,僅需一個磁碟節點來保存狀態即可,避免狀態、消息等丟失。
- **普通集群准備環境**:
- 三台伺服器聯網,RabbitMQ集群節點必須在同一網段內。若跨廣域網,效果會變差。關閉防火牆和selinux。
- 三台機器均需創建用戶,開啟用戶遠程登錄,查看埠(注意如果是雲伺服器,需要添加安全組埠放行)。
- 訪問管理控制台:192.168.50.138:15672,使用默認用戶guest,密碼guest登錄。
**開始部署集群**:三台機器操作如下步驟:
- 創建數據存放目錄和日誌存放目錄。
- 拷貝erlang.cookie文件。
- 將mq-2、mq-3作為內存節點加入mq-1節點集群中。
- 查看集群狀態,登錄web管理控制台,創建新隊列。
- 鏡像集群配置**:在任意一台機器上設置策略,確保隊列同步至其他節點。鏡像隊列基於普通集群模式,設置策略為匹配所有隊列、復制模式為所有節點。完成隊列鏡像集群部署。至此,所有隊列設置為鏡像隊列,各節點狀態保持一致。
『貳』 如何查rocketmq 每日量
通過rocketmq控制台查看。
除了控制台查看,還可以通過主機地址進行查看,具體步驟如下:1、首先登陸nameserver主機地址。2、執行以下命令(shmqadminconsumerProgress-gconsumeGroupNameeg:shmqadminconsumerProgress-gtest)查看。3、出來的結果BrokerOffset為生產的條數,ConsumerOffset為消費的條數,Diff為堆積的條數。
RocketMQ是阿里巴巴開源的分布式消息中間件,支持事務消息、順序消息、批量消息、定時消息、消息回溯等。它裡面有幾個區別於標准消息中件間的概念,如Group、Topic、Queue等。系統組成則由Procer、Consumer、Broker、NameServer等。