微众开源大事件:进入 ASF 孵化的新“网格”

作者:OSCHINA2021.07.19 14:20浏览量:143

简介:EventMesh 项目的孵化史以及云原生技术在金融行业的发展趋势。

今年 2 月,微众银行开源项目 EventMesh(事件网格)正式通过 Apache 软件基金会(简称 ASF )的投票决议,以全票通过的优秀表现成为 ASF 孵化器项目,同时也是国内金融行业首个进入 ASF 孵化器的开源项目,对国内开源软件生态来说具有重要意义。

Apache EventMesh 项目的 Champion,也是 GSoC Mentor、Apache RocketMQ 联合创始人、Linux OpenMessaging 的发起人冯嘉对该项目如此评价:

“以 EDA+Serverless 架构理念驱动的 Apache EventMesh 填补了开源领域在 Eventing as A Infrastructure 的空白,它能解耦、屏蔽应用与底层中间件交互细节,结合 Knative、KEDA 等容器化技术,实现多形态部署,具有非常光明的发展前景。”

作为微众银行首个被国际顶级开源软件基金会孵化器接收的项目,EventMesh 在云原生生态中究竟扮演着怎样的角色?其与目前已有的 Service Mesh 架构有着怎样的关系?在捐赠给基金会的过程中,该项目又经历了怎样的挑战?我们邀请到了 Apache EventMesh 项目 Funder、微众银行中间件技术专家陈广胜,为我们分享了 EventMesh 项目的孵化史以及云原生技术在金融行业的发展趋势。

1626675346691.jpg

▲ EventMesh 项目团队

以下为采访内容:

请简要介绍一下自己和 EventMesh 项目吧。

