技术揭秘:RocketMQ 5.0云原生架构升级之路

简介: ——周新宇 阿里云云原生高级技术专家

image.png

RocketMQ5.0主要在以下四个方面进行了云原生的架构改造。

① 轻量级 SDK 基于云原生通信标准gRPC 开发了全新的轻量级 SDK 核心代码量降低 70% 左右。新的 SDK 采取无状态的消费模式,更易于集成,也易于弹性,与此前富客户端能够形成很好的优势互补。

② 无状态消息网关:在存储节点之上搭建了无状态计算集群,并通过 LB 进行服务暴露存储节点进行彻底分离,使其专注于核心的消息存储与高可用能力。计算和存储节点采用了分离部署的形态,能够独立进行扩展与弹性。

③ Leaderless高可用架构:推出了全新的 Leaderless 高可用架构,目前正与社区的 Dledger方案进行融合。新的高可用架构具备 store 节点身份对等Leaderless 化、去 ZK HA控节点等优势。同时支持灵活选择副本数同步自动升降级,能够做到秒级故障转移。

④ 云原生基础设施:可观测能力全面走向了云原生化,拥抱 OpenTelemetry标准部署架构也演进至 Kubernetes能够充分利用售卖区的弹性资源能力。

image.png

新的 SDK 与富客户端能够形成优势互补,更加易于被集成,主要在以下四个方面做了重大的改进。

第一,新的 SDK引入了全新极简 API ,整套API采用不可变的设计语义,拥有完善的错误处理机制,多个语言的 SDK API 层面也进行了对齐。同时引入了全新的SimpleConsumer 形态,能够支持按消息模型进行消费。

第二,通信层采用 gRPC拥抱云原生的通信标准使服务更易于被集成。多语言 SDK在通信层的代码也可以基于gRPC快速生成,方便社区快速开发多语言原生的SDK

第三,SDK 采取轻量级的实现,采用无状态的消费模式,能够大幅降低客户端的实现复杂度客户端更轻量采用应用也更容易被 Serverless 化、 Mesh 化。

第四,云原生可观测性方面,客户端实现了 OpenTelemetry标准,支持导出 Metrics Tracing数据。

image.png

RocketMQ 5.0 引入了无状态的消费模型,这是在队列模型之上的一种消息模型。在 RocketMQ 4.0 时代,RocketMQ的消费只能采取队列模型队列模型是与存储模型一致的消费模型,消费者按照存储队列进行负载均衡和消息拉取。模式非常适合高速批量拉取,适合对单条消息状态不敏感的场景,比如计算场景。

但在业务消息领域,该模式缺乏对单条消息的治理能力以及状态管理能力。RocketMQ 5.0 引入了Pop机制,巧妙地在队列模型之上支持了消息模型,这并不是一种替换关系,而是鱼和熊兼得的模式。在消息模型中,业务可以只关心消息,而无需关心队列,能够做到单条消息在 API 级别的消费重试、修改不可见时间以及删除等语义。无状态的Pop 机制配合 RocketMQ 5.0 的无状态计算集群,使得整个数据链路都能实现无状态,包括客户端的无状态连接无状态以及消费无状态。

image.png

RocketMQ 4.0 在可观测性方面做了大量业务创新推出了业界首个可视化全生命周期的消息轨迹系统,提供了丰富的消息查询、消息下载、轨迹追踪的能力,助力解决分布式环境中的可观测性问题。在云原生时代,我们将这些能力推向了标准化。

首先Metrics 层面,提供了Dashboard的大盘,整个大盘采取Prometheus标准数据格式,并利用 Grafana 进行展示。在指标方面也进行了丰富,包含消息量、堆积量、各个阶段耗时等指标。每一个指标从实例topic 消费group ID 等多维度做了聚合和展示。同时为用户提供了最佳实践的模板,并支持持续迭代的更新。

Tracing层面,将 RocketMQ 4.0 的消息轨迹进行了标准化定义,并将标准合并至开源的OpenTelemetry标准中,规范和丰富了 messaging 领域的Tracing定义。Tracing数据做了消息领域的定制化展示,按照消息维度重新组织抽象span请求数据,能够展示一对多的消费多次消费信息非常直观以及方便理解。另外Tracing数据可以衔接上下游,支持将完整的同步调用链路与消息的异步链路进行整合,提供更全局的可观性视图。

RocketMQ 5.0也特别重视 Logging 的标准化新的 SDK error code message error level 做了标准化定义,同时语言 SDK 中进行了严格对齐。

image.png

IaaS 层面,从 on ECS 的部署架构迁移至on Kubernetes的部署架构,使得 RocketMQ 5.0 能够充分利用云的弹新能力,撬动云的计算、存储和网络的池化资源,满足用户的各类弹需求。

在计算层面,容器服务 ACK 可以帮助 RocketMQ 5.0 充分利用 ECS 的池化资源,借助弹性资源池和 HPA两项关键技术,能够支持计算能力的快速Serverless 化。

在网络层面,RocketMQ 5.0 的网络形态做了完整适配,支持多种私网的网络类型以及公网网络随开随用,兼具安全和方便。同时基于阿里云的 CEN 组网能力构建了全球互通的消息网络。

在存储方面,推出了二级存储能力,能充分利用 ESSD 以及 OSS 存储的弹能力存储计费也走向了量计费,用户也可以自定义存储时长,将消息变为数据资产,同时二级存储天然具备冷热分离的能力,能够为用户提供一致的冷SLA

