事件在计算领域,是指系统设计用来监视的可检测到的发生或状态变化,例如用户输入、硬件中断、系统通知,或数据或条件的变化。当与事件处理程序关联时,事件会触发一个响应。处理程序可以同步运行,此时执行线程被阻塞直到事件处理程序完成其处理;也可以异步运行,此时事件可能稍后再处理。即使同步处理看似阻塞执行,许多系统的底层机制仍然是异步的,由事件循环管理。
事件可以通过多种机制实现,例如回调、消息对象、信号或中断,且事件本身与所用的实现机制是不同的。事件传播模型,例如、捕获和发布/订阅,定义了事件在系统中如何分发和处理。其他关键方面包括事件循环、事件排队与优先级、事件溯源和复杂事件处理模式。这些机制促成了事件驅動程式的灵活性和可扩展性。
事件与消息
在分布式系统中,事件表示一个事实或状态变化(例如“OrderPlaced”),通常以异步方式广播到多个消费者,从而促进松耦合和可扩展性。虽然事件通常不期望立即响应,但确认机制常在基础设施层面实现(例如Kafka的提交偏移量、SNS的交付状态),而不是作为事件模式本身的固有部分。
相比之下,訊息承担更广泛的角色,包含命令(例如“ProcessPayment”)、事件(例如“PaymentProcessed”)和文档(例如“DataPayload”)。事件和消息都可以支持多种交付保证,包括至少一次、至多一次和恰好一次,这取决于技术栈和实现。然而,恰好一次交付通常通过幂等性机制实现,而非真正的基础设施级别的恰好一次语义。
事件和消息的传递模式包括发布/订阅(一对多)和点对点(一对一)。尽管请求/应答在技术上是可能的,但它更常与消息模式相关联,而不是纯事件驱动系统。事件擅长状态传播和解耦通知,而消息更适合命令执行、工作流编排和显式协调。另一方面,监视器更为通用,因为它们将完成信号与互斥锁结合,并且不允许生产者和消费者在监视器中同时执行,使其成为事件加临界区的组合。
相关
- 回调函数
- 触发器 (数据库)
*
- 事件驅動程式設計
- 异常处理
*
- 中斷
- 观察者模式(例如,事件监听器)
- 反应器模式vs.
*
*
参考
评论 (0)