Skip to content
ADP
API Design PrincipleBETA

[ADP-612] 事件記錄時間

概述

本 ADP 定義了使用 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
  • 在適當的情況下,同時使用 timerecordedtime 進行事件排序和處理。
  • 考慮實現數據版本控制或事件溯源模式,以處理需要重新記錄或修改事件的情況。
  • 提供關於系統中 recordedtime 語義和用法的清晰文件。
  • 根據 time 和 recordedtime 之間的差異實現監控和警報,以檢測系統延遲。

使用案例

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

相關 ADP

參考資料