[ADP-612] 事件記錄時間
概述
本 ADP 定義了使用 CloudEvents 記錄時間擴展來實現事件記錄時間的標準方法。
指南
必須(MUST)使用 CloudEvents 記錄時間擴展來實現事件記錄時間。
事件生產者在創建 CloudEvents 時必須(MUST)設置
recordedtime
屬性。recordedtime
屬性必須是符合 RFC 3339 規定格式的時間戳。recordedtime
應等於或晚於事件發生時間(由time
屬性表示)。中間件不得修改
recordedtime
屬性。事件消費者應能夠根據事件的發生時間(
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 來創建可重現的數據集。
- 基於時間的事件捕獲:根據記錄時間實現時間間隔的事件捕獲。