Kafka 壞了? 談 Salesforce CDC (Change Data Capture) 壞掉的原因、預防與補救
我們有一個下游系統透過 kafka 的機制在即時 sync Salesforce 的 oportunity。 某一天,運作地好好的 integration 突然壞了,下游突然收不到資料了。
sync 失敗可能原因
以我們 Salesforce Enterprise Edition的方案為例, 每 24 小時的 event 上限為 25,000。以日常正常用量來說大致夠用。
但若有人一次更新大批資料,則有超量風險。一但超量,subscriber 將收到 error: 403::Organization total events daily limit exceeded
,event 將無法送至 kafka。
Event Usage 可由此查看:
SELECT EndDate,Name,StartDate,Value FROM PlatformEventUsageMetric WHERE EndDate = last_n_days:60 ORDER BY EndDate DESC NULLS FIRST
查詢過去一天有多少 opportunity 遭到 update/create:
workbench query:
SELECT Id,LastModifiedById,LastModifiedDate,Name,OwnerId FROM Opportunity WHERE LastModifiedDate = last_n_days:2 ORDER BY LastModifiedDate DESC NULLS FIRST
如何減少失敗的影響
事前預防
提醒系統管理員,不得突發性大規模更新 opportunity。
若需大規模更新,建議
分成小批量,在不同時間點更新。
排定在週末非工作日更新
更新後密切監控 kafka 運行狀況
Grafana Kafka Overview
k8s / k9s
事中監測
建立自動監控機制,一旦發生超量風險,立刻發通知給 Salesforce 系統管理員
事後修補
手動執行 produce event job。
且需反覆手動執行,直至過去 24 小時內之 usage 回穩。
留言
張貼留言