Skip to content
ADE
API Design EssentialsBETA

[ADE-612] 事件記錄時間 ​

概述 ​

本 ADE 定義了使用 CloudEvents 記錄時間擴展來實現事件記錄時間的標準方法。

指南 ​

  1. 必須(MUST)使用 CloudEvents 記錄時間擴展來實現事件記錄時間。

  2. 事件生產者在創建 CloudEvents 時必須(MUST)設置 recordedtime 屬性。

  3. recordedtime 屬性必須是符合 RFC 3339 規定格式的時間戳。

  4. recordedtime 應等於或晚於事件發生時間(由 time 屬性表示)。

  5. 中間件不得修改 recordedtime 屬性。

  6. 事件消費者應能夠根據事件的發生時間(time)和記錄時間(recordedtime)來處理事件。

CloudEvents 記錄時間擴展 ​

記錄時間擴展為 CloudEvents 添加了一個屬性:

  • recordedtime:在此 CloudEvent 中記錄事件發生的時間戳,即生產者創建 CloudEvent 的時間。

帶有 recordedtime 的 CloudEvent 示例:

json
{
    "specversion" : "1.0",
    "type" : "com.example.someevent",
    "source" : "/mycontext",
    "id" : "C234-1234-1234",
    "time" : "2023-06-01T10:30:00Z",
    "recordedtime": "2023-06-01T10:30:05Z",
    "data" : {
        "message" : "此事件在發生 5 秒後被記錄"
    }
}

實施建議 ​

  • 實現機制以在創建事件時準確捕獲和設置 recordedtime。
  • 在適當的情況下,同時使用 time 和 recordedtime 進行事件排序和處理。
  • 考慮實現數據版本控制或事件溯源模式,以處理需要重新記錄或修改事件的情況。
  • 提供關於系統中 recordedtime 語義和用法的清晰文件。
  • 根據 time 和 recordedtime 之間的差異實現監控和警報,以檢測系統延遲。

使用案例 ​

  • 雙時態數據表示:能夠表示事件發生的時間和記錄的時間,對某些監管和分析場景至關重要。
  • 延遲監控:測量事件發生和記錄之間的時間差,以監控系統性能。
  • 數據版本控制:使用 recordedtime 區分同一事件的多個記錄,在事件溯源模式中很有用。
  • 可重現分析:通過在查詢中同時限制 time 和 recordedtime 來創建可重現的數據集。
  • 基於時間的事件捕獲:根據記錄時間實現時間間隔的事件捕獲。

相關 ADE ​

參考資料 ​