ENGINEERING NOTE 30 / 50 · CARD

安全处理乱序卡片事件

OPEN RAMBO ·

Webhook到达顺序不等于交易时间线。持久化事件,并在必要时用标识、版本和权威查询核对状态。

本文由 OPEN RAMBO 发布。工程方案和伪代码用于说明设计,不是现有产品 API 文档;示例数字均为演示。

分离接收与应用

验证事件并持久保存后再确认接收。工作器以幂等方式应用业务影响。确认后处理失败,持久队列仍可恢复。

不要倒退状态

迟到授权不能抹掉已清算交易。按事件语义设计迁移,而非只按最后写入时间。退款先于原扣款到达时先待核对,不虚构原交易。

有控制地重放

重放工具限定安全事件引用和时间窗。可重建派生视图,但不能重复资金流水。记录操作人原因,并比较重放前后总额。

示意流程

if event_id_already_seen(event.id): return existing_result
persist(event)
apply_if_transition_is_valid(event)
# Unresolved dependencies enter reconciliation.

如何验收

将同一乱序事件集重放两次,两次最终账本与用户状态应相同。

延伸阅读

继续阅读