核心資料背景作業

具備消費者群組的事件串流

僅追加的事件串流,具備消費者群組、確認機制,並能自動回收當機的消費者所遺留的訊息。

僅追加的日誌
持久
個消費者群組,每個串流
N
則因當機而遺失的訊息
0
步驟 1 / 5
發布事件

訂單服務附加一個事件,並取回它的 ID。

範例工作階段playing
# 發布事件
hotkv> XADD orders * type created order 1182 total 49.00
"1790985600123-0"

以真實 HotKV 指令與範例回覆呈現的動畫導覽。點擊任一步驟即可跳到該步驟。 指令與回覆維持英文,與您在 HotKV 中輸入及看到的完全一致。

問題

對事件做出反應的服務需要的不只是佇列。多個獨立的消費者想要相同的事件,每個消費者群組需要在各個執行個體之間分擔工作,而當某個執行個體帶著手上的訊息停止運作時,必須有人察覺並接手。

HotKV 如何處理

串流是僅追加的日誌。每個消費者群組各自獨立讀取,把每則訊息交給群組中的一位成員,並在該成員確認之前保持待處理。XAUTOCLAIM 會把待處理過久的訊息交給健康的消費者。

逐步說明

逐個指令看看發生了什麼事

  1. 01

    發布事件

    訂單服務附加一個事件,並取回它的 ID。

    XADD orders * type created order 1182 total 49.00
  2. 02

    兩個群組,一個串流

    帳務與出貨各有自己的群組,各自都會收到這個事件。

    XGROUP CREATE orders billing 0 MKSTREAM
  3. 03

    消費

    帳務的一個執行個體讀取其群組的新訊息,並阻塞到有訊息到來為止。

    XREADGROUP GROUP billing billing-1 COUNT 10 BLOCK 5000 STREAMS orders >
  4. 04

    確認

    發票建立後,帳務確認,訊息便離開它的待處理清單。

    XACK orders billing 1790985600123-0
  5. 05

    從當機中恢復

    一個出貨的執行個體帶著訊息停止運作。閒置 60 秒後,這些訊息由健康的執行個體認領。

    XAUTOCLAIM orders shipping shipping-2 60000 0-0 COUNT 25
適用之處

真實世界的情境

訂單管線

訂單流向帳務、出貨與分析,各自以自己的步調讀取同一個串流。

稽核與活動動態

使用者動作附加到串流,並由任何需要歷史記錄的服務重播。

IoT 資料匯入

裝置訊息在串流中緩衝,並由隨負載擴展的一組工作者處理。

內建

您能獲得什麼

僅追加的日誌

項目具有依時間排序的 ID,可依長度或時間修剪。

XADDXTRIM

消費者群組

每個群組都會取得每一則訊息,並在其成員之間分擔工作。

XGROUPXREADGROUP

確認機制

訊息在被確認之前保持待處理。

XACKXPENDING

自動恢復

閒置過久的訊息會由另一個消費者認領。

XAUTOCLAIMXCLAIM

常見問題

我可以重播舊的事件嗎?

可以。XRANGE 能依 ID 讀取串流的任何部分,新的消費者群組也能從頭開始。

如何避免串流無限成長?

用 XTRIM,或 XADD 的 MAXLEN 或 MINID 選項來修剪。

XADD 可以避免重複的事件嗎?

XADD 支援冪等的生產者 ID (IDMP),因此重試的發布不會建立第二個項目。請參閱 XADD 參考。

相關使用情境

在您自己的工作負載上試試看

HotKV 支援 Redis 協定,因此您可以將現有的用戶端指向它,並執行這些相同的指令。