深度剖析 Apache EventMesh 云原生分布式事件驱动架构

简介: 深度剖析 Apache EventMesh 云原生分布式事件驱动架构

一、前言

近年来,随着微服务、云原生和 Serverless 概念的普及以及容器化技术的发展,事件驱动也再次成为热点,引起 IT 界广泛的关注。事件驱动架构是一种用于设计应用的软件架构和模型。对于事件驱动系统而言,事件的捕获、通信、处理和持久保留是解决方案的核心结构。事件驱动架构可以最大程度减少耦合度,很好地扩展与适配不同类型的服务组件,因此是现代化分布式应用架构的理想之选。

本文会从以下几个方面来剖析 Apache EventMesh 云原生分布式事件驱动架构:

  • 什么是 EventMesh
  • 云原生生态下的事件驱动架构模型
  • EventMesh 架构
  • EventMesh 的相关特性以及应用场景
  • 总结回顾
  • 未来规划与发展

二、什么是 EventMesh

Apache EventMesh 是⼀个⽤于解耦应⽤和后端中间件层的动态云原⽣事件驱动架构基础设施。它⽀持⼴泛的⽤例,包括复杂的混合云、使⽤了不同技术栈的分布式架构。

上面这张图我们可以看到 EventMesh 所处的位置就是连接云应用和基础设施的一个中间层, Event Mesh 与 Service Mesh 具有同等的定位,而且它本身支持云原生的部署方式并且可以在 Kubernetes 上运行。

Service Mesh 更多的是集成 RPC 的服务,是同步调用的,可能存在一定的耦合度。而对于 Event Mesh 来说,更多的是集成的事件驱动的微服务,这种微服务的特性就是松耦合和异步的。

三、云原生生态下的事件驱动架构模型

3.1 事件编排和计算

从上面这张图可以看出,EventMesh 可以接入的应用有很多:分布式应用、云原生应用和服务、IoT 设备、数据流、云合作伙伴以及其它的云厂商。通过标准的 CloudEvents 协议接入到 EventMesh,通过这种事件驱动的架构,可以提高应用的弹性伸缩能力,因为它们借助 EventMesh 实现了通信的解耦。

EventMesh 内部具有 Orchestrator 的能力,可以自定义数据源触发器以及实时处理函数,对于其它接收到的事件,Orchestrator 可以路由到上面这些服务,包括无服务的计算(像容器、函数、IoT 应用)、监控或通知类服务、数据分析类服务。

3.2 事件驱动 WebHook

举个例子,比如我在 Github 上提了一个 PR,其实都是可以配置这种 WebHook 的,其实就是类似这种旁路消息的通知机制,有任何的变动,都会推送过来。对于通知服务来讲,它并不关注推送的目标是谁,并且也不关注我产生的事件你是如何使用的或者被谁使用,它只关注产生事件就好。

那基于这样的场景接入到 EventMesh 的话,那 EventMesh 其实具备事件路由、事件转换、事件过滤的能力,你可以基于这样的事件去配置相应的规则,比如正向过滤、排除过滤。

四、EventMesh 架构

EventMesh 本身对外提供了轻量级客户端,标准化接口和协议。上面我们有讲到 EventMesh 的定位是基于应用与基础设施的中间层。应用通过轻量级客户端可以接入 EventMesh,进而实现与基础设施强绑定的解耦。

上图的左边部分也就是我们 EventMesh 内部的一个架构,EventMesh 对外提供了不同类型的 API,包括 Java、Go、C、Python 等。左边最中间这部分其实是 EventMesh 的运行时状态,它本身支持集群化 Gateway 的方式部署,同时也可以支持容器化 Sidecar 的方式部署。

EventMesh 内部主要分成以下几个部分:协议、可观测性、处理器、编排以及存储。不同的部分都做了插件化处理,像协议的部分支持 HTTP、TCP、gRPC、MQTT,内部通信的话都会转成 CloudEvents,相当于适配器的功能。

五、EventMesh 的相关特性以及应用场景

5.1 EventMesh 插件化设计

SPI(Service Provider Interface)机制

