Apache EventMesh 分布式事件驱动多运行时

老周聊架构

共 1938字,需浏览 4分钟

 · 2022-08-03

一、前言

7月16日,有幸参加了 ArchSummit 2022全球架构师峰会(深圳站),我只专注《云原生前沿技术应用》专题,一天只在一个会场没有离开过,这个专题下各位老师的演讲,给我留下最深的印象是 Apache EventMesh 的 PPMC 薛炜明老师分享的《Apache EventMesh 分布式事件驱动多运行时》。


在我没听薛炜明老师分享之前,我以前想过有没有一款组件能让业务与基础设施解耦起来(比如存储、缓存、注册中心、消息引擎等)。举两个例子:


  • Spring Cloud Stream,它就让上下游各个消息引擎解耦起来了,Spring Cloud Stream 在 Spring Cloud 体系内用于构建高度可扩展的基于事件驱动的微服务,其目的是为了简化消息在 Spring Cloud 应用程序中的开发,但这只局限于消息引擎的解耦。

  • 在云原生领域中的 Service Mesh,更多的是集成 RPC 的服务,是同步调用的,可能存在一定的耦合度。


上面虽然也都做的不错,但各个方面还是存在一定的局限性。


听完薛炜明老师分享 EventMesh 之后呢,发现 EventMesh 这个事件驱动架构真香,跟我的想法不谋而合,只是 EventMesh 功能更全,最大程度减少耦合度,很好地扩展与适配不同类型的服务组件,EventMesh 会是后面的一个主流架构趋势。

二、什么是 EventMesh

可能有些小伙伴还不知道这个 EventMesh 是个什么东西,笔者觉得有必要先给大家来个定义,让大家首先知道这个 EventMesh 到底是个啥。


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



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

三、EventMesh 架构


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


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


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

四、我的感想

  • 对于大规模部署微服务(微服务数>1000)、内部服务异构程度高(交互协议/开发语言类型>5)的场景,并且集成的微服务是松耦合和异步的特性。使用 EventMesh 是合适的。但是,可能大部分开发者面临的微服务和内部架构异构复杂度是没有这么高的并且也不需要异步相应的特性,在这种情况下,你就需要根据自身的业务选择适合自己的技术栈以及架构模型了。

  • EventMesh 本身支持集群化 Gateway 的方式部署,同时也可以支持容器化 Sidecar 的方式部署。

  • EventMesh 打破数据孤岛,支持企业全联接、数字化、多云协同。

  • 像这种开源软件,虽然国内最近氛围以及发展都越来越好了,但具有创新意义的开源产品很多还是国外主导研发出来的,针对 EventMesh 这款事件型驱动架构的开源软件,目前由微众银行、腾讯、字节跳动、京东、阿里、百度等国内的一线大厂参与研发,希望国内有更多的这种由国内公司主导的具有创新型的开源软件出来,EventMesh 作为事件型驱动的架构,未来可期。




欢迎大家关注我的公众号老周聊架构】,Java后端主流技术栈的原理、源码分析、架构以及各种互联网高并发、高性能、高可用的解决方案。


浏览 70
点赞
评论
收藏
分享

手机扫一扫分享

举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

举报