image.png

在业务层面, RocketMQ 5.0 也从消息走向了世界。在 RocketMQ 之上构建了一款全新的云产品EventBridge它是阿里云在事件驱动架构方面的最新实践,开源阿帕奇 MQ 社区。

EventBridge构建在容器服务之上,并利用 RocketMQ作为核心的事件存储引擎。在 RocketMQ之上有跨地域的connect 集群包含 schema 事件规则、事件管理、事件路由过滤转换等核心能力。在 connect 集群之上是一层事件网关,支持用户以 OpenAPI 官方 SDKCloudEvents SDK Webhook 等方式进行接入。

EventBridge事件驱动引擎连接了大量事件云和事件目标。其中事件云包括阿里云的管控事件、阿里云的数据类事件,也包括自定义应用、 SaaS 应用以及自建数据平台等事件目标包括计算型、分析型、存储型以及通知型的目标,比如函数计算、消息服务、App网关、短信等。

在功能价值层面,EventBridge有四块核心能力

① 能够大幅度减少用户的开发成本,用户无需额外开发即可轻松实现事件驱动架构。

② 支持原生的 CloudEvents拥抱 cncf 社区,能够无缝对接社区 SDK通过标准的协议统一了阿里云的事件规范。

③ 支持事件 schema 的自动探测和校验,source target schema 代码绑定等。

④ 全球事件日益互通,EventBridge组建了跨地域跨账户的事件网络,支持跨云跨数据中心的事件路由。

相关实践学习
快速体验阿里云云消息队列RocketMQ版
本实验将带您快速体验使用云消息队列RocketMQ版Serverless系列实例进行获取接入点、创建Topic、创建订阅组、收发消息、查看消息轨迹和仪表盘。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
相关文章
|
5月前
|
监控 Cloud Native Java
Quarkus 云原生Java框架技术详解与实践指南
本文档全面介绍 Quarkus 框架的核心概念、架构特性和实践应用。作为新一代的云原生 Java 框架,Quarkus 旨在为 OpenJDK HotSpot 和 GraalVM 量身定制,显著提升 Java 在容器化环境中的运行效率。本文将深入探讨其响应式编程模型、原生编译能力、扩展机制以及与微服务架构的深度集成,帮助开发者构建高效、轻量的云原生应用。
621 44
|
10月前
|
消息中间件 大数据 关系型数据库
RocketMQ实战—3.基于RocketMQ升级订单系统架构
本文主要介绍了基于MQ实现订单系统核心流程的异步化改造、基于MQ实现订单系统和第三方系统的解耦、基于MQ实现将订单数据同步给大数据团队、秒杀系统的技术难点以及秒杀商详页的架构设计和基于MQ实现秒杀系统的异步化架构。
695 64
RocketMQ实战—3.基于RocketMQ升级订单系统架构
|
4月前
|
Kubernetes Cloud Native 云计算
云计算与云原生技术探索
🌟蒋星熠Jaxonic,云原生探索者!以代码为舟,遨游技术星河。专注容器化、微服务、K8s与DevOps,践行GitOps理念,拥抱多云未来。用架构编织星辰,让创新照亮极客征途!
云计算与云原生技术探索
|
9月前
|
人工智能 Cloud Native 安全
云原生+AI 为企业出海提供全新技术引擎!明天见
5月22日 14:00「飞天发布时刻」,阿里云云原生应用平台产品负责人李国强将重磅揭晓面向 AI 场景的云原生产品体系升级,通过弹性智能的全球一体化架构、开箱即用的云原生 AI 工程化能力,为中国企业出海提供全新技术引擎。
|
10月前
|
Cloud Native 关系型数据库 分布式数据库
|
4月前
|
Java Linux 虚拟化
【Docker】(1)Docker的概述与架构,手把手带你安装Docker,云原生路上不可缺少的一门技术!
1. Docker简介 1.1 Docker是什么 为什么docker会出现? 假定您在开发一款平台项目,您的开发环境具有特定的配置。其他开发人员身处的环境配置也各有不同。 您正在开发的应用依赖于您当前的配置且还要依赖于某些配置文件。 您的企业还拥有标准化的测试和生产环境,且具有自身的配置和一系列支持文件。 **要求:**希望尽可能多在本地模拟这些环境而不产生重新创建服务器环境的开销 问题: 要如何确保应用能够在这些环境中运行和通过质量检测? 在部署过程中不出现令人头疼的版本、配置问题 无需重新编写代码和进行故障修复
439 2
|
10月前
|
存储 关系型数据库 分布式数据库
|
10月前
|
存储 关系型数据库 分布式数据库
|
9月前
|
存储 缓存 分布式计算
StarRocks x Iceberg:云原生湖仓分析技术揭秘与最佳实践
本文将深入探讨基于 StarRocks 和 Iceberg 构建的云原生湖仓分析技术,详细解析两者结合如何实现高效的查询性能优化。内容涵盖 StarRocks Lakehouse 架构、与 Iceberg 的性能协同、最佳实践应用以及未来的发展规划,为您提供全面的技术解读。 作者:杨关锁,北京镜舟科技研发工程师
StarRocks x Iceberg:云原生湖仓分析技术揭秘与最佳实践

热门文章

最新文章