设计思想:

  • 遵循开闭原则
  • 面向标准化接口编程+策略模式+配置文件
  • 将运行时与插件解耦,便于扩展插件,以及运行态动态加载插件

5.2 Data Mesh

借助 EventMesh 可以将事件源与事件目标进行打通,比如左边的 RDMS 关系型数据库的数据发生了更新,EventMesh 将以通知的形式通知到事件目标比如 MQ,这样就可以跨消息中间件、跨存储的一个同步。这里其实借助 EventMesh brige 的能力,看起来只是像跨组件,但实际上两边的 EventMesh 可能不是一个集群的,它其实可以跨网络,往大的说还可以跨企业之间的联通,以及公有云与私有云的数据交换。

场景一:跨网络区域流量复制

场景二:跨事件存储数据传输

5.3 EventMesh Workflow

场景:电商场景

EventMesh 在整个事件驱动的这套系统中,起到的是事件编排的能力,EventMesh 会有无服务计算的工作流引擎,同时配合 AsyncAPI,AsyncAPI 可以定义这些服务节点的描述,Workflow 的工作引擎是符合 Serverless Workflow 规范标准的,通过这种方式可以完成一套工作流的定制与运作。

  • Online Store App Service DSL


  • Order Service DSL


  • Other Service DSLs …

5.4 EventMesh Workflow Engine

EventMesh Workflow Engine 主要分为三大块:EventMesh Catalog、EventMesh Workflow Engine、EventMesh Runtime。

对于 EventMesh Catalog 而言,其实就是对哪些服务定义了,定义了之后,通过 Catalog 内部的 AsyncAPI 解析器,解析出来 Publisher Module、Channel Module、Subscriber Module,这些节点在下面的工作流 DSL 定义,EventMesh Workflow Engine 解析到 Workflow 节点后,会跟 EventMesh Catalog 有个交互,会查询服务有哪些 Publisher 以及 Subscriber,Engine 这边触发了事件后,会发给 EventMesh Runtime,最后才会推给下游的应用,整个一套 EventMesh Workflow Engine 是可以实现工作流的流转。

六、总结回顾

  • 轻松构建松耦合、分布式事件驱动架构。
  • 开放兼容,原生支持 CloudEvents SDK 和 API,易扩展。
  • 打破数据孤岛,支持企业全联接、数字化、多云协同。

七、未来发展与规划



Java

