游乐游手机版
首页/科技数码/文章详情

一个开源的云原生事件中间件!

时间:2025-12-15 21:15
EventMesh 是一个动态的云原生事件驱动架构基础设施,旨在简化分布式应用和服务之间的事件通信。 一、项目介绍EventMesh 是一个动态的云原生事件驱动架构基础设施,旨在简化分布式应用和服务

EventMesh 是一个动态的云原生事件驱动架构基础设施,旨在简化分布式应用和服务之间的事件通信。

一、项目介绍

EventMesh 是一个动态的云原生事件驱动架构基础设施,旨在简化分布式应用和服务之间的事件通信。它构建了一个高性能、可扩展、松耦合的事件中间件层,支持多种协议(如 HTTP、gRPC、TCP)和消息模式(Pub/Sub, Event Streaming),并提供了丰富的治理功能。其核心目标是成为连接应用程序、云服务和中间件的事件枢纽,构建响应式、弹性的分布式系统。

多运行时:

编排:

联邦:

二、应用场景

微服务解耦与异步通信:服务间通过事件发布/订阅进行异步交互,提高系统响应性和容错性,避免服务雪崩。事件驱动架构 (EDA) 实现:构建基于事件的业务系统,如订单处理、库存更新、支付通知等业务流程的驱动。实时数据管道:将数据库变更日志 (CDC)、应用日志、IoT 设备数据等实时事件流接入并分发到下游处理系统(如 Flink, Spark, Kafka Streams)。云服务集成:作为桥梁,连接 SaaS 应用、云函数(如 AWS Lambda, Azure Functions, 阿里云 FC)以及传统应用,实现跨云、跨环境的事件驱动集成。混合云/多云事件总线:在混合云或多云环境中提供统一的事件路由和管理能力。Serverless 事件源:为 Serverless 函数提供可靠、高吞吐的事件触发源。

三、功能模块

(1) EventMesh Runtime:

通信网关:接收来自不同协议(HTTP, gRPC, TCP, CloudEvents)的事件发布请求。协议适配:将不同协议的事件统一转换为 CloudEvents 格式(业界标准)进行内部处理。事件存储与转发:支持将事件持久化到后端存储(如 RocketMQ, Kafka, Pulsar, Pravega)或直接转发。连接器 (Connector):可插拔的插件,负责与具体的事件存储/消息队列(MQ)进行读写交互。ACL (访问控制列表):提供基于 Topic 和用户的权限控制。

(2) EventMesh SDK:

提供多种语言(Java, Go, Python, C++, Node.js, Rust)的客户端库,方便应用集成发布/订阅事件。封装与 EventMesh Runtime 的通信协议细节。支持 CloudEvents 规范。

(3) EventMesh Catalog:

事件元数据管理,提供事件定义(Schema)、发布者、订阅者的注册与发现功能。增强系统的可观察性和治理能力。

(4) EventMesh Dashboard (控制台):可视化 Web UI,用于监控集群状态(TPS、延迟、连接数)、管理 Topics、查看订阅关系、配置 ACL、管理连接器、事件追踪等。

(5) EventMesh Admin:提供 RESTful API 和管理 CLI,用于集群的运维管理、配置管理、健康检查等。

(6) EventMesh SPI (Service Provider Interface):插件化扩展机制,允许开发者自定义协议插件、存储插件、安全插件、注册中心插件等。

四、功能特点

(1) 云原生设计:

轻量级,容器化友好(Docker, Kubernetes)。支持动态配置、服务发现、弹性伸缩。健康检查、优雅启停。

(2) 协议多语言支持:

原生支持 HTTP/1.1, HTTP/2 (gRPC), TCP 协议接入。提供多语言 SDK,降低接入门槛。

(3) 拥抱 CloudEvents:内部采用并推广 CloudEvents 规范,提供跨平台、跨供应商的事件数据互操作性。

(4) 高性能与高扩展:

采用 Netty 等高性能网络框架。连接器架构支持水平扩展 Runtime 节点和灵活替换后端存储(如 RocketMQ, Kafka, Pulsar)。事件处理链路优化。

(5) 强大的治理能力:

可视化 Dashboard 提供实时监控。细粒度的 ACL 权限控制。事件链路追踪(集成 OpenTracing/OpenTelemetry)。事件元数据管理(Catalog)。

(6) 松耦合与灵活性:

发布者与订阅者完全解耦。插件化架构(SPI)支持高度自定义和扩展。支持多种事件传递语义(至少一次、至多一次)。

(7) 开源与社区驱动:Apache 孵化器项目,拥有活跃的社区和持续迭代。

五、项目架构

