企业事件驱动架构指南 - wiprodigital


企业严重依赖技术来构建可扩展,敏捷和高可用性的业务。事件驱动架构正在成为使现代企业实时运行,快速适应变化并做出明智业务决策的关键基石。

“事件驱动架构(EDA)是一种设计范例,其中软件组件响应收到一个或多个事件通知而执行。”
–加特纳

将敏捷方法论与可以快速响应实时事件的平台相结合,使企业能够做出手动或自动的智能决策,并实现真正的企业敏捷性。然后,可以利用从服务器到可穿戴设备的各种来源的事件来支持许多工业用例。
 

 
采用此类架构的大型组织需要将事件以及其API和业务服务视为其平台的一流公民。
本指南描述了事件驱动架构(EDA)如何使组织受益,采用基于OpenSource技术的EDA的逐步方法,可支持快速创新的敏捷实践以及一些实际用例。
 

事件驱动的架构采用模式
拥抱事件驱动架构的企业可以利用可扩展且可靠的实时通信的优势。这可以帮助推动跨IoT,电子商务,跨系统,数据和应用程序的数据集成,边缘和财务欺诈检测等众多战略计划。
 
在其系统和应用程序中添加事件驱动的体系结构的公司可以提高应用程序的可伸缩性和响应能力。他们还可以访问更好的业务决策所需的数据和上下文,例如流处理,数据集成或网站活动跟踪。
 
事件是从一系列事件源中捕获的。从总体上讲,这些事件被分类为业务/功能或技术。

 
部署事件驱动参考体系结构指南
所有企业都以一种形式或另一种形式产生事件。他们可能只是没有一个可以利用这些事件来产生有形业务价值的系统。当企业开始采用EDA时,对于他们而言,在构建正确的体系结构时确定其特定要求很重要。这些事件可能跨越各种模式,例如实时事件和决策,流处理和复杂事件处理。
 
建立这样的事件平台以开始获取事件驱动的架构的好处可能很简单,但是像每次旅行一样,拥有一张到达目的地的地图会有所帮助。以下指南概述了组织应考虑和考虑的事项,以及为建立可满足多种模式和业务需求的可靠的EDA而应采取的措施。
 
1.定义:架构与技术
第一步解决构成事件网格运行时的核心技术组件。这包括摄取,排队,处理,存储和提供事件的技术。典型的大型企业可能具有一个或多个Pub-Sub Message Broker平台,事件流平台,云消息传递平台以及分布在各种技术和位置的事件消费者和生产者。这些平台往往位于筒仓中,不被视为统一事件网格的一部分。为了解决这个问题,组织应该:

  • 确定围绕事件驱动的架构的需求,这些需求可能在集成,应用程序架构和分析组之间存在
  • 创建具有所有现有组件的统一事件网格的愿景
  • 制定计划以填补满足组织的事件处理要求所需的技术能力中可能存在的空白。
  • 设置参考体系结构并定义模式的参考实现,例如用于管理跨多个数据库的逻辑事务和数据完整性,事件源和CQRS的模式。
  • 该技术工具包可能是使用Kafka,JMS代理或消息代理或AMQ Interconnect来构建大规模消息网络的跨消息流的多个组件的组合。

 

 
  
流媒体
Apache Kafka拥有坚如磐石且超快速的事件流主干,仍然是所有流用例的默认选择。它可实现多种用途,包括活动跟踪,日志聚合,流处理,更改数据捕获,物联网(IoT)遥测等。红帽AMQ流小号可以很容易地运行,并通过上游项目Strimzi在Red Hat OpenShift本地管理Apache的卡夫卡。
 
事件流处理和复杂事件处理
事件平台还需要处理框架,该框架提供诸如复杂事件处理(CEP)之类的处理样式,更常见的事件流处理样式以及包括SQL在内的多层编程抽象层,以查询快速移动的数据。处理框架还应该能够与机器学习框架集成以对模型进行评分。大多数流处理框架,Apache Flink/Spark/Kafka Stream 包括AMQ Streams,都为所有这些编程模型提供支持。
 
面向企业用户的实时见解
大多数事件直接映射到业务概念,并且如果置于业务用户的手中,它们将是实现业务敏捷性的强大工具。用户界面允许用户根据时间窗内事件或事件组合的发生来定义处理规则,这将是业务敏捷性的重要杠杆。
 
微服务作为事件的消费者
接收到事件后,它们需要由微服务进行消费和处理,以为组织带来业务价值。Quarkus是超音速的,亚原子的Java,它是一种这样的运行时,它允许命令式和反应式(事件)编程范式的统一,对消息传递具有强大的内置支持,非常适合构建需要高性能运行时的EDA微服务。
 
