本文整理自51CTO开源基础软件学习季直播公开课《EventMesh如何解决SaaS组合式应用集成标准化问题》,更多精彩内容及公开课视频,可点击链接跳转查看。

Gartner 2020调查显示:到2024年,30%的电商企业将采用组合式应用创新(PBC)。

对于PBC,Gartner 是这样定义的:PBC是具有明确业务能力的多个数据模型、微服务、API应用和事件通道的集成。它以业务为驱动,能独立完成业务需求,不需要外部依赖。多个PBC可以以积木方式来建立企业解决方案,呈现完整统一的用户体验。

下图分别是单一PBC、组合PBC和多个组合PBC的示意图。

一文详解EventMesh落地华为云的探索及实践_华为云

PBC尤其适合电商业务场景下使用,它的价值包括:

  • 商业驱动的SaaS应用,真正解决每个业务问题
  • 不锁定单一供应商,采购和开发最好的应用服务
  • 低代码方式集成应用,敏捷上线,高效迭代
  • 对底层技术封装,屏蔽技术实现,更容易技术更新

PBC的挑战包括:

  • 应用集成缺乏统一标准
  • 应用协议多样化:HTTP, TCP, MQTT, AMQP 等等
  • 应用数据模型多样化:OpenAPI, AsyncAPI

具体到咱们今天的主题——Apache EventMesh,它是一个云原生事件驱动分布式应用运行时,可以提供轻量级、多语言客户端,支持多种通讯协议,是一个插件化架构,可以对接其他后端服务。

下图就是EventMesh的整体架构,支持TCP、HTTP、gRPC等多种协议,也可以支持Java、Python、C、Go等多语言客户端。纵横来说,通过插件化可以对接各类开发者需要的后端服务。

一文详解EventMesh落地华为云的探索及实践_EventMesh_02

EventMesh是怎么运作的呢?它是一个事件驱动的中间件,涉及到两个角色:事件生产者、事件消费者。事件生产者把事件发送到EventMesh,EventMesh把事件存储,这个事件存储可以支持RocketMQ、Kafka。

中间件的作用包括:

  • 基于线程池的多线程并发和异步调用, 提高请求并发量
  • 针对事件生产和消费对性能的要求,独立配置线程池参数
  • 事件消费采用负载均衡和重试机制,保证事件消费成功
  • 对事件进行校验、过滤、路由和转换,支持高级事件处理能力
  • 作为事件总线,通过插件化支持多种底层事件存储

EventMesh对SaaS组合式应用场景是怎么做的呢?SaaS组合式应用最大的问题是集成标准化问题,而EventMesh天然可以解决这个问题。EventMesh通过gRPC支持多语言SDK, 整合TCP和HTTP协议。gRPC是谷歌开源的基于HTTP/2的高性能RPC框架,支持Client和Server双向异步通讯。gRPC数据模型是统一的,统一用Protobuf定义API接口数据模型,统一由CloudEvents定义事件模型。

在EventMesh的gRPC框架中,我们支持的gRPC事件使用场景包括:事件发送和批量事件发送、事件广播、事件请求和响应、事件订阅和推送。

在gRPC的Protobuf事件模型中,每个事件是以SimpleMessage的数据模型呈现,事件的实体内容放在 content 字段里,CloudEvents是业界流行的事件模型。

gRPC 整合了EventMesh TCP和HTTP协议,让运行时和客户端更加轻量。

一文详解EventMesh落地华为云的探索及实践_EventMesh_03

从去年开始,华为云开始进行广泛调研,希望在云上做一个无服务器的事件总线。这时候我们发现EventMesh的理念跟华为云很相似,能力很强。所以我们就希望EventMesh被继续做大,可以在华为云落地——这就是事件网格 (EventGrid)诞生的背景,它是华为云中间件在云原生时代推出的新一代无服务器事件总线。

EventGrid以EventMesh作为运行时引擎,增加了华为自需的特性,包括可视化仪表盘、高级事件过滤、事件查询跟踪、死信存储等,这都是我们的自研产品。整个EventGrid以事件驱动方式对接华为云服务、微服务应用和SaaS应用。它对我们的价值是,希望通过这个服务能为华为云创造更多应用场景,丰富华为云的开发者生态。

EventGrid整个架构图跟EventMesh很类似:

一文详解EventMesh落地华为云的探索及实践_华为云_04

EventGrid在华为云有哪些场景呢?

比如ERP场景,当新员工入职时,HR系统产生新员工注册事件,通过EventGrid推送欢迎新员工邮件,通知IT系统配备新电脑设备,发送财务部门新员工资料。

比如电商场景,仓库商品入库事件、门店顾客进店事件通过EventGrid实时流转到在线分析系统,让我们知道现在店内货物存量和顾客购买偏好,并推送相关广告给到门店导购员。顾客在线支付后,订单信息发送到EventGrid, 并触发第三方物流公司进行送货上门。顾客可以通过物流事件实时查看运送情况。

EventGrid是华为打造数字集成中心(Digital Integration Hub)的重要组成部分。它承接ROMA Connect集成平台的事件流转,通过消息和事件完成多云、跨云的应用集成以及SaaS伙伴应用服务的集成。其面向事件驱动的架构平台也是华为云成功的关键。

EventGrid官方事件源目前已经超过50个,包括智能边缘平台、数据接入服务、容器镜像服务等等,主要还在Beta版本阶段,服务于华为云内部。当然大家还可以创建自定义的事件源。

在华为云,通过采用EventMesh,我们可以实现可视化事件订阅,支持多个事件目标;此外,事件源支持事件过滤;另外,事件目标也支持事件转换。

展望EventMesh的未来,有两个重点,首先是EventMesh的工作流,我们希望:

  • 采用事件驱动架构让工作流编排变得简单和清晰
  • 应用只需订阅感兴趣的事件,发送事件到对方主题即可
  • 适合用于微服务间事务处理场景(Saga)
  • 可以接入函数,建立函数工作流(Serverless Workflow)

一文详解EventMesh落地华为云的探索及实践_EventMesh_05

其次是EventMesh的联邦治理:

  • 打破数据孤岛,集成多云、跨区的数据和事件
  • 做到跨区容灾,EventMesh间事件转发
  • 通过实时分析和大数据收集,以及与平台无关的连接以及对开放标准的支持,实现跨区、跨企业的事件联邦治理
  • 从数据无政府状态过渡到联合治理和成熟的企业数据策略
  • 利用工具,将策略有效变为代码,实现可视化、可观察、可调整


​想了解更多关于开源的内容,请访问:​

​51CTO 开源基础软件社区​

​https://ost.51cto.com/#bkwz​