1. 技术架构

EventMesh 采用分层、插件化的架构:

(1) 接入层:

由EventMesh Runtime节点组成,负责接收来自EventMesh SDK或其他客户端(通过 HTTP/gRPC/TCP)的事件。进行协议解析、身份认证(可选)、ACL 校验。将事件统一转换为 CloudEvents 格式。

(2) 处理层:

在 Runtime 内部,事件经过可能的过滤、转换(通过 SPI 插件)后,由Connector插件处理。Connector负责与具体的事件存储层交互,执行事件发布(Pub)或持久化。

(3) 事件存储层:

可插拔的后端存储系统,如 Apache RocketMQ, Apache Kafka, Apache Pulsar, Pravega 等。由 Connector 对接。负责事件的可靠存储、排序和分发。

(4) SDK 层:

部署在应用程序端,提供简洁 API 供应用发布和订阅事件。屏蔽底层协议和 EventMesh 细节。

(5) 治理与管控层:

EventMesh Dashboard/Admin:提供可视化管理和 API 接口。EventMesh Catalog:管理事件元数据(可选部署)。依赖注册中心(如 Nacos, etcd, Zookeeper)进行 Runtime 节点发现和配置管理。集成 Metrics (Prometheus), Tracing (Jaeger/Zipkin) 用于监控。

(6) SPI 层:贯穿各层,提供协议、存储、安全、注册中心等扩展点。

(7) 架构图

(8) EventMesh云原生结构

2. 技术栈

(1) 核心语言:Java(Runtime, SDK-Java, Dashboard 后端),Go(SDK-Go),Vue.js(Dashboard 前端)

(2) 网络通信:Netty(高性能 TCP/HTTP), gRPC (HTTP/2), Reactor Netty (可选)

(3) 事件规范:CloudEvents SDK

(4) 存储插件 (Connector):Apache RocketMQ Client, Apache Kafka Client, Apache Pulsar Client, Pravega Client (Java)

(5) 注册中心:Nacos, etcd, Zookeeper, Consul (通过 SPI 插件支持)

(6) 配置中心:Nacos, Apollo, Zookeeper (通过 SPI 插件支持)

(7) 治理与监控:

Metrics:Micrometer -> PrometheusTracing:OpenTracing (Jaeger) / OpenTelemetry日志:SLF4J + Logback/Log4j2

(8) 前端:Vue 2/3, Element UI / Ant Design Vue, ECharts (Dashboard)

(9) 构建与依赖管理:Maven, npm/yarn

(10) 部署:Docker,Kubernetes (Helm Chart), 独立 JAR 包

(11) 其他关键库:Spring Boot (Dashboard 后端), Guava, Lombok, Jackson, Protobuf (gRPC), RxJava (异步处理)

七、部署指南

1. 依赖

建议使用64位操作系统,建议使用Linux / Unix;64位JDK 1.8+;Gradle至少为5.6, 推荐 5.6.*

2. 本地构建运行

(1) 下载

https://github.com/apache/incubator-eventmesh您将获得EventMesh-master.zip

(2) 项目结构

eventmesh-common : eventmesh公共类与方法模块eventmesh-connector-api : eventmesh connector插件接口定义模块eventmesh-connector-plugin : eventmesh connector插件模块eventmesh-runtime : eventmesh运行时模块eventmesh-sdk-java : eventmesh java客户端sdkeventmesh-starter : eventmesh本地启动运行项目入口eventmesh-spi : eventmesh SPI加载模块

(3) 插件说明

①安装插件

有两种方式安装插件:

classpath加载:本地开发可以通过在eventmesh-starter模块build.gradle中进行声明,例如声明使用rocketmq插件

implementation project(":eventmesh-connector-plugin:eventmesh-connector-rocketmq")文件加载:通过将插件安装到插件目录,EventMesh在运行时会根据条件自动加载插件目录下的插件,可以通过执行以下命令安装插件

./gradlew clean jar dist && ./gradlew installPlugin

② 使用插件

EventMesh会默认加载dist/plugin目录下的插件,可以通过-DeventMeshPluginDir=your_plugin_directory来改变插件目录。运行时需要使用的插件实例可以在confPath目录下面的eventmesh.properties中进行配置。例如通过以下设置声明在运行时使用rocketmq插件。

#connector plugineventMesh.connector.plugin.type=rocketmq

③ 配置VM启动参数

-Dlog4j.cnotallow=eventmesh-runtime/conf/log4j2.xml-Deventmesh.log.home=eventmesh-runtime/logs-Deventmesh.home=eventmesh-runtime-Dcnotallow=eventmesh-runtime/conf

