本文主要對雲訊息佇列 RocketMQ 版涉及的專有名詞及術語進行定義和解析,方便您更好地理解相關概念並使用雲訊息佇列 RocketMQ 版。
Topic
- 訊息主題,一級訊息類型,通過Topic對訊息進行分類。更多資訊,請參見Topic與Tag最佳實務。
訊息(Message)
- 訊息佇列中資訊傳遞的載體。
Message ID
- 訊息的全域唯一標識,由雲訊息佇列 RocketMQ 版系統自動產生,唯一標識某條訊息。
Message Key
- 訊息的業務標識,由訊息生產者(Producer)設定,唯一標識某個商務邏輯。
Tag
- 訊息標籤,二級訊息類型,用來進一步區分某個Topic下的訊息分類。更多資訊,請參見Topic與Tag最佳實務。
Producer
- 訊息生產者,也稱為訊息發行者,負責生產並發送訊息。
Producer執行個體
- Producer的一個對象執行個體,不同的Producer執行個體可以運行在不同進程內或者不同機器上。Producer執行個體安全執行緒,可在同一進程內多線程之間共用。
Consumer
消費位點
- 每個Topic會有多個分區,每個分區會統計當前訊息的總條數,這個稱為最大位點MaxOffset;分區的起始位置對應的位置叫做起始位點MinOffset。
雲訊息佇列 RocketMQ 版的Pull Consumer會按順序依次消費分區內的每條訊息,記錄已經消費了的訊息條數,稱為消費位點ConsumerOffset。剩餘的未消費的條數(也稱為訊息堆積量)= 最大位點MaxOffset-消費位點ConsumerOffset。
- 每個Topic會有多個分區,每個分區會統計當前訊息的總條數,這個稱為最大位點MaxOffset;分區的起始位置對應的位置叫做起始位點MinOffset。
Consumer執行個體
- Consumer的一個對象執行個體,不同的Consumer執行個體可以運行在不同進程內或者不同機器上。一個Consumer執行個體內配置線程池消費訊息。
Group
一類Producer或Consumer,這類Producer或Consumer通常生產或消費同一類訊息,且訊息發布或訂閱的邏輯一致。
Group ID
- Group的標識。
隊列(Message Queue)
- 即Topic Partition,物理上的概念。每個Topic包含一個或多個隊列。建立Topic時隊列由系統自動分配,不支援自訂修改。
叢集消費
- 一個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 版提供類似XA或Open XA的分布事務功能,通過雲訊息佇列 RocketMQ 版的事務訊息能達到分散式交易的最終一致。更多資訊,請參見事務訊息。
順序訊息
- 雲訊息佇列 RocketMQ 版提供的一種按照順序進行發布和消費的訊息類型,分為全域順序訊息和分區順序訊息。更多資訊,請參見順序訊息。
全域順序訊息
- 對於指定的一個Topic,所有訊息按照嚴格的先入先出(FIFO)的順序進行發布和消費。更多資訊,請參見順序訊息。
分區順序訊息
- 對於指定的一個Topic,所有訊息根據Sharding Key進行區塊分區。同一個分區內的訊息按照嚴格的FIFO順序進行發布和消費。Sharding Key是順序訊息中用來區分不同分區的關鍵字段,和普通訊息的Message Key是完全不同的概念。更多資訊,請參見順序訊息。
訊息堆積
- Producer已經將訊息發送到雲訊息佇列 RocketMQ 版的服務端,但由於Consumer消費能力有限,未能在短時間內將所有訊息正確消費掉,此時在雲訊息佇列 RocketMQ 版的服務端儲存著未被消費的訊息,該狀態即訊息堆積。
- 訊息堆積量=處理中訊息量+已就緒訊息量,具體的指標含義,可參考以下說明:
上圖表示指定主題的某一隊列中各訊息的狀態,雲訊息佇列 RocketMQ 版將處於不同處理階段的訊息數量和耗時進行統計,這些指標可直接反映隊列中訊息的處理速率和堆積情況,通過觀察這些指標可初步判斷業務的消費是否異常。具體的指標含義和計算公式如下:
分類
指標
定義
計算公式
訊息數量指標
處理中的訊息(inflight messages)
在消費者用戶端正在處理,但用戶端還未返回消費結果的訊息。
最晚一條拉取訊息的位點-最晚一條提交訊息的位點
已就緒的訊息(ready messages)
訊息在雲訊息佇列 RocketMQ 版服務端已就緒,對消費者可見可被消費的訊息。
最大訊息位點-最晚一條拉取訊息的位點
訊息堆積量(consumer lag)
所有未處理完成的訊息量。
處理中訊息量+已就緒訊息量
訊息耗時指標
已就緒訊息的就緒時間(ready time)
普通訊息、順序訊息:訊息儲存到服務端的時間。
定時/延時訊息:訊息定時或延時結束的時間。
事務訊息:事務提交的時間。
不涉及
已就緒訊息的排隊時間(ready message queue time)
最早一條就緒訊息的就緒時間和當前時刻的時間差。
該時間反映消費者拉取訊息的及時性。
目前時間-最早一條就緒訊息的就緒時間
消費處理延隔時間(comsumer lag time)
最早一條未消費完成的訊息的就緒時間和當前時刻的時間差。
該時間反映消費者完成訊息處理的及時性。
目前時間-最早一條未提交訊息的就緒時間
訊息過濾
- Consumer可以根據訊息標籤(Tag)對訊息進行過濾,確保Consumer最終只接收被過濾後的訊息類型。訊息過濾在雲訊息佇列 RocketMQ 版的服務端完成。更多資訊,請參見訊息過濾。
訊息軌跡
- 在一條訊息從Producer發出到Consumer消費處理過程中,由各個相關節點的時間、地點等資料匯聚而成的完整鏈路資訊。通過訊息軌跡,您能清晰定位訊息從Producer發出,經由雲訊息佇列 RocketMQ 版服務端,投遞給Consumer的完整鏈路,方便定位排查問題。更多資訊,請參見查詢訊息軌跡。
重設消費位點
- 以時間軸為座標,在訊息持久化儲存的時間範圍內(預設3天),重新設定Consumer對已訂閱的Topic的消費進度,設定完成後Consumer將接收設定時間點之後由Producer發送到雲訊息佇列 RocketMQ 版服務端的訊息。更多資訊,請參見重設消費位點。