相关文章
|
2天前
|
Kubernetes Cloud Native 云计算
云原生技术深度解析:重塑企业IT架构的未来####
本文深入探讨了云原生技术的核心理念、关键技术组件及其对企业IT架构转型的深远影响。通过剖析Kubernetes、微服务、容器化等核心技术,本文揭示了云原生如何提升应用的灵活性、可扩展性和可维护性,助力企业在数字化转型中保持领先地位。 ####
|
2天前
|
运维 Cloud Native Devops
云原生架构:重塑企业IT的未来####
随着数字化转型浪潮的汹涌,云原生架构凭借其高度灵活、可扩展和高效的特性,正逐步成为企业IT系统的核心。本文将深入探讨云原生架构的核心要素、技术优势以及如何引领企业实现业务创新与敏捷交付。 ####
|
3天前
|
运维 Kubernetes Cloud Native
Kubernetes云原生架构深度解析与实践指南####
本文深入探讨了Kubernetes作为领先的云原生应用编排平台,其设计理念、核心组件及高级特性。通过剖析Kubernetes的工作原理,结合具体案例分析,为读者呈现如何在实际项目中高效部署、管理和扩展容器化应用的策略与技巧。文章还涵盖了服务发现、负载均衡、配置管理、自动化伸缩等关键议题,旨在帮助开发者和运维人员掌握利用Kubernetes构建健壮、可伸缩的云原生生态系统的能力。 ####
|
3天前
|
Cloud Native API 云计算
云原生架构的深度探索与实践####
本文深入探讨了云原生架构的核心概念、技术特点及其在现代软件开发中的应用实践。通过分析云原生架构如何促进企业数字化转型,提升业务敏捷性与可扩展性,本文旨在为读者提供一个全面而深入的理解框架。我们将从云原生的定义出发,逐步深入到其关键技术组件、最佳实践案例及面临的挑战与解决方案,为开发者和企业决策者提供宝贵的参考与启示。 ####
|
20天前
|
运维 Cloud Native 持续交付
云原生架构的演进与实践####
【10月更文挑战第16天】 云原生,这一概念自提出以来,便以其独特的魅力和无限的可能性,引领着现代软件开发与部署的新浪潮。本文旨在探讨云原生架构的核心理念、关键技术及其在实际项目中的应用实践,揭示其如何帮助企业实现更高效、更灵活、更可靠的IT系统构建与管理。通过深入剖析容器化、微服务、持续集成/持续部署(CI/CD)等核心技术,结合具体案例,本文将展现云原生架构如何赋能企业数字化转型,推动业务创新与发展。 ####
121 47
|
8天前
|
弹性计算 Kubernetes Cloud Native
云原生架构下的微服务设计原则与实践####
本文深入探讨了在云原生环境中,微服务架构的设计原则、关键技术及实践案例。通过剖析传统单体架构面临的挑战,引出微服务作为解决方案的优势,并详细阐述了微服务设计的几大核心原则:单一职责、独立部署、弹性伸缩和服务自治。文章还介绍了容器化技术、Kubernetes等云原生工具如何助力微服务的高效实施,并通过一个实际项目案例,展示了从服务拆分到持续集成/持续部署(CI/CD)流程的完整实现路径,为读者提供了宝贵的实践经验和启发。 ####
|
16天前
|
Kubernetes Cloud Native 持续交付
云端新纪元:云原生技术重塑IT架构####
【10月更文挑战第20天】 本文深入探讨了云原生技术的兴起背景、核心理念、关键技术组件以及它如何引领现代IT架构迈向更高效、灵活与可扩展的新阶段。通过剖析Kubernetes、微服务、Docker等核心技术,本文揭示了云原生架构如何优化资源利用、加速应用开发与部署流程,并促进企业数字化转型的深度实践。 ####
|
15天前
|
监控 Cloud Native Java
云原生架构下微服务治理策略与实践####
【10月更文挑战第20天】 本文深入探讨了云原生环境下微服务架构的治理策略,通过分析当前技术趋势与挑战,提出了一系列高效、可扩展的微服务治理最佳实践方案。不同于传统摘要概述内容要点,本部分直接聚焦于治理核心——如何在动态多变的分布式系统中实现服务的自动发现、配置管理、流量控制及故障恢复,旨在为开发者提供一套系统性的方法论,助力企业在云端构建更加健壮、灵活的应用程序。 ####
62 10
|
9天前
|
Kubernetes Cloud Native API
云原生架构下微服务治理的深度探索与实践####
本文旨在深入剖析云原生环境下微服务治理的核心要素与最佳实践,通过实际案例分析,揭示高效、稳定的微服务架构设计原则及实施策略。在快速迭代的云计算领域,微服务架构以其高度解耦、灵活扩展的特性成为众多企业的首选。然而,伴随而来的服务间通信、故障隔离、配置管理等挑战亦不容忽视。本研究聚焦于云原生技术栈如何赋能微服务治理,涵盖容器编排(如Kubernetes)、服务网格(如Istio/Envoy)、API网关、分布式追踪系统等关键技术组件的应用与优化,为读者提供一套系统性的解决方案框架,助力企业在云端构建更加健壮、可维护的服务生态。 ####
|
10天前
|
监控 安全 Cloud Native
云原生安全:Istio在微服务架构中的安全策略与实践
【10月更文挑战第26天】随着云计算的发展,云原生架构成为企业数字化转型的关键。微服务作为其核心组件,虽具备灵活性和可扩展性,但也带来安全挑战。Istio作为开源服务网格,通过双向TLS加密、细粒度访问控制和强大的审计监控功能,有效保障微服务间的通信安全,成为云原生安全的重要工具。
29 2

推荐镜像

更多
下一篇
无影云桌面