用途:以异步事件通信组织系统,解耦生产者与消费者,提升可扩展性与韧性。适用于实时或突发负载(如物联网、金融交易、物流),多个子系统需响应同一业务事件,以及需要在不修改现有服务的情况下扩展新组件的场景。
主要能力与采用步骤:一、事件建模,定义规范事件模式、版本策略与事件类型归属;二、选择拓扑,在编排(如简单发布/订阅)与协调(如中央控制器或 saga 协调器)之间按数据流明确取舍;三、构建事件平台,选择事件代理或消息网格,配置消息顺序、主题分区与数据保留策略;四、失败处理,实现死信队列(DLQ)、自动重试、幂等消费者与事件重放工具;五、可观测性,监控消费者延迟、消息吞吐、模式校验失败与消费者健康。
关键交付物:记录事件分类、代理技术与治理策略(命名、版本、保留)的架构决策记录(ADR);带 CI 自动校验与消费者驱动契约测试的集中式模式仓库;监控全局吞吐、消费者延迟与 DLQ 深度的运维看板。
工作流要点:阶段一事件设计,定义并版本化 JSON 事件负载(v1),决定“OrderCreated”(胖事件)与“OrderReference”(瘦事件)的粒度,为每个事件加入唯一 event_id 以保证幂等;阶段二架构搭建,确定生产者事件触发点(如事务之后),按负载与延迟需求选择 Kafka/RabbitMQ/SQS,为消费者配置失败重试(DLQ)策略;阶段三监控,用 OpenTelemetry 追踪生产者到代理再到消费者的请求链,监控消费者延迟并设置告警。检查点包括:事件模式变更是否向后兼容、同一事件重复到达时系统是否仍正常、系统崩溃重启后是否丢失消息。
风险与缓解:事件隐藏耦合,消费者可能隐式依赖未记录的事件语义或字段,应发布正式事件目录或模式注册表并用 lint 工具强制事件结构;运维复杂与“噪音”,缺乏强可观测性时难以诊断失败或卡住的消费者,应强制使用分布式追踪与统一告警;事件风暴分析瘫痪,工作坊需限时并优先聚焦高价值业务上下文。
限制:资料未提供具体安装命令、代码示例、收费与平台支持信息。