云原生RocketMQ实践场景

简介: ——洛浩/卢萌凯 阿里云云原生高级产品架构师 阿里云麒麟布道师

image.png

阿里云拥有丰富的消息产品族,除了 RocketMQ 以外,还有大家熟知的对标开源的云 Kafka支持 AMQP协议的开源消息队列 RabbitMQ物联网通信网关 MQTT对标 AWS SQS/SNS Serverless版消息MNS现在也是轻量版 RocketMQ以及云上事件总线事件中心 EeventBridge

阿里云所有消息产品采用 RocketMQ 作为底层存储引擎,为用户提供稳定、可靠、高性能的消息通信能力比如百万 TPS百万队列、毫秒级通信延迟分级存储Serverless弹性等众多的消息产品也带来了丰富的应用场景应用集成和数据集成两大类。

应用集成以 RocketMQ 为主,应用最为广泛,本文也将分享 RocketMQ 在微服务解耦、电商交易、金融支付等场景下的最佳实践,比如银行的交易流水、保单的支付流转等。RabitMQ MQTT也主要用应用集成场景,比如物联网、 IoT 双向通信、云产品的事件通知以及后处理等。对于新建的业务场景,一般首推 RocketMQ 作为消息选型因为 RocketMQ 拥有最丰富的功能特性而对于存量的业务迁移,则可以根据具体使用的消息产品来进行选择,以降低迁移成本。

数据集成以云 Kafka 为主,在大数据分析、日志采集分析等场景下应用最为广泛比如游戏的玩家操作、广告埋点数据分析、应用数据监控等。各种 SaaS 类的集成、聚石塔、电商数据打通等场景,则主要使用EeventBridge更多的产品选型对比,可以参考专题页中的消息队列产品选型。

image.png

RocketMQ经过阿里集团内部十年锤炼,经过双 11 大促万亿级规模的实时场景验证,SLA最高可支持 4 9,数据可靠性支持 9 9

以微服务解耦、订单交易、金融支付等场景为例,在互联网、电商、零售、金融等行业,消息的使用量非常大。尤其是在秒杀大促时,为了保障系统的稳定运行,需要 RocketMQ 进行削峰填。另外金融客户对每笔交易每个订单也都要求数据不能丢失。因此在此类场景普遍对消息的可靠传输、海量并发、低延迟、稳定性与容灾等有着非常高的要求。RocketMQ提供了丰富的消息类型,比如事务消息、定时消息、顺序消息等。

在交易系统里,为了简化交易流程,一般使用事务消息和定时消息。同时 RocketMQ 也提供了消息轨迹查询消息 dashboard 可以非常方便地对每个消息进行回溯,对每个 topic 或者 group 进行监测。

RocketMQ 5.0 也提供了丰富的实例规格,从百级别 QPS 到百万级 QPS 可以覆盖大部分应用场景。RocketMQ 默认提供多副本多可用区部署,也提供了跨地域消息路由能力,支持客户构建高可用容灾或多活,且 RocketMQ 能够支持99.9%的消息RT10ms传输

image.png

以订单状态机异步流转为例。此前,如果收到一笔订单交易,需要逐个通知下游的服务模块,比如需要更新购物车、更新积分等每个业务模块耦合在一起会导致大促时的流量峰值非常大,需要每个服务模块保障其处理性能。基于 RocketMQ 的事务消息能力,即可轻松实现订单子流程系统的异步解耦和流量的削峰填谷,事务消息可以确保数据库订单状态持久化和下游通知的事务性。

收到 LBL订单交易时,可以先向 RocketMQ 发送一条半事务消息,此时RocketMQ hold 住消息,等核心交易事务完成后再向 MQ 提交确认半事务消息的状态,并执行下游服务模块的通知。假设核心交易模块失败,则会废弃之前提交的半事务消息不通知下游。

对比此前的传统事务模块,使用 RocketMQ 可以大幅简化交易链路,缩短下单耗时。尤其是在大促场景下,可以解耦下游的服务模块,提供削峰填谷的能力。

image.png

RocketMQ 的定时消息场景也是常见的使用方式。

比如双 11 等大促场景存在大量预售订单、定点尾款等,会带来大量定时任务。在电商交易过程中,订单流转也存在多个超时状态的任务,处理超时状态的任务需要确保可靠及时。以传统的方案进行构建分布式调度机制实现的时候,比如基于定时器调度延迟大,可能会存在性能瓶颈。

采用 RocketMQ 的定时消息,实现将变得非常简单。定时任务只需提交一条延迟消息到 RocketMQ,由RocketMQ 保障定时消息达到秒级的精度,最高可支持百万级 TPS 能力,同时也能支持消息的消费重试,保障任务可靠触发,比传统的使用方式大大简化定时的复杂度。

image.png

