什么是事件驱动(EDA)

什么是事件驱动

事件驱动架构(Event-Driven Architecture, EDA)是一种基于事件的软件架构模式,它通过异步、松耦合的方式实现系统中各个组件之间的消息传递,从而支持高可扩展性、高可用性、高性能和灵活性。

在事件驱动架构中,所有的信息都以事件的形式进行表达和处理。一个事件是一个抽象的、有意义的数据集,这些数据集可以被其他的服务接收、解码并做出对应的响应。 事件可以由客户端、服务端或第三方应用程序生成,根据需要发送到任何其他服务以触发后续操作。在 EDA 中,组件之间通过发布(Publish)和订阅(Subscribe)事件来实现协作,事件可以是用户操作、系统状态变化、传感器数据等。

Gartner 将事件驱动架构(EDA)列为十大战略技术趋势之一,并强调事件驱动架构 (EDA) 是技术和软件领域发展的主要驱动力。EDA 是实时敏捷数字业务的核心,通过“监听”物联网 (IoT) 设备、移动应用程序、生态系统以及社交和业务网络等事件源,以数字形式实时捕获真实世界的业务事件。

过去,以 API 为中心的应用程序设计架构显著提升了业务的敏捷性,但随着数字化业务场景越来越复杂,企业对于实时智能、敏捷响应、上下文自适应等需求增加。仅依靠 API 为中心的请求驱动模型就显得力不从心。随着越来越多数字化系统的接入,应用程序变得更难拓展,连接的 API 网络更难管理,不同系统间的数据壁垒越筑越高,系统的耦合度越来越高。而依托事件驱动架构异步、松耦合的特性,将各个业务系统解耦,降低系统间的依赖程度,最大程度提升企业数字敏捷性。

在这里插入图片描述

事件驱动架构

场景例子

当你的公司需要招聘一名新员工,基础流程包括:发布职位广告-面试-录用-人事准备-入职程序-工作安排。这是一个基础的招聘流程,在这个流程中,每一个步骤都是基于一个特定的事件来进行的。例如,招聘过程是基于公司需要新员工这个事件的触发来进行的;面试是基于收到应聘者申请这个事件的触发来进行的;录用是基于面试考核通过这个事件的触发来进行的。

以上是一个常见的事件驱动用例。该用例是企业标准的招聘流程或系统,企业管理者只需要搭建好整套招聘流程和拟定标准,以及每个节点所需要的人员。在管理者需要招聘新员工时,只需要发布指令,该招聘系统则会自动依照流程运作,直至返回招聘结果。以上述场景为例,事件驱动架构主要包括四个关键组件:

事件:在系统中发生的任何事情都可以看作是一个事件。在员工入职流程中,例如发布招聘广告、收到应聘者申请、发出录用通知、完成培训等都可以看作是事件。

事件生成器:事件生成器是触发事件的对象。在员工入职流程中,例如发布招聘广告的人员、收到应聘者申请的招聘专员、发出录用通知的人事专员等都可以看作是事件源。

事件处理器:事件处理器是针对特定事件的处理逻辑。在员工入职流程中,例如招聘专员负责面试和录用流程,人事专员负责人事准备和入职程序,部门经理负责为新员工安排工作等都可以看作是事件处理程序。

事件存储:事件存储是用于存储事件,用于保存事件以便以后审计和回溯。。在员工入职流程中,事件队列可以是公司的招聘管理系统或人事管理系统。

在事件驱动架构中,事件源触发一个事件,该事件被放入事件队列中等待被处理。事件处理程序从事件队列中获取事件并执行相应的逻辑,最终完成事件的处理。在上述员工入职流程中,当公司需要新员工时,招聘专员发布招聘广告并收到应聘者申请,这些事件会被放入事件队列中,招聘专员则会从事件队列中获取这些事件并执行面试和录用流程。

在这里插入图片描述

事件驱动的价值

降低系统之间的依赖性

在传统的系统中,不同的组件需要在代码层面进行耦合,例如通过函数调用或共享变量等方式。这种紧密的耦合会导致组件之间高度依赖,当一个组件需要修改时,往往需要同时修改其它组件的代码,这样会导致系统的不稳定性和难以维护。

