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

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

一、前言

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后端主流技术栈的原理、源码分析、架构以及各种互联网高并发、高性能、高可用的解决方案。

相关文章
|
2月前
|
消息中间件 Kafka Apache
Apache Flink 是一个开源的分布式流处理框架
Apache Flink 是一个开源的分布式流处理框架
743 5
|
2月前
|
运维 Linux Apache
LAMP架构调优(二)——修改Apache运行用户
LAMP架构调优(二)——修改Apache运行用户
20 0
|
2月前
|
存储 边缘计算 人工智能
云计算与分布式系统架构:驱动数字化时代的创新引擎
本文将探讨云计算与分布式系统架构在数字化时代中的重要性,介绍其基本概念和原理,并探讨其在推动技术创新、提升企业效率和满足用户需求方面的作用。同时,还将提出未来发展的趋势和挑战,为读者提供对云计算与分布式系统架构的深入理解。
|
2月前
|
前端开发 Java Apache
Apache Zeppelin系列教程第七篇——运行paragraph的整个流程分析
Apache Zeppelin系列教程第七篇——运行paragraph的整个流程分析
49 0
|
6天前
|
消息中间件 存储 Java
Apache Kafka是分布式消息系统,用于高吞吐量的发布订阅
【7月更文挑战第1天】Apache Kafka是分布式消息系统,用于高吞吐量的发布订阅。在Java中,开发者使用Kafka的客户端库创建生产者和消费者。生产者发送消息到主题,消费者订阅并消费。Kafka提供消息持久化、容灾机制,支持分区和复制以确保高可用性。通过优化如分区、批处理和消费者策略,可适应高并发场景。简单的Java示例展示了如何创建和交互消息。
13 0
|
1月前
|
监控 NoSQL 数据建模
使用Apache Cassandra进行分布式数据库管理的技术实践
【6月更文挑战第5天】本文探讨了使用Apache Cassandra进行分布式数据库管理的技术实践。Cassandra是一款高性能、可扩展的NoSQL数据库,适合大规模、高并发场景。文章介绍了其高可扩展性、高性能、高可用性和灵活数据模型等核心特性,并详细阐述了环境准备、安装配置、数据建模与查询以及性能优化与监控的步骤。通过本文,读者可掌握Cassandra的运用,适应不断增长的数据需求。
|
1月前
|
存储 分布式计算 Hadoop
使用Apache Hadoop进行分布式计算的技术详解
【6月更文挑战第4天】Apache Hadoop是一个分布式系统框架,应对大数据处理需求。它包括HDFS(分布式文件系统)和MapReduce编程模型。Hadoop架构由HDFS、YARN(资源管理器)、MapReduce及通用库组成。通过环境搭建、编写MapReduce程序,可实现分布式计算。例如,WordCount程序用于统计单词频率。优化HDFS和MapReduce性能,结合Hadoop生态系统工具,能提升整体效率。随着技术发展,Hadoop在大数据领域将持续发挥关键作用。
|
2月前
|
缓存 监控 Java
Java一分钟之-Apache Geode:分布式内存数据平台
【5月更文挑战第21天】Apache Geode是低延迟的分布式内存数据平台,用于构建实时应用,提供缓存、数据库和消息传递功能。本文聚焦于Geode的常见问题,如数据一致性(数据同步延迟和分区冲突)和性能瓶颈(网络延迟和资源管理不当),并提出解决方案。确保数据一致性可通过选择合适的数据策略和利用`InterestPolicy`、`CacheListener`;提升性能则需优化网络和合理配置资源。通过示例代码展示了如何创建和操作Geode的Region。正确配置和调优Geode对于实现高可用、高性能应用至关重要。
54 1
|
2月前
|
存储 缓存 监控
Java一分钟之-Apache Ignite:分布式内存计算平台
【5月更文挑战第21天】Apache Ignite是一款开源的分布式内存计算平台,涉及内存数据网格、流处理和计算服务。本文关注其常见问题,如数据丢失、分区不均、内存管理和网络延迟。为保证数据一致性,建议使用适当的數據模式和备份策略,实现数据持久化。优化内存配置和监控网络可提升性能与稳定性。提供的Java代码示例展示了如何创建分区缓存并设置备份。正确配置和管理Ignite是构建高可用、高性能应用的关键,持续监控集群状态至关重要。
62 0
|
2月前
|
分布式计算 资源调度 Hadoop
Apache Hadoop入门指南:搭建分布式大数据处理平台
【4月更文挑战第6天】本文介绍了Apache Hadoop在大数据处理中的关键作用,并引导初学者了解Hadoop的基本概念、核心组件(HDFS、YARN、MapReduce)及如何搭建分布式环境。通过配置Hadoop、格式化HDFS、启动服务和验证环境,学习者可掌握基本操作。此外,文章还提及了开发MapReduce程序、学习Hadoop生态系统和性能调优的重要性,旨在为读者提供Hadoop入门指导,助其踏入大数据处理的旅程。
654 0

推荐镜像

更多