SuperAPI AI 工具集

event-driven-architecture

设计与创作

查看项目

更新于 10-15 20:27

技能介绍

用途:本技能从领域事件离开进程的那一刻开始,处理事件跨越进程或服务边界、被非同一部署单元的消费者消费时的架构问题。进程内的事件返回与单事务聚合由 architecture 技能负责,本技能负责“线上”部分。

主要能力:提供决策树判断是否真的需要异步——不跨边界就留在进程内;跨边界且调用方需要立即答案就用同步请求/响应;只有工作可以事后完成才用异步消息。异步时依次处理:事件如何离开上下文、如何可靠发布而不丢失、重投递或失败时怎么办、模式如何随时间演进、多步流程由谁协调。

关键区分:领域事件与集成事件;事件通知、事件携带状态转移与事件溯源;至少一次投递与恰好一次处理(端到端恰好一次不可实现,需至少一次投递加幂等消费者,Kafka EOS 与 SQS FIFO 仅在其自身边界内成立);增量与破坏性模式变更;编排与协同;队列与日志。

两条硬性约束:绝不把活的聚合序列化上线,线上载荷应是独立、带版本的事件契约;任何跨服务边界的东西都是公开契约,需像已发布 API 一样独立演进。

适用场景:需要时间解耦、负载削峰、扇出或长耗时工作,且耦合确实值得引入消息中间件时。

限制:默认应使用同步请求/响应;队列不会自动提升韧性,反而增加延迟与故障模式;“以后可能要扩展”不是现在加 broker 的理由。可观测性上建议在消息头传播 W3C Trace Context,并采用 OTel 消息语义约定。具体实现细节见各 references 文件。