相比之下,事件驱动架构中,组件之间通过事件进行通信,而不是直接调用代码或共享变量。当一个组件完成某个任务时,它将触发一个事件,然后将这个事件发送给系统中的其他组件。其他组件可以根据自己的需要选择是否要监听这个事件,如果监听则可以响应事件并执行相应的操作。这种机制使得系统中的组件可以相对独立地进行开发和维护,减少了代码之间的耦合度。

这种松耦合方式使得系统具有更高的可维护性和可扩展性。当需要修改某个组件时,仅需要对该组件进行修改,而不需要同时修改其他组件的代码。这不仅简化了开发过程,同时也使得系统更加健壮和灵活,因为不同的组件可以独立地进行部署和升级。同时,这种事件驱动架构的松耦合特性也使得系统更加容易进行扩展和集成,因为新的组件可以很容易地添加到系统中而不会影响到其他组件的运行。

提高可用性和可靠性

传统的系统通常采用紧耦合的方式,即各个组件之间紧密依赖,一个组件的故障很容易影响到其他组件的正常运行,从而导致系统的故障和不可用。在事件驱动架构中,当某个组件出现故障时,其他组件可以选择是否监听该事件,不受影响的组件可以继续执行自己的任务而不受影响。因此,这种松散的耦合方式可以提高系统的可用性和可靠性。

此外,事件驱动架构还可以通过异步事件处理的方式来提高系统的可用性和可靠性。异步事件处理的特点是事件的处理是非阻塞的,即组件不需要等待事件的处理结果就可以继续执行自己的任务。这种处理方式可以降低系统的延迟,并且能够处理大量的并发请求,从而提高系统的性能和可靠性。

事件驱动架构还可以通过实现事件溯源机制来提高系统的可靠性和容错性。事件溯源机制是指将事件的历史状态记录下来,并且可以回溯到任何一个事件的状态。这种机制可以帮助企业快速恢复系统,以及减少因故障而导致的数据丢失。通过记录和回放事件,企业可以更加容易地发现和解决系统的问题,从而提高系统的可靠性和容错性。

敏捷开发

事件驱动架构可以帮助开发人员更快地开发和部署应用程序。由于每个组件都是独立的,因此可以并行地开发和测试每个组件,从而缩短应用程序的开发时间。在部署方面,企业可以选择只部署需要的组件,而不是整个应用程序,这将进一步加快部署速度。

高扩展性

企业可以通过向系统中添加新的事件、更改现有事件的结构或添加新的组件来扩展其功能。通过这种方式,企业可以实现较小的增量更改,同时仍保持整个系统的稳定性和可靠性。

另外,事件驱动架构还可以通过使用适当的事件类型来促进组件之间的松散耦合。例如,企业可以定义通用事件类型来处理跨多个组件的通信和协作。这种松散耦合使得企业可以更容易地更改系统的某些部分而不影响整个系统。

在灵活的架构演进方面,事件驱动架构还支持多种部署选项。企业可以选择在本地、云端或混合部署中使用事件驱动架构,以适应其业务需求和可用资源。

实时的数据处理与分析

在事件驱动架构中,事件是系统的核心,组件通过触发和处理事件来进行通信与协作。因此,事件驱动架构非常适合处理实时数据,并且可以轻松地将数据从一个组件传输到另一个组件。企业可以构建实时数据处理系统,从而更快地对业务数据做出决策和反应。例如,企业可以使用事件驱动架构来监控网站流量、分析用户行为、检测异常等。在这种情况下,组件可以通过触发和处理事件来快速响应这些实时数据,并执行必要的操作。

此外,事件驱动架构也可以用于构建复杂的数据流处理系统,例如处理大数据、实现实时分析等。这些系统需要处理大量的数据,并且需要快速而准确地处理数据。事件驱动架构可以通过使用分布式事件处理系统来实现这些目标,同时保持系统的可扩展性和可靠性。这些优势可以帮助企业更好地了解自己的业务,优化业务流程,并提高企业的竞争力。

猜你喜欢

转载自blog.csdn.net/qq798280904/article/details/130636419