答:我是 2014 年加入的微众中间件平台团队,彼时正值微众初创阶段,经过几年的探索,我们团队构建了微众独有的分布式金融级消息总线 DeFiBus(https://github.com/WeBankFinTech/DeFiBus),它支撑了微众亿级客户的金融业务和同城多活架构。近几年,在云原生技术快速发展的背景下,从 DeFiBus 中演变出了 EventMesh,期望打造出符合 EDA+Serverless 理念的事件基础设施。

EventMesh 是以事件驱动为核心的基础服务,EventMesh 之于微服务与 Service Mesh 具有同等的定位。EventMesh 作为动态的插件式云原生基础服务层,将应用程序和中间件层分离,并提供了灵活,可靠和快速的事件分发能力,同时可以对事件进行管理,可以作为应用进程的连接层,提供企业实现其数字化转型目标所需的全套应用进程间通信模式。

1626675366486.jpg

▲ EventMesh 整体架构图

EventMesh 目前整体的架构如图所示,通过以事件驱动为核心的体系结构,实现了应用程序与中间件层的解耦分离。

同时目前 EventMesh 分别提供了 HTTP API 与 TCP API 更加方便多语言客户端的接入代理。

EventMesh-Runtime 组件以插件化的形式运行了不同的 Connector, 进而支持对接多种 Event Store,客户端通过向 Runtime 发出发布\订阅指令,完成事件的发布与订阅。Runtime 基于 Open MessagingConnector Interface 接口,实现对Connector 的调度,客户端所发出的事件交予 Runtime 调度的 Connector,将事件存储到对应的 Event Store 中进而再由订阅对应事件的 EventMesh 将事件接收并转发给所代理的下游客户端。

EventMeshRuntime 大大简化了客户端的逻辑,自身提供了事件的发布\订阅、治理、传输加密、事件路由、Session 管理、负载均衡、指标监控等能力。

同时,EventMesh 作为以事件驱动架构为核心的中间件基础服务,积极拥抱云原生,支持动态扩缩容,具备容器化安装部署的能力。

EventMesh 架构中的 Event Store 模块设计为可灵活支持多种消息处理系统,这样的设计确实给 EventMesh 带来了很大的发挥空间,能够适配很多不同的业务模型。除了微众自身基于 DeFiBus 的金融总线外,还有哪些场景可以通过搭配不同的 Event Store 模块(Redis、RocketMQ、Kafka、Pulsar)很好的落地 EventMesh?目前有没有一些业内的合作伙伴使用 EventMesh 的案例?

答:插件化集成不同的 Event Store 是 EventMesh 设计的重要特性之一,同时我们遵循了 Linux OpenMessaging 规范和接口,该特性允许 EventMesh 的使用者根据自身不同的使用场景,选择具有不同特性的 Event Store,Event Source,Event Sink 等 connector 进行集成来满足自身需要,这是一个具有丰富想象空间的开源生态。当前,已经有很多的小伙伴在进行 POC 测试,还有 SAP、Red Hat 等公司也开始尝试使用 EventMesh,相信随着 EventMesh 的成熟度越来越高,会有更多的落地案例。

据了解,目前的微服务架构很多已采用 Service Mesh 作为服务间通信代理,市场上也有 Istio、Linkerd 等比较成熟的 Service Mesh 开源框架。能否为我们介绍一下微众内部目前使用的微服务架构概况,尤其是 Service Mesh 这块,分别是基于哪些开源项目构建的?

答:目前微服务体系正在建设中,基于 K8s 的私有容器平台已经上线,Service Mesh 的主体的架构和功能已经完成,即将开始灰度上线。Service Mesh 我们在建设初期调研了很多开源项目,比如 Istio,linkerd,dapr,traefik,等等,这些产品在跟我们的技术体系进行对接的时候存在一些局限,无法完美的支持到我们实际的使用场景,也尝试过进行改造,发现改造的成本也比较大,所以我们考虑基于开源技术自主研发,因为 Spring 技术栈更贴近我们的应用技术栈,适配起来成本更低。数据面板以 Spring webflux 和 Reactor 为基础来建设,控制面板的治理体系也充分融入 Spring Cloud 生态,同时也独辟蹊径的设计出与应用 POD 独立生命周期的 Sidecar 和 Gateway 共存的 Mesh 方案,具体方案会在微众进行充分实践检验后会开源出来,敬请期待。

我们注意到,EventMesh 在微众内部架构中的定位是对 Service Mesh 的补充,Service Mesh 架构对于微众的业务模型来说存在哪些局限性,由 EventMesh 替代的部分主要是为了解决哪些问题?

答:Service Mesh 是云原生中流量治理的重要技术,主要是 Request-Response 的模式,难以实现异步通信、事件处理等能力。EventMesh 主要是以 Event-Driven 来进行流量治理的,是云原生中事件驱动运行时框架,事件的捕获、通信、处理和持久保留是解决方案的核心结构。同时相比于 Service Mesh,EventMesh 提供了对应用程序、数据存储、微服务、SaaS、物联网、Serverless 计算和移动设备等等更广泛的动态集成能力。

1626675404903.jpg

▲ EventMesh 生态

EventMesh 可以作为 Service Mesh 的补充,在应用程序之间实现更好的通信,并允许应用程序通过将某些功能放在网络层和应用程序层之间使我们可以更多地关注业务逻辑。

看来 EventMesh 的架构思路与 Service Mesh 还是有较大区别的,据我们所知目前市场上也还没有类似的项目。那么 EventMesh 算是微众内部为了解决问题“灵光乍现”的产物,还是从传统 Service Mesh 一步步迭代出来的呢?能否为我们详细介绍一下 EventMesh 的迭代过程

答:早期我们内部使用的消息中间件提供了 java 客户端的接入方式,随着业务的铺展和多样性的增加,逐渐接入了 C\Python\Go 等语言,我们发现多语言客户端的维护和集成成本很高,于是我们针对不同语言的 SDK 客户端提供简化了的标准协议接入 EventMesh,再由 EventMesh 对接消息中间件,进而方便了多语言的接入,同时简化了客户端与消息中间件的交互逻辑,避免了客户端的频繁升级等问题。我们惊喜的发现,这正符合云原生的理念,将富客户端的复杂逻辑逐渐下沉到 EventMesh 中,演变出了 Sidecar 服务,同时也可作为 Gateway 集群部署,以一种更通用的协议接口暴露服务,简化事件应用开发,供各种事件源和事件目标集成。

提到银行金融相关的业务,安全性问题一直是业内比较关注的,EventMesh 在安全性方面做了哪些特别的工作?

答:在安全性方面,EventMesh 可以提供事件访问控制、防止数据丢失或损坏、角色分离和建立审计跟踪、多协议客户端身份验证和授权等能力,因为这些安全策略跟微众内部技术体系耦合较紧密,开源版本会选择业界更通用的安全方案进行集成对接,也欢迎有兴趣的小伙伴来参与建设。

下面的问题是关于项目的开源治理,首先恭喜 EventMesh 进入 Apache 基金会孵化器,能否为我们分享项目捐赠给 ASF 过程中一些具体的情况?比如整个捐赠流程是什么样的,过程中哪些人做了哪些努力?是否发生了一些有趣的故事?团队将项目捐赠给开源基金会是出于哪些方面的考虑?

答:加入 Apache 基金会孵化,进一步表明 EventMesh 拥抱开源的决心,我们会在遵循‘the Apache Way’的基础上,打造一个更为中立、开放、多元的社区文化,秉承更加兼容并包的开放心态,希望在不久的将来 EventMesh 能够顺利毕业作为顶级项目(Top-Level Project)登上舞台,让更多人感受云原生事件驱动理念带来的魅力。持续倡导开源文化,围绕开发者,打造更为丰富的开源生态。

关于 EventMesh 项目捐赠给基金会的具体流程,我们即将对陈广胜老师进行更加详细的专访,以了解开源项目捐赠给 ASF 过程中的点点滴滴,敬请期待。

作为金融行业的一线工程师,能否以您个人的视角为我们介绍一下近两年云原生相关技术在国内金融领域的发展趋势。EventMesh 是否有望成为云原生生态中的一块新的版图?

答:随着业务场景的不断变化,”事件”是现代企业中一个重要的“生命线”,而在云原生技术的催化下,以 EDA+Serverless 架构理念驱动的 Apache EventMesh 填补了开源领域在 Eventing as A Infrastructure 的空白,它能解耦、屏蔽应用与底层中间件交互细节,结合 Knative、KEDA 等容器化技术,实现多形态部署,具有非常光明的发展前景。在未来,云原生事件驱动架构会集成更多的应用和服务,而 EventMesh 项目也将在更广泛的应用场景中体现出它的价值。

受访嘉宾介绍

1626675459906.jpg

陈广胜 (Eason Chen)

Apache RocketMQ Committer,Apache EventMesh Funder&&PPMC,Linux OpenMessaging TSC,GSoC Mentor,CKA Certification。专注消息、K8s、云原生微服务,Service Mesh,Serverless 等领域。

相关链接

EventMesh 的详细介绍:点击查看
EventMesh 的下载地址:点击下载