消息隊列 Kafka 涉及的專有名詞和術語進行定義和解釋,方便您更好地理解相關概念並使用該產品。html
Broker: 消息隊列 Kafka 集羣包含一個或多個消息處理服務器,該服務器被稱爲 Broker。安全
Topic: 每條發佈到消息隊列 Kafka 集羣的消息都有一個主題,這個主題被稱爲 Topic。經過 Topic 能夠對消息進行分類。每一個 Topic 能夠由一個或多個分區(Partition)組成,存儲於一個或多個 Broker 上。服務器
分區(Partition): 消息分區;Partition 是物理上的概念,每一個 Topic 包含一個或多個 Partition。多線程
Producer: 消息發佈者,也稱爲消息生產者,負責生產併發送消息到 Kafka Broker。架構
Consumer: 消息訂閱者,也稱爲消息消費者,負責向 Kafka Broker 讀取消息並進行消費。併發
Consumer Group: 一類 Consumer 的標識,這類 Consumer 一般接收並消費同一類消息,且消費邏輯一致。Consumer Group 和 Topic 的關係是 N:N,同一個 Consumer Group 能夠訂閱多個 Topic,同一個 Topic 也能夠被多個 Consumer Group 訂閱。負載均衡
一個典型的消息隊列 Kafka 集羣包含:分佈式
消息隊列 Kafka 採用 Pub/Sub(發佈/訂閱)模型,其中:網站
本文主要對消息隊列 RocketMQ 涉及的專有名詞及術語進行定義和解析,方便您更好地理解相關概念並使用消息隊列 RocketMQ。阿里雲
Topic
消息主題,一級消息類型,經過 Topic 對消息進行分類。詳情請見Topic 與 Tag 最佳實踐。
Message
消息,消息隊列中信息傳遞的載體。
Message ID
消息的全局惟一標識,由消息隊列 RocketMQ 系統自動生成,惟一標識某條消息。
Message Key
消息的業務標識,由消息生產者(Producer)設置,惟一標識某個業務邏輯。
Tag
消息標籤,二級消息類型,用來進一步區分某個 Topic 下的消息分類。詳情請見Topic 與 Tag 最佳實踐。
Producer
消息生產者,也稱爲消息發佈者,負責生產併發送消息。
Producer 實例
Producer 的一個對象實例,不一樣的 Producer 實例能夠運行在不一樣進程內或者不一樣機器上。Producer 實例線程安全,可在同一進程內多線程之間共享。
Consumer
消息消費者,也稱爲消息訂閱者,負責接收並消費消息。
Consumer 實例
Consumer 的一個對象實例,不一樣的 Consumer 實例能夠運行在不一樣進程內或者不一樣機器上。一個 Consumer 實例內配置線程池消費消息。
Group
一類 Producer 或 Consumer,這類 Producer 或 Consumer 一般生產或消費同一類消息,且消息發佈或訂閱的邏輯一致。
Group ID
Group 的標識。
Exactly-Once 投遞語義
Exactly-Once 投遞語義是指發送到消息系統的消息只能被消費端處理且僅處理一次,即便生產端重試消息發送致使某消息重複投遞,該消息也在消費端也只被消費一次。詳情請見Exactly-Once 投遞語義。
集羣消費
一個 Group ID 所標識的全部 Consumer 平均分攤消費消息。例如某個 Topic 有 9 條消息,一個 Group ID 有 3 個 Consumer 實例,那麼在集羣消費模式下每一個實例平均分攤,只消費其中的 3 條消息。詳情請見集羣消費和廣播消費。
廣播消費
一個 Group ID 所標識的全部 Consumer 都會各自消費某條消息一次。例如某個 Topic 有 9 條消息,一個 Group ID 有 3 個 Consumer 實例,那麼在廣播消費模式下每一個實例都會各自消費 9 條消息。詳情請見集羣消費和廣播消費。
定時消息
Producer 將消息發送到消息隊列 RocketMQ 服務端,但並不指望這條消息立馬投遞,而是推遲到在當前時間點以後的某一個時間投遞到 Consumer 進行消費,該消息即定時消息。詳情請見定時和延時消息。
延時消息
Producer 將消息發送到消息隊列 RocketMQ 服務端,但並不指望這條消息立馬投遞,而是延遲必定時間後才投遞到 Consumer 進行消費,該消息即延時消息。詳情請見定時和延時消息。
事務消息
消息隊列 RocketMQ 提供相似 X/Open XA 的分佈事務功能,經過消息隊列 RocketMQ 的事務消息能達到分佈式事務的最終一致。詳情請見事務消息。
順序消息
消息隊列 RocketMQ 提供的一種按照順序進行發佈和消費的消息類型, 分爲全局順序消息和分區順序消息。詳情請見順序消息。
全局順序消息
對於指定的一個 Topic,全部消息按照嚴格的先入先出(FIFO)的順序進行發佈和消費。詳情請見順序消息。
分區順序消息
對於指定的一個 Topic,全部消息根據 sharding key 進行區塊分區。同一個分區內的消息按照嚴格的 FIFO 順序進行發佈和消費。Sharding key 是順序消息中用來區分不一樣分區的關鍵字段,和普通消息的 key 是徹底不一樣的概念。詳情請見順序消息。
消息堆積
Producer 已經將消息發送到消息隊列 RocketMQ 的服務端,但因爲 Consumer 消費能力有限,未能在短期內將全部消息正確消費掉,此時在消息隊列 RocketMQ 的服務端保存着未被消費的消息,該狀態即消息堆積。
消息過濾
消費者能夠根據消息標籤(Tag)對消息進行過濾,確保消費者最終只接收被過濾後的消息類型。消息過濾在消息隊列 RocketMQ 的服務端完成。詳情請見消息過濾。
消息軌跡
在一條消息從生產者發出到訂閱者消費處理過程當中,由各個相關節點的時間、地點等數據匯聚而成的完整鏈路信息。經過消息軌跡,您能清晰定位消息從生產者發出,經由消息隊列 RocketMQ 服務端,投遞給消息消費者的完整鏈路,方便定位排查問題。詳情請見消息軌跡簡介。
重置消費位點
以時間軸爲座標,在消息持久化存儲的時間範圍內(默認 3 天),從新設置消息消費者對其訂閱 Topic 的消費進度,設置完成後訂閱者將接收設定時間點以後由消息生產者發送到消息隊列 RocketMQ 服務端的消息。詳情請見重置消費位點。
死信隊列
死信隊列用於處理沒法被正常消費的消息。當一條消息初次消費失敗,消息隊列 RocketMQ 會自動進行消息重試;達到最大重試次數後,若消費依然失敗,則代表消費者在正常狀況下沒法正確地消費該消息,此時,消息隊列 RocketMQ 不會馬上將消息丟棄,而是將其發送到該消費者對應的特殊隊列中。
消息隊列 RocketMQ 將這種正常狀況下沒法被消費的消息稱爲死信消息(Dead-Letter Message),將存儲死信消息的特殊隊列稱爲死信隊列(Dead-Letter Queue)。
詳情請見死信隊列。
消息路由
消息路由經常使用於不一樣地域之間的消息同步,保證地域之間的數據一致性。消息隊列 RocketMQ 的全球消息路由功能依託阿里雲優質基礎設施實現的高速通道專線,能夠高效地實現國內外不一樣地域之間的消息同步複製。詳情請見全球消息路由。