微服务场景下,精准地控制灰度流量并进行灰度版本验证,是保障线上业务稳定运行的关键。大部分情况下,用户通过划分不同的环境来进行灰度发布,对应RocketMQ 的不同实例。但是很多用户希望能够简化环境管理,尽可能复用线上资源,结合消息来提供微服务全链路灰度能力。

图所示,线上已经在运行的微服务模块ABCC 模块会产生消息,并由 A 模块进行消费。此时对服务模块 A C 做灰度发布,则线上会存在两条泳道,一条是正常的业务流量,一条是灰度链路。我们希望线上版本 C 模块生产的消息能够被线上版本 A 模块进行消费灰度版本 C 模块生产的消息能够被灰度版本 A 模块进行消费。

RocketMQ支持透传环境标签,可在生产端给消息属性添加标签,然后开启 RocketMQ SQL 92 语法过滤服务端即可完成消息的过滤和路由,从而降低客户端的压力。

相关实践学习
RocketMQ一站式入门使用
从源码编译、部署broker、部署namesrv,使用java客户端首发消息等一站式入门RocketMQ。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
相关文章
|
1月前
|
消息中间件 存储 数据库
RocketMQ 流存储解析:面向流场景的关键特性与典型案例
RocketMQ 流存储解析:面向流场景的关键特性与典型案例
88357 0
|
1月前
|
缓存 Java API
【云原生】Spring Cloud Gateway的底层原理与实践方法探究
【云原生】Spring Cloud Gateway的底层原理与实践方法探究
|
3月前
|
存储 SQL Cloud Native
深入了解云原生数据库CockroachDB的概念与实践
作为一种全球领先的分布式SQL数据库,CockroachDB以其高可用性、强一致性和灵活性等特点备受关注。本文将深入探讨CockroachDB的概念、设计思想以及实践应用,并结合实例演示其在云原生环境下的优越表现。
|
3月前
|
Cloud Native 关系型数据库 大数据
CockroachDB:云原生数据库的新概念与实践
本文将介绍CockroachDB,一种先进的云原生数据库,它具备分布式、强一致性和高可用性等特点。我们将探讨CockroachDB的基本原理、架构设计以及在实际应用中的种种优势和挑战。
|
1月前
|
Cloud Native 安全 持续交付
构建未来:云原生架构的演进与实践
【2月更文挑战第30天】 随着数字化转型的深入,企业对于信息技术的需求日益复杂化和动态化。传统的IT架构已难以满足快速迭代、灵活扩展及成本效率的双重要求。云原生技术作为解决这一矛盾的关键途径,通过容器化、微服务、持续集成/持续部署(CI/CD)等手段,实现了应用的快速开发、部署及运维。本文将探讨云原生架构的最新发展,分析其如何助力企业构建更加灵活、高效的业务系统,并结合实际案例,展示云原生转型过程中的最佳实践和面临的挑战。
|
6天前
|
消息中间件 监控 负载均衡
RocketMQ实践问题收集
RocketMQ实践问题收集
|
11天前
|
Kubernetes 监控 Cloud Native
构建高效云原生应用:基于Kubernetes的微服务治理实践
【4月更文挑战第13天】 在当今数字化转型的浪潮中,企业纷纷将目光投向了云原生技术以支持其业务敏捷性和可扩展性。本文深入探讨了利用Kubernetes作为容器编排平台,实现微服务架构的有效治理,旨在为开发者和运维团队提供一套优化策略,以确保云原生应用的高性能和稳定性。通过分析微服务设计原则、Kubernetes的核心组件以及实际案例,本文揭示了在多变的业务需求下,如何确保系统的高可用性、弹性和安全性。
16 4
|
1月前
|
消息中间件 存储 数据库
深度剖析 RocketMQ 5.0,流存储:流场景的诉求是什么?
本文将从使用的角度出发,来更详细的展示一下流存储的场景,看看它和业务消息的场景有哪些区别。 RocketMQ 5.0 面向流存储的场景,提供了哪些特性。再结合两个数据集成的案例,来帮助大家了解流存储的用法。
3346 2
|
1月前
|
消息中间件 SQL 容灾
深度剖析 RocketMQ 5.0,消息进阶:如何支撑复杂业务消息场景?
本文主要学习 RocketMQ 的一致性特性,一致性对于交易、金融都是刚需。从大规模复杂业务出发,学习 RocketMQ 的 SQL 订阅、定时消息等特性。再从高可用的角度来看,这里更多的是大型公司对于高阶可用性的要求,如同城容灾、异地多活等。
108148 287
|
1月前
|
消息中间件 Cloud Native 物联网
深度剖析 RocketMQ 5.0,消息基础:RocketMQ 在业务消息场景的基础优势是什么?
本文主要介绍业务消息的应用解耦场景,具体解耦什么? RocketMQ 在业务消息场景的基础特性。业界那么多消息队列能实现应用解耦,RocketMQ 在基础特性上有哪些增强?
125274 2
深度剖析 RocketMQ 5.0,消息基础:RocketMQ 在业务消息场景的基础优势是什么?

热门文章

最新文章