标准答案
- 验证来源签名、时间窗口和事件格式,使用 provider event ID 做幂等去重;重复事件返回成功但不重复执行。
- 事件携带版本或序列时只接受比当前状态更新的事件;没有顺序保证时重新查询权威状态,不能按到达顺序盲目覆盖。
- 处理与状态更新要可重试,失败进入队列或死信并告警;对外部回调返回成功的时机要与本地持久化一致。
题目解析
幂等去重记录不能无限增长,应按供应商重放窗口和审计需求保留;超出窗口的旧事件仍需检查版本,防止状态回退。
模型回调的文本或工具结果是外部输入,入库前做 Schema、权限和状态校验。
队列保证的是投递语义,不是业务恰好执行一次;业务状态机和唯一约束才是最终防线。
常见误区
- 只按 webhook 到达时间更新状态。
- 收到重复事件就返回错误,触发供应商无限重试。
- 验签通过后直接信任事件中的租户和资源归属。