思否开源项目推介丨EventMesh:云原生事件基础设施

思否编辑部
开源项目名称:EventMesh
开源项目简介:动态插件式云原生基础服务
开源项目类型:企业开源项目
项目创建时间:2020 年 8 月
GitHub 数据:416 Star,105 Fork
GitHub 地址:https://github.com/WeBankFinT...

一、项目背景

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

而微众开源的 EventMesh 项目就是以事件驱动为核心的分布式服务运行时,通过动态的插件式云原生基础服务层,将应用程序和中间件层分离,并提供了灵活,可靠和快速的事件分发和处理能力,同时可以对事件进行管理,可以作为应用进程的连接层,提供企业实现其数字化转型的目标所需的全套应用进程间通信模式。

EventMesh 项目于 2020 年 8 月在 GitHub 上对外开源,早期是为了解决微众银行内部多语言客户端接入消息总线的问题,随着云原生技术的不断发展成熟与落地,富客户端的复杂逻辑逐渐下沉到 EventMesh 中,演变成为了 Sidecar 服务,同时也可作为 Gateway 集群部署,以一种更通用的协议接口暴露服务,简化事件应用开发,供各种事件源和事件目标集成。

今年 2 月 EventMesh 正式通过国际顶级开源组织 Apache 软件基金会(简称 ASF )的投票决议,以全票通过的优秀表现成为 ASF孵化器项目。这是国内金融行业首个进入 ASF 孵化器的开源项目,标志着微众银行在践行金融科技全面开源道路上的重要里程碑。

二、项⽬介绍

image.png

EventMesh是一个动态的云原生事件驱动架构基础设施,用于分离应用程序和后端中间件层,它支持广泛的用例,包括复杂的混合云、使用了不同技术栈的分布式架构。

EventMesh架构:

image.png

EventMesh云原生结构:

image.png

Event Mesh允许将来自一个应用程序的事件动态路由到任何其他应用程序。Event Mesh的一般功能:

  • 事件驱动
  • 事件治理
  • 动态路由
  • 云原生
  • 流控
  • 负载均衡

关键部件:

  • eventmesh-runtime:一种中间件,用于在事件产生者和使用者之间传输事件,支持云原生应用程序和微服务
  • eventmesh-sdk-java:当前支持HTTP和TCP协议,未来会支持gRPC等
  • eventmesh-connector-rocketmq : 一种基于OpenMessagingConnector 接口的实现,该实现支持将RocketMQ作为事件存储,实现事件的发布与订阅

三、项目核心特性与能力

  • 可插拔式事件存储

EventMesh 不仅将事件生产者与消费者进行解耦,还降低了运行时与事件存储代码之间的耦合度。事件存储(DeFiBus/RocketMQ/Kafka/Redis 等)以插件化的形式接入 EventMesh,因此 EventMesh 可以更为灵活地扩展事件存储,通过对接不同的事件存储,用户可以享受到不同事件存储所具有的特性。

  • 云原生

EventMesh 遵循面向云原生的 OpenMessaging 接口定义,通过不同事件存储插件对接口的实现,完成事件的发布订阅,同时 EventMesh 对事件的定义遵循 Cloud Event 标准协议,统一了不同语言事件接入的协议入口。同时 EventMesh 支持 sideCar 形式的部署模式,可通过K8S进行管理。

  • 多语言代理接入,协议简化

EventMesh 可为多种语言 (java/go/python/c/...)进行代理,目前提供http/tcp 两种接入方式, 客户端不需关注事件存储组件的相关协议,仅需遵循 EventMesh 协议,与 EventMesh 对接,减少了直接对接事件存储的复杂度,降低不同语言客户端的接入成本。

  • 集群高可用

EventMesh 具有集群化能力,客户端通过负载均衡策略与 EventMesh 集群建连,支持 gateWay 形式的部署模式,EventMesh 对客户端支持组级别代理。

四、项目推荐

EventMesh 可以作为 Service Mesh 的补充,在应用程序之间实现更好的通信,并允许应用程序通过将某些功能放在网络层和应用程序层之间使我们可以更多地关注业务逻辑。但是,相比之下,两者有一些重要的区别:

image.png

这些区别体现了 EventMesh 的异步通信的特点和优势,以及相比 Service Mesh 具有覆盖更广泛应用场景的能力。诚邀关注云计算的你一同参与到 EventMesh 的建设中。

五、项目自荐

以 EDA+Serverless 架构理念驱动的 Apache EventMesh 填补了开源领域在 Eventing as A Infrastructure 的空白,它能解耦、屏蔽应用与底层中间件交互细节,结合 Knative、KEDA 等容器化技术,实现多形态部署,具有非常光明的发展前景。非常期待更多的贡献者加入到这个极富生命力的社区,共同打造云原生时代面向应用开发的核心基础设施。

思否开源项目推介

该项目已入选「SFOSSP - 思否开源项目支持计划」,我们希望借助社区的资源对开源项目进行相关的宣传推广,并作为一个长期项目助力开源事业的发展,与广大开发者共建开源新生态。

有意向的开源项目负责人或团队成员,可通过邮箱提供相应的信息(开源项目地址、项目介绍、团队介绍、联系方式等),以便提升交流的效率。

联系邮箱:pr@segmentfault.com

segmentfault 思否

阅读 3.5k

SegmentFault 行业快讯
第一时间为开发者提供行业相关的实时热点资讯

思否编辑部官方账号,欢迎私信投稿、提供线索、沟通反馈。

2.9k 声望
100.2k 粉丝
0 条评论
你知道吗?

思否编辑部官方账号,欢迎私信投稿、提供线索、沟通反馈。

2.9k 声望
100.2k 粉丝
宣传栏