事件驱动的无服务器架构
事件驱动的体系结构在无服务器环境中也起着重要的作用。无服务器应用程序可以响应需求,并根据需要自动缩放,可以通过事件驱动的执行模型进行。红帽OpenShift Serverless提供了企业级的无服务器平台,可在混合和多云环境中带来可移植性和一致性。

 
2.设置:治理实践
随着采用事件驱动的体系结构的规模不断扩大,其中发布和使用了数十个事件,因此拥有正式的实践和工具来管理事件的定义,设计,创建和使用就变得至关重要。这类似于API管理平台为API提供的功能。
 

 
这些是建立治理和实践以确保成功时的一些注意事项。

  • 一种接口定义语言,提供事件的数据结构以及使用该事件的机制,协议和位置URL的可读定义。诸如AsyncAPI之类的新兴标准提供了此功能。也有相关的努力来扩展Open API,以增加对事件驱动API的支持。事件的结构将引用并重用企业数据定义。
  • 所有事件的可搜索注册表。与API一样,事件注册表为事件的元数据提供了可搜索的存储。注册表应能够按业务域对事件进行分类和组织,并允许事件所有者为其事件设置可见性规则和访问限制。
  • 事件开发人员门户,其中包括上述注册表以及提供开发人员和事件所有者之间的协作,提供对文档,最佳做法,模板,客户端库等的访问的工具。
  • 分析仪表盘,提供与事件的发布和使用有关的运行时指标。

 
3.启用:统一的操作和管理
下一步是建立统一的监视功能,以提供整个景观中已发布和使用的所有事件的视图。此统一控制台应为操作人员提供支持,以便(a)有效监视平台,(b)监视失败的事件,以及(c)编辑有效负载并再次从统一控制台在所有Message Broker中重新发布它们。
 
另一个关键功能是事件沿袭图的视图,该图显示了事件,其父事件及其子事件之间的联系。该图提供了跨多个服务和系统的整体事务的完整视图,这些服务和系统使用事件驱动的交互来协调其工作。当需要重新发布事件并检查此操作的下游副作用时,此功能也非常有用。
 

 
红帽AMQ Streams还通过一套适用于AMQ Streams的Red Hat Operators框架,在Kubernetes平台上支持自动安装和配置。这些操作员负责部署和管理Apache Kafka集群,Kafka主题和Kafka用户。
 
采用事件驱动架构以获取业务价值
传统上,客户非常依赖API,因为它们具有用于数据交换的标准接口,并且HTTP在开发人员中很流行。为了从EDA中获得收益,重要的是提供正确的工具和统一的开发人员平台,以帮助克服现有的技术限制并赢得开发人员。
 

 
让我们讨论一些建议,以便在遗留和未开发的架构中更快地采用事件。
  • 确定业务驱动的用例,以创建将定义适当模式的试点,例如简单事件,事件流,复杂事件处理。
  • 从上一节中讨论的参考体系结构中选择正确的组件,以便根据业务需求构建合适的模式
  • 通过内部支持和深入的培训,提供对体系结构,技术和过程的访问,从而使开发人员的采用变得容易。
  • 在旧版应用程序中启用EDA可以从事件平台中获得最大收益。
    • 通过更改数据捕获(CDC)开始捕获事件以创建数据库驱动的事件
    • 使用现有应用程序中的增强功能和CR作为启动器来创建所需事件
    • 从现有的旧版应用程序合成事件
  • 使用参考体系结构中可用的技术工具包构建新的用例,以进一步加速业务转型并获得收益。

 
EDA推动业务价值:真实故事
1.通过新渠道创建新的商业模式
阿联酋航空NBD在Red Hat OpenShift上使用Red Hat Fuse和Apache Kafka支持实时银行业务和合作伙伴交互。
 
2.极大地改善了客户体验
一位全球金融服务领导者实施了实时广告系列解决方案,该解决方案使广告系列转化率提高了约60%
 
3.可衡量和有效的运营改善
一家全球物流提供商使用事件结构来提供其广泛的全球网络中货运的实时可见性
 
4.在物联网领域
一家全球电子设备制造商使用基于事件的主动监视将服务维护呼叫的数量减少了45%。事件流分析有助于识别模式并确定警报响应的优先级。
 
5.用于微服务间通信的EDA
一家欧洲银行使用事件驱动的体系结构来改善与客户的关系。基于轻量级事件总线的解决方案有助于使应用程序保持同步,并提供客户数据的单一视图,从而简化了客户体验。