2026-01
在您组织中实施事件驱动架构的最佳实践 架构博客
组织实施事件驱动架构的最佳实践
主要要点
事件驱动架构EDA是现代软件架构的重要组成部分,能够提高团队的独立性和业务灵活性。本文探讨了实现EDA所需的主要组件和架构选择,并提供了相关的组织结构建议。以下是文章的关键内容:
事件驱动架构的组成:包括生产者、消息代理和消费者。职责分工:明确团队在EDA中的角色和责任。所有权模型:集中式与分散式所有权的优缺点。最佳实践:推广云优秀中心的建立、去中心化团队所有权和集中化日志标准。事件驱动架构EDA由能够检测业务活动和状态变化的组件构成,并将这些信息封装为事件通知。现代架构中,事件驱动模式越来越流行,原因在于:
它们是无服务器架构中主要的调用机制。它们是解耦微服务的首选模式,适合异步通信和事件持久化。它们被广泛应用于不同业务领域的系统之间,以实现松散耦合。事件驱动模式的优势在于通过责任的解耦和去中心化实现团队的独立性,从而使企业能够以空前的敏捷性运作,加快功能开发的速度。
在本文中,我们将探讨采用事件驱动模式时需考虑的重要组件和架构决策,并提供有关组织结构的一些指导。

职责分工
EDA中的通信流程是由事件的发生引发的。大多数生产级事件驱动实现通常包含三个主要组件:生产者、消息代理和消费者。
生产者
生产者负责发布正在发生的事件。它们是事件模式数据结构和语义字段的含义,例如枚举字段值的含义的所有者。由于这是生产者与系统下游组件之间的唯一契约,模式及其语义在EDA中至关重要。生产者负责实施变更管理流程,处理不破坏性和破坏性变更,引入破坏性变更时,消费者能够与生产者协商迁移过程。
生产者是“消费者无关”的,因其责任范围在事件发布后结束。
消息代理
消息代理负责事件的持久性,并会将事件保持为可供消费,直到它被成功处理。消息代理确保生产者能够发布供消费者消费的事件,并管理发布和消费消息的访问权限和权限。
消息代理在很大程度上是“事件无关”的,一般不访问或解释事件内容。然而,一些系统根据事件有效载荷或元数据提供路由机制。
消费者
消费者负责消费事件,并拥有事件影响的语义。消费者通常绑定于一个业务上下文,这意味着同一个事件对不同消费者的影响语义是不同的。在实现消费者时,处理失败的消息交付或重复消息是重要的架构选择。根据事件的业务解释,消费者在从失败中恢复时可能允许重复事件,例如采用幂等消费者模式。
消费者是“生产者无关”的,责任范围在事件准备好被消费时开始。这使得新消费者可以进入系统而无需更改生产者合同。
团队独立性
为了强化职责分工,公司应按生产者、消息代理和消费者的所有权来组织技术团队。虽然在EDA实现中,生产者和消费者的所有权相对明确,但消息代理的所有权可能不如想象中简单。针对您所在组织的结构,可以采取不同的方法来确定消息代理的所有权。
去中心化的所有权
在去中心化的所有权组织结构中见图2,生产事件的团队负责管理自己的消息代理以及事件的持久性和可用性。
采用基于Amazon Simple Queue Service (SQS) 和 Amazon Simple Notification Service (SNS) 的主题扇出模式可以帮助企业实现去中心化所有权模式。同样,基于Amazon EventBridge的总线模式也可以使用见图4。
去中心化所有权方法有助于促进团队独立性,但并不适合所有组织。有效实施这一方法需要成熟的DevOps文化。在这种情况下,生产团队负责管理消息代理基础设施和非功能性要求标准。
集中式所有权
在集中式所有权组织结构中,一个中央团队我们称之为“平台团队”负责管理消息代理见图5。拥有专门的平台团队有助于非功能性需求的标准化实施,如可靠性、可用性和安全性。一个缺点是平台团队在开发和部署生命周期中可能成为单点故障,这可能导致瓶颈,从而危及团队独立性和操作效率。
在前面的实施模式基础上,拥有专门的团队使得实施流媒体模式更为简单。在这种情况下,需要深入理解数据是如何分区以及系统如何扩展。流媒体模式可以使用Amazon Managed Streaming for Apache Kafka (MSK)或Amazon Kinesis Data Streams来实现见图6。
组织实施事件驱动架构的最佳实践
集中式和去中心化所有权组织结构分别增强团队独立性和非功能性需求的标准化。然而,它们会对公司工程职能的成长带来潜在限制。从这两种方式中得到启发,可以实施一套最佳实践以最大限度地减少这些限制。
建立云卓越中心CCoE。CCoE在工程团队中标准化非功能性实施,为促进强DevOps文化,CCoE不应为外部独立团队,而是由代表不同工程团队的个体成员组成。去中心化团队所有权。将消息代理的所有权和维护去中心化至生产团队。这将最大限度地提升团队独立性和敏捷性,授权团队在遵循CCoE指南的前提下,选择合适的工具。集中化日志标准和可观察性策略。尽管将事件驱动架构组件的团队所有权去中心化是一种最佳实践,但日志标准和可观察性策略应在工程职能中集中和标准化。这样的集中化有助于请求和事件的端到端追踪,这是一种在发生任何故障时强有力的诊断工具。结论
在这篇文章中,我们描述了事件驱动架构的主要构件,并将消息代理的所有权归属视为您可以做出的最重要的架构选择之一。我们介绍了集中式和去中心化的组织方法,阐明了这两种方法的优势及其对工程组织成长的限制。我们提供了一些可以在您组织中实现的最佳实践,以最大限度地减少这些限制。
鲸鱼官方正版官方入口进一步阅读:要开始构建AWS中的事件驱动架构的旅程,请探索以下内容:
有关基于总线和主题的模式,请参见 什么是事件驱动架构?有关流媒体模式,请参见 什么是 Apache Kafka?,以及 Amazon Kinesis。Emanuele Levi
Emanuele是企业软件和SaaS团队的解决方案架构师,驻伦敦。Emanuele在帮助英国客户将单体应用重构为现代微服务SaaS架构的过程中,特别关注事件驱动模式和设计,尤其是在应用于分析和人工智能时,他在欺诈检测领域也拥有专业知识。