跳转到内容

Event-Driven Integration Architecture(事件驱动集成架构)

知识库位置:FDE Knowledge Base/04 Architecture/Patterns/09-Event-Driven-Integration-Architecture.md

Architecture Metadata(架构元数据)

Section titled “Architecture Metadata(架构元数据)”
Architecture ID: ARCH-009
Category(类别):
Integration(集成)
Primary Business Problem(主要业务问题):
Multiple Systems Collaborating Around Business Events
(多系统围绕业务事件协作)
Complexity(复杂度):
Medium-High(中高)
AI Dependency(AI 依赖度):
Low(低)
Data Dependency(数据依赖度):
Medium(中)
Integration Complexity(集成复杂度):
High(高)
Human Review(人工复核):
Not needed(不需要)
Status: Core
Version: v0.2

多个企业系统需要围绕业务事件协作。

例如:

OrderCreated(订单已创建)
CustomerUpdated(客户已更新)
PaymentCompleted(支付已完成)
TicketEscalated(工单已升级)

如果每个系统都互相调用 API(应用程序编程接口),会形成复杂耦合。


Producer(生产者)
│
↓
Event Bus(事件总线)
┌──────┼──────┐
↓ ↓ ↓
Consumer A Consumer B Consumer C
(消费者A)(消费者B)(消费者C)
↓ ↓ ↓
CRM Billing Analytics

  • Loose Coupling(松耦合)
  • Async Processing(异步处理)
  • Multiple Consumers(多消费者)
  • Better Extensibility(更好的可扩展性)

引入:

  • Eventual Consistency(最终一致性)
  • Debugging Complexity(调试复杂度)
  • Ordering Issues(顺序问题)
  • Duplicate Events(事件重复)
  • Schema Evolution(结构演进)

事件应该表达:

Something happened.(某事已发生。)

例如:

OrderCreated(订单已创建)

而不是:

PleaseUpdateCRM(请更新 CRM)

前者是业务事实(Fact,事实)。

后者是命令(Command,命令)。


建议至少包含:

event_id(事件编号)
event_type(事件类型)
timestamp(时间戳)
source(来源)
version(版本)
correlation_id(关联编号)
payload(载荷)

事件长期存在,所以要考虑:

  • Backward Compatibility(向后兼容)
  • Versioning(版本管理)
  • Consumer Migration(消费者迁移)

推荐:

Producer(生产者)
↓
Durable Event(持久化事件)
↓
Consumer(消费者)
↓
Idempotent Processing(幂等处理)

  • Duplicate Events(事件重复)
  • Consumer Unavailable(消费者不可用)
  • Schema Mismatch(结构不匹配)
  • Poison Message(毒消息)
  • Ordering Problem(顺序问题)
  • Unknown Event Version(未知事件版本)