事件驱动架构(Event-Driven Architecture, EDA)是一种软件架构模式,它强调系统内各个组件之间通过事件或消息进行通信和协作。在事件驱动架构中,系统的各个部分(服务、组件等)不直接调用彼此的方法来进行通信,而是通过发送和接收事件或消息来实现解耦和松散耦合。
1.1 实施过程
事件代表系统中发生的重要事物或状态变化,可以是用户操作、传感器数据更新、系统错误等。消息是事件的载体,用于在系统内部或不同系统之间传递事件的数据和相关信息。
事件生产者产生事件并将其发送到系统中,事件消费者订阅特定类型的事件,并根据事件发生执行相应的逻辑或处理。
1.2 主要特点
事件驱动架构是一种非常流行的分布式异步架构模式,经常被用与构建高可伸缩性的应用程序。这种架构模式由一系列高度解耦的、异步接收和处理事件的单一职责的组件所组成,低代码平台中的事件触发和响应机制,如表单提交、流程状态变更、用户界面交互等,可以作为事件驱动架构中的事件源。
事件驱动架构具备以下特点:
松散耦合: 事件驱动架构通过事件的发布和订阅机制,实现了组件之间的松散耦合。系统的不同部分可以独立地演化和扩展,而不会直接影响到其他部分。
异步性: 事件驱动架构通常是异步的,即事件的发布和处理是非阻塞的,系统可以处理大量事件而不会被单个事件的处理时间所阻塞。
扩展性: 事件驱动架构通常支持跨平台的消息传递和事件处理,系统可以部署在不同的硬件设备或云平台上,并与其他系统进行集成交互。
1.3 实现方式
调停者拓扑是一种基于事件驱动架构的特定设计模式,旨在通过明确定义的调停者来处理和协调系统中的事件流。调停者拓扑通过引入中心化的调停者来管理事件的路由和分发。
调停者拓扑主要有5个主要的架构组件组成:事件(Event)、事件队列(Event Queue)、调停者(Event Mediator)、事件通道(Event Channel)和事件处理器(Event Processor)。
Event通过服务端发送到Event Queue,Event Queue传递消息到Mediator。Mediator接收到队列传递过来的原始消息,然后编排成异步的消息发送到Event Channel,Event Channel则通过具体的Event Processor响应具体的业务逻辑。
其中的「事件」常常是固定的,事件的分发传递的机制也是固定的,只有「响应」是可变的,或者说是可以配置或者编排的。软件开发的OCP原则告诉我们:“软件应该对修改关闭,但要对扩展开放”。而事件驱动就是在保持了事件和核心逻辑的稳定性和不被修改的前提下,通过定义不同的「响应」从而达到了对“扩展的开放”。
事件处理器(Event Processor)就是对事件的「响应」,在七巧低代码中具体的集成方式有:自定义事件脚本、扩展插件、第三方服务、连接器、业务编排等。
1.4 应用场景
事件驱动架构可应用于传感器数据、交易数据等的实时数据分析和处理,通过事件驱动的方式记录系统中每个重要操作的事件,可用于日志记录和审计,微服务中也通常通过事件驱动架构来实现解耦和异步通信。
常见的事件驱动架构的实现技术包括消息队列(如Kafka、RabbitMQ)、发布/订阅系统(如Redis Pub/Sub、AWS SNS)、事件驱动的微服务框架(如Spring Cloud Stream、Apache Kafka Streams)等。