Skip to content
ADP
API Design PrincipleBETA

[ADP-610] 事件排序

概述

本 ADP 定義了使用 CloudEvents 序列擴展來實現事件排序的標準方法。

指導原則

  1. 必須(MUST)使用 CloudEvents 序列擴展來實現事件排序。

  2. 事件生產者必須(MUST)為需要排序的事件設置 sequence 屬性。

  3. sequence 屬性必須(MUST)是非空的、可按字典序排序的字串。

  4. sequence 屬性應該(SHOULD)單調遞增且連續。

  5. 事件消費者應該(SHOULD)能夠根據事件的序列順序處理事件。

CloudEvents 序列擴展

序列擴展為 CloudEvents 添加了一個屬性:

  • sequence: 表示事件相對順序的字串值。

帶有 sequence 的 CloudEvent 示例:

json
{
    "specversion" : "1.0",
    "type" : "com.example.someevent",
    "source" : "/mycontext",
    "id" : "C234-1234-1234",
    "time" : "2023-06-01T10:30:00Z",
    "sequence": "000000000042",
    "data" : {
        "message" : "這是一個有序事件"
    }
}

實施建議

  1. 選擇適當的序列生成策略,確保字典序排序(例如,補零的整數、具有足夠精度的時間戳)。

  2. 實現處理亂序事件接收的機制,如緩衝和重新排序。

  3. 考慮將 sequence 屬性與 source 屬性結合使用,以維護特定事件流內的順序。

  4. 實現序列間隙或重複的錯誤處理。

  5. 為您的特定用例提供清晰的文件,說明 sequence 屬性的語義和有效值。

使用案例

  1. 金融交易: 確保帳戶交易按正確順序處理。