注:如果操作系统为Windows, 可能需要将文件分隔符换成

④ 启动运行

运行org.apache.eventmesh.starter.StartUp的主要方法

3. Docker 运行

(1) 拉取镜像

执行docker pull eventmesh/eventmesh-rocketmq:v1.3.0, 你将会获取到EventMesh的镜像,如下图所示:

(2) 配置

预先准备: 你可能需要从github上下载源代码,并参考这两个文件(eventMesh.properties 和 rocketmq-client.properties)的内容来做下面的操作

① 需要配置的文件

在运行容器之前,你需要配置如下文件:

eventMesh.properties:

rocketmq-client.properties:

拉取了EventMesh镜像到你的宿主机后,你可以执行下面的命令来完成eventMesh.properties和rocketmq-client.properties文件的配置。

② 创建文件

mkdir -p /data/eventmesh/rocketmq/confcd /data/eventmesh/rocketmq/confvi eventMesh.propertiesvi rocketmq-client.properties

这两个文件内容可以参考 eventMesh.properties 和 rocketmq-client.properties

(3) 运行

①运行

执行下面的命令来运行容器:

docker run -d -p 10000:10000 -p 10105:10105 -v /data/eventmesh/rocketmq/conf/eventMesh.properties:/data/app/eventmesh/conf/eventMesh.properties -v /data/eventmesh/rocketmq/conf/rocketmq-client.properties:/data/app/eventmesh/conf/rocketmq-client.properties docker.io/eventmesh/eventmesh-rocketmq:v1.3.0-p : 将容器内端口与宿主机端口绑定,容器的端口应与配置文件中的端口一致-v : 将容器内的配置文件挂载到宿主机下,需注意配置文件的路径

② 检查容器的运行状况

执行docker ps来检查容器的运行状况:

执行docker logs [container id]可以得到如下结果:

执行docker exec -it [container id] /bin/bash可以进入到容器中并查看详细信息。

八、源码地址

https://gitee.com/bemy/incubator-eventmesh

来源:https://www.51cto.com/article/818028.html
上一篇苹果秋季发布会曝光 iPhone 15现谷底价刷新爱疯记录! 下一篇全新雪铁龙C5 Aircross插混版发布,起售价37.2万人民币
本站内容用于信息整理与展示,如有侵权或内容问题请及时联系处理。

相关推荐

补充同频道和同主题内容,方便继续浏览更多相关内容。

同类最新

继续查看同栏目最近更新的文章。

更多
年国家能源局充换电服务业用电量增速48.8%
科技数码 · 2026-06-29

年国家能源局充换电服务业用电量增速48.8%

2025年全社会用电量达103682亿千瓦时,同比增长5 0%。充换电服务业用电增速高达48 8%,信息传输与软件服务业增速17 0%。第三产业和居民用电对增长贡献率合计占一半。中国成为全球首个年度用电量超10 4万亿千瓦时的国家。

追风者 GLACIER ONE 360 S25 液冷散热器新品上市 联体风扇售价429元
科技数码 · 2026-06-29

追风者 GLACIER ONE 360 S25 液冷散热器新品上市 联体风扇售价429元

追风者冰川360S25液冷散热器售价429元,三联一体风扇便捷安装,冷头小体积纯铜底座噪音18dB,风扇转速300-2000RPM、风量75CFM、静压2 96mmAq,五年质保漏液包赔。

三星Galaxy Watch8用户反馈谷歌后台组件异常
科技数码 · 2026-06-29

三星Galaxy Watch8用户反馈谷歌后台组件异常

三星GalaxyWatch8、Watch5Pro、Watch6及Watch7用户反映,GooglePlayServices后台耗电异常,电量占比最高达99 97%,远超正常水平,严重影响续航。目前故障原因不明,谷歌尚未发布官方声明。

罗永浩批苹果iOS 27创新不足 盼新CEO改进
科技数码 · 2026-06-29

罗永浩批苹果iOS 27创新不足 盼新CEO改进

罗永浩批评苹果iOS27创新不足,称仅有双iPhone同号、音量分离等数十项细节改进,认为库克时代缺乏突破性创新,股市虽好但消费者只能被迫接受挤牙膏式升级。

年国产车出口710万辆,两家车企销量破百万
科技数码 · 2026-06-29

年国产车出口710万辆,两家车企销量破百万

2025年国产汽车出口总量达710万辆,同比增长21%。奇瑞以134万辆居首,比亚迪105万辆次之,上汽乘用车出口占比60%最高,长城出口51万辆。吉利、长安等主流品牌同步增长,小鹏、零跑等新兴品牌海外拓展加速。