什么是事件驱动架构?

复制 URL

事件驱动架构是一种用于应用设计的软件架构和模型。事件驱动系统旨在捕获、沟通和处理解耦服务之间的事件。这意味着,系统可以保持异步,同时仍共享信息和完成任务。 

许多现代应用设计都是由事件驱动的,例如必须实时利用客户数据的客户互动框架。事件驱动应用可以用任何一种编程语言来创建,因为事件驱动本身是一种编程方法,而不是一种编程语言。事件驱动架构支持最小程度的耦合,因此非常适合现代分布式应用架构。

EDA 采用松散耦合方式,因为事件发起者并不知道哪个事件使用者在监听事件,而且事件也不知道其所产生的后续结果。

 

了解事件驱动的自动化

事件用于记录系统硬件或软件的任何重要事件或状态变更。事件与事件通知不同,事件通知是由系统发送的消息或通知,用于通知系统的另一方发生了事件。

事件源可能来自于内部输入,也可能是外部输入。事件可以由用户生成,例如单击鼠标或按键;也可以是外部来源,例如传感器输出;或来自于系统,例如加载程序。

红帽资源

解耦与松散耦合指的是软件架构和事件驱动系统中两个相关但不同的概念。

解耦是消除或最小化系统中独立组件之间的直接依赖关系的做法,以便组件之间不存在“唇亡齿寒”的关系。在 EDA 的语境下,通过确保生成事件的组件只需发送事件数据,而不必考虑特定的使用者组件,从而实现解耦。这种“断联”使组件彼此独立,创造出总体更灵活的系统。

松散耦合是一种特定形式的解耦,旨在降低组件之间的相互依赖的程度,而不是将它们完全分离开。在松散耦合的系统中,组件可能会彼此交互,但不会导致形成任何形式的依赖关系。

这两种系统都有利于提高灵活性和独立性,进而创造出敏捷且可扩展的系统。

事件驱动架构由事件发起者(发布者)和事件使用者(订阅者)组成。事件发起者检测或感知事件,并以消息的形式呈现事件。由于是解耦系统,它不知道事件的使用者,也不知道事件的结果。

检测到事件后,将从事件发起者通过事件通道将事件传输给事件使用者,在事件通道中,事件处理平台会异步处理事件。发生事件时,需要通知事件使用者。他们可能会处理事件,也可能只是会受到事件影响。

事件处理平台将执行正确的事件响应,并将活动发送给下游正确的使用者。该下游活动即看到事件结果的位置。

Apache Kafka 是一个分布式数据流平台,是备受欢迎的事件处理解决方案。它能够实时处理事件流的发布、订阅、存储和处理。Apache Kafka 支持各种重视高吞吐量和可扩展性的用例,通过最大程度减少某些应用中对数据共享的点对点集成需求,因而可以将延迟降至毫秒级。

除此之外,还有其他一些中间件事件管理器也可用作事件处理平台。

事件驱动架构可以基于发布/订阅模型或事件流模型。

发布/订阅模型
这是基于事件流订阅的消息传递基础架构。借助该模型,在事件发生或发布后,事件将发送给需要通知的订阅者。

事件流模型
借助事件流模型,事件会被写入日志。事件使用者无需订阅事件流。相反,他们可以读取事件流的任何部分,并可以随时加入事件流。

事件流有几种不同的类型:

  • 事件流处理会使用数据流平台(如 Apache Kafka)获取事件,并处理或转换事件流。 
  • 简单事件处理是指事件会立即触发事件使用者行动的情形。

复杂事件处理需要事件使用者处理一系列事件才能检测到模式。事件流处理可用于检测事件流中有意义的模式。

EDA 可以帮助企业实现灵活的系统,能够通过适应变化并实时做出决策来改进工作流。实时情境感知意味着企业决策(无论是手动还是自动化)都可以使用能够反映系统当前状态的所有可用数据来做出决定。

物联网(IoT)设备、应用和网络等事件源发生事件时,事件便会被捕获,使事件发起者和事件使用者能够实时共享状态和响应信息。

企业可以向其系统和应用添加事件驱动架构,提高应用的可扩展性和响应速度,改善对数据和背景信息的访问以做出更明智的业务决策。

事件驱动架构提供解耦优势,数据或服务的发起者和使用者不需要直接沟通,因此有利于打造更灵活且扩展性高的系统。进而进一步简化新组件的集成,提高容错性和系统的整体效率。

红帽提供集成的工具和管理软件,可以帮助您快速地跨混合云环境连接传统技术和微服务,利用敏捷集成支持您的事件驱动架构。

红帽 OpenShift 与红帽应用基础的工具集可以帮助企业提高开发人员生产力,自动执行 CI/CD 管道,提前实施安全防护,并将安全防护贯彻落实到整个开发周期。这样一来,通过自动化 DevSecOps 实践,并在运行时提供应用安全防护,助力打造更安全的软件供应链。

OpenShift Dev Spaces 功能可为开发人员提供更快、一致且更可靠的开发环境,同时帮助 IT 运维实现集中管控。无服务器服务网格等 OpenShift 功能,以及红帽应用服务功能(如应用运行时和框架、API 管理、数据流、事件驱动服务等)使开发人员能够自助访问语言和工具,提高他们的工作效率。如果开发人员要选择特定的工具,那么红帽还可以提供广泛的合作伙伴解决方案生态系统,确保兼容 OpenShift。

继续阅读有关红帽集成方法的内容
中心

红帽官方博客

获取有关我们的客户、合作伙伴和社区生态系统的最新信息。

所有红帽产品试用

我们的免费试用可让您亲身体验红帽的产品功能,为获得认证做好准备,或评估某个产品是否适合您的企业。

扩展阅读

什么是应用集成?

应用集成可将不同的系统和应用连接起来,使它们可通过交换数据和使用服务进行协作。

一文看懂 API 是什么,有什么用?- 红帽

应用编程接口(API)是一组用于构建和集成应用软件的定义和协议。通过向合作伙伴或公众提供您的 API,可以:创造新的收入渠道,扩大您的品牌覆盖范围,通过外部开发和协作,推动开放创新或提高效率。

一文看懂 GraphQL 是什么?都有哪些优缺点 - 红帽

GraphQL 是一种用于应用编程接口(API)的查询语言和服务器端运行时,作为 REST 的替代方案,它可以使客户端准确地获得所需的数据,没有任何冗余。让 API 变得快速、灵活并且为开发人员提供便利。

集成 相关资源