消息中間件最全詳解(萬字圖文總結)
當前位置:點晴教程→知識管理交流
→『 技術文檔交流 』
消息中間件在分布式以及高并發架構都是重要的內容,下面我就重點來詳解消息中間件@mikechen 消息中間件定義消息中間件(Message Middleware)是一種用于構建分布式系統的軟件基礎設施,它提供了一種異步、可靠、可伸縮的消息傳遞機制。
消息中間件應用場景消息中間件的作用,主要包含如下4種: 1.異步通信 通過消息中間件,不同的服務之間可以進行異步通信,可以提高系統的吞吐量和并發性能,避免因為同步調用而導致的阻塞和性能瓶頸。
2應用解耦 消息中間件可以將消息發送方和接收方解耦,使得它們可以獨立地進行開發和部署,不需要直接依賴于對方的實現細節。
3.流量控制 消息中間件可以設置流量控制,當消息流量過大時,可以暫停消息的發送,等到流量下降時再繼續發送,從而平滑地處理流量峰值。
4.日志處理 消息中間件需要對關鍵信息進行日志記錄和處理,以便于監控和追蹤系統運行情況,發現潛在問題,優化系統性能。
消息中間件原理消息中間件通常由生產者(Producer)、消息隊列(Message Queue)、消費者(Consumer)三部分組成。 如下圖所示: 上圖為整體架構會涉及三類角色:
消息中間件提供多種消息傳遞模式如點對點模式和發布/訂閱模式等。 1.點對點模型 在點對點模式中,生產者將消息發送到一個特定的消息隊列中,消息隊列只會將消息傳遞給一個消費者進行處理。 也就是說,一個消息只能被一個消費者處理,這種模式也稱為隊列模式(Queue Mode)。 如下圖所示: 在點對點模式中,消息的生產者和消費者之間是一對一的關系,這種模式可以實現簡單的異步通信和任務分配,適用于需要處理一些不需要廣播的任務,如任務調度、訂單處理等。
2.訂閱發布模式 在訂閱發布模式中,生產者將消息發布到一個主題(Topic)中,消費者可以訂閱該主題并接收其中的消息。 在這種模式中,消息隊列會將消息廣播給所有訂閱了該主題的消費者,也就是說,一個消息可以被多個消費者同時處理。這種模式也稱為主題模式(Topic Mode)。 如下圖所示:
消息中間件有哪些下面是一些常見的消息中間件: 1.Apache Kafka Kafka是一個分布式的高吞吐量的消息系統,最初由LinkedIn開發,現在是Apache軟件基金會的頂級開源項目之一。 Kafka廣泛應用于多種用例,例如實時數據流處理、日志聚合、監控、指標和日志收集、消息隊列等。 Kafka的基本模型是生產者向主題(Topic)發布消息,消費者從主題訂閱消息。 消息通過一個或多個Kafka集群的代理(Broker)進行傳輸和存儲,如下圖所示:
2.RabbitMQ 一個開源的 AMQP(高級消息隊列協議)消息代理軟件,支持多種消息協議和多種語言的客戶端,并提供可靠性、靈活性和可擴展性等優勢。 RabbitMQ是erlang語言開發,結合erlang語言本身的并發優勢,RabbitMQ支持許多高級特性,例如消息確認、持久化、優先級、消息 TTL、消息復制和分片等。
3.ActiveMQ 一個完全基于 JMS(Java 消息服務)規范的消息中間件,支持多種消息協議和多種客戶端語言,并提供高可用、可靠性、事務性等特性。
4.RocketMQ RocketMQ是一個分布式的消息隊列系統,由阿里巴巴集團開發并開源。 它具有高可用性、高吞吐量、高可靠性和可擴展性等特點,并且支持多種消息傳遞模式,例如發布/訂閱、點對點等。 RocketMQ架構,如下圖所示: RocketMQ架構:主要由NameServer、Broker、Producer以及Consumer四部分構成。 關于RocketMQ架構原理,更加詳細的內容請查看:RocketMQ架構原理詳解(4大工作原理設計圖解)
5.Pulsar Pulsar是 Apache 軟件基金會頂級項目,是下一代云原生分布式消息流平臺。 Pulsar被看作是云原生時代實時消息流傳輸、存儲和計算最佳解決方案,其整體架構圖如下所示:
6.Redis 消息隊列 Redis除了可以用作分布式緩存,也可以用于消息隊列的使用,支持多種消息協議和多種語言的客戶端。 不同的消息中間件在設計思想、功能特性、適用場景等方面都有所差異,需要根據具體的需求和場景選擇合適的消息中間件。
消息中間件選型總的來說:
以上就是消息中間件詳解,希望對你掌握消息中間件有所幫助。 -end- 該文章在 2024/1/23 12:30:36 編輯過 |
關鍵字查詢
相關文章
正在查詢... |