深度剖析apacheeventmesh云原生分布式事件驱动架构(代码片段)

老周聊架构 老周聊架构     2022-11-30     535

关键词:

一、前言

近年来,随着微服务、云原生和 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,易扩展。
  • 打破数据孤岛,支持企业全联接、数字化、多云协同。

七、未来发展与规划

深度剖析apacheeventmesh云原生分布式事件驱动架构(代码片段)

...布式应用架构的理想之选。本文会从以下几个方面来剖析ApacheEventMesh云原生分布式事件驱动架构:什么是EventMesh云原生生态下的事件驱动架构模型EventMesh架构EventMesh的相关特性以及应用场景总结回顾未来规划与发展二、什么... 查看详情

深度剖析apacheeventmesh云原生分布式事件驱动架构(代码片段)

...布式应用架构的理想之选。本文会从以下几个方面来剖析ApacheEventMesh云原生分布式事件驱动架构:什么是EventMesh云原生生态下的事件驱动架构模型EventMesh架构EventMesh的相关特性以及应用场景总结回顾未来规划与发展二、什么... 查看详情

深度干货|云原生分布式数据库polardb-x的技术演进

简介: 深入解读PolarDB-X的产品架构,以及分布式事务、透明分布式、水平扩展等技术内幕。一、PolarDB-X是什么PolarDB-X最早起源于阿里集团2009年提出用分布式架构替代传统商业数据库,阿里研发了TDDL分库分表中间件... 查看详情

深度解读阿里巴巴云原生镜像分发系统dragonfly

...源的云原生镜像分发系统,主要解决以Kubernetes为核心的分布式应用编排系统的镜像分发难题。随着企业数字化大潮的席卷,行业应用纷纷朝微服务架构演进,并通过云化平台优化业务管理。Dragonfly源于阿里巴巴,从实际落地场... 查看详情

redis分布式锁的深度剖析(转)

https://www.cnblogs.com/luxiaoxun/p/15246087.htmlhttps://zhuanlan.zhihu.com/p/388735542 查看详情

深度剖析:redis分布式锁到底安全吗?看完这篇文章彻底懂了!

这篇文章我想和你聊一聊,关于Redis分布式锁的「安全性」问题。Redis分布式锁的话题,很多文章已经写烂了,我为什么还要写这篇文章呢?因为我发现网上99%的文章,并没有把这个问题真正讲清楚。导致很多... 查看详情

深度剖析spark分布式执行原理

转载自:https://zhuanlan.zhihu.com/p/25772054让代码分布式运行是所有分布式计算框架需要解决的最基本的问题。Spark是大数据领域中相当火热的计算框架,在大数据分析领域有一统江湖的趋势,网上对于Spark源码分析的文章有很多,但... 查看详情

弹性并行查询深度剖析(代码片段)

背景并行查询(ParallelQuery)是自PolarDBMySQL诞生伊始就致力于研发的企业级查询加速功能,这与PolarDB的产品定位密切相关,基于云原生的计算存储分离使底层数据量远突破单机容量的限制,而针对更海量数据的... 查看详情

深度剖析如何实现事务消息(代码片段)

这是一篇从去年写到今年的文章,希望大家会喜欢1.背景分布式事务一直是一个老生常谈的一个话题,在我的公众号下面下面已经写过很多篇分布式事务相关的文章了,但是依旧没有将其完全剖析。在之前的文章中我也多次提到我... 查看详情

深度剖析hbase负载均衡和性能指标

深度剖析HBase负载均衡和性能指标在分布式系统中,负载均衡是一个非常重要的功能,HBase通过Region的数量实现负载均衡,即通过hbase.master.loadbalancer.class实现自定义负载均衡算法。下面将为大家剖析HBase负载均衡的相关内容以及... 查看详情

腾讯云李啸川:serverless化云原生释放云计算效率红利

以下内容来自「2021全区分布式云大会:《Serverless化云原生释放云计算效率红利》主题分享」,深度好文,预计阅读需22分钟。分享嘉宾李啸川,腾讯云Serverless技术产品专家,目前负责腾讯云Serverless产品及企业解决方案的设计工... 查看详情

华为推出业界首个分布式云原生产品:华为云ucs,持续创新,深耕数字化

华为面向ICT产业的全球年度旗舰活动——华为全联接2021拉开序幕。华为轮值董事长徐直军进行了“以持续创新加快数字化发展”的大会主题演讲。本次大会围绕“深耕数字化”主题,探讨如何深入业务场景,把数字技术... 查看详情

从单机百万tpmc到分布式千万tpmc,gaussdb性能提升的3个关键技术剖析

...据库2华为自研数据库关键技术2.1GAUSSDB(foropenGauss)企业级分布式数据库2.1.1GAUSSDB(foropenGauss)遇到的问题2.1.1.1内存访问不对称问题2.1.1.2缓存一致性问题2.1.2解决方法2.1.2.1GAUSSDB(foropenGauss)黑科技1:NUMA-Aware极致优化2.1.2.2GAUSSDB(forope... 查看详情

深度剖析:redis分布式锁到底安全吗?看完这篇文章彻底懂了!

...,我是Kaito。这篇文章我想和你聊一聊,关于Redis分布式锁的「安全性」问题。Redis分布式锁的话题,很多文章已经写烂了,我为什么还要写这篇文章呢?因为我发现网上99%的文章,并没有把这个问题真正讲... 查看详情

深度剖析mqtt协议的整个通信流程

http://www.elecfans.com/d/587483.html MQTT,目前物联网的最主要的协议,基本所有收费的云平台都是基于MQTT协议,比如机智云,和所有的开放云平台比如中国移动的oneNet、百度的云平台也都支持MQTT的接入。虽然MQTT很火,但是目前对M... 查看详情

每日一书|从原理架构案例三个维度深度剖析分布式数据库

...;为你推荐精选好书,助力你的开发工作如行云流水。分布式数据库是分布式计算与数据库结合的产物。分布式数据库的概念早就存在,但是直到最近才真正引起产业界的高度重视。这得益于互联网和云计算技术的高速发... 查看详情

深度分解听趣拍云产品经理剖析视频基础知识

花潍 趣拍云产品经理 深度分解视频基础知识 “视频技术发展到现在已经有100多年的历史,虽然比照相技术历史时间短,但在过去很长一段时间之内都是最重要的媒体。 由于互联网在新世纪的崛起,使得传统的媒体技... 查看详情

云原生etcd系列-7|深入剖析数据多版本mvcc机制(代码片段)

云原生etcd系列-7|深入剖析数据多版本MVCC机制坚持思考,就会很酷你以为删掉就没事了?有些童鞋以前还真是做过些傻事,以为删掉一些东西,覆盖一些东西就能掩盖某一些"不可告人"的秘密。来看看etc... 查看详情