对事务驱动架构的理解

事件驱动架构(Event-Driven Architecture, EDA)是一种软件架构的模式,通过事件的产生、事件订阅、事件消费来进行业务流转和处理。服务之间通过发布/订阅进行通信,而不是直接调用。

EDA是一种架构模式,MQ是一种实现这种模式的手段。

事件驱动架构的核心组件

事件生产者

负责生成事件并将其发布出去,它不关心谁会消费这些事件,也不关心消费者的具体逻辑。

事件消费者

订阅感兴趣的事件,并在接收到事件时执行相应的业务逻辑,它不关心事件是如何产生的,只关心事件的内容。

事件通道/代理

负责接收事件、存储事件,并将事件路由或分发给订阅者。

事件驱动架构的优势

高度解耦

服务之间完全解耦,生产者无需知道消费者,消费者无需知道生产者。

高扩展性

易于增加新的消费者来响应事件,不影响现有服务。

可靠性/高韧性

生产者和消费者都是独立运行,即使一方这哪是不可用,事件也不会丢失。

实时性

适合处理实时数据流和快速响应业务变化。

事件驱动架构的挑战

一致性问题

分布式事务一致性需要通过补偿或者本地消息表的方式进行实现,最终一致性。

难以调试和追踪

缺乏直接调用链路,难以追踪和调试。

事件风暴

不当设计可能导致大量事件循环或难以控制。

事件定义

如何合理的定义事件。

幂等性

消费者需要保证重复事件的幂等性处理。

事件驱动的未来发展

Serverless集成

更多的与serverless函数结合,实现事件触发的按需计算。

云原生化

成为云原生化重要组成部分,与K8s、Service Mesh深度结合。

流处理平台

结合Kafka Stream、Flink技术,实现更复杂的实时响应。

业务中台

支撑业务中台构建,实现数据和能力共享。