RocketMQ 消息收发弹性--生产集群如何解决大促场景消息收发的弹性&降本诉求|学习笔记

简介: 快速学习 RocketMQ 消息收发弹性--生产集群如何解决大促场景消息收发的弹性&降本诉求

开发者学堂课程消息队列 RocketMQ 5.0 云原生架构升级课程RocketMQ 消息收发弹性--生产集群如何解决大促场景消息收发的弹性&降本诉求学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/1234/detail/18400


Rocket MQ消息收发弹性--生产集群如何解决大促场景消息收发

 

主要内容:

一、产品介绍:什么是消息收发弹性

二、产品使用及限制:消息收发弹性的使用及限制

三、使用方式及演示:结合业务场景的最佳使用方式

 

今天分享阿里云Rocket MQ5.0场景消息收发功能并且通过该功能生产集群是如何解决大促场景消息收发的弹性以及降本诉求本次介绍将从产品介绍、产品使用及限制、使用方式及演示等三个方面进行介绍在介绍Rocket MQ5.0的实例的消息收发弹性之前,先从整体上介绍一下阿里的策略。

 

一、产品介绍:什么是消息收发弹性

image.png 

通常认为业务方往往存在预期外的突发业务热点和毛刺流量为了应对这些突发热点常规扩容的是无法及时应对的,服务存在不确定性的风险。因此为了应对突发流量,设计了一套处理机制,首先是黄色部分,这部分相当于需要满足规格内的预期流量这是毋庸置疑的,因为每个规格是对应的一个预期内的GPS上限。然后要应对弹性区间内的突发流量,为了应对这个突发流量,需要做到可以随时开启的弹性能力。最后就是要对完全超过弹性上限的流量进行限流,来保证服务的稳定可靠针对弹性区间的突发流量的集群,如果是通过常规扩容的方式,则需要更多的时间,在这段时间之内业务会受损,若仅仅是为了这部分突发流量,就把资源控到一个比较大的规,并不划算使用5.0实例的消息收发弹性能力可以弹性区的突发流量收到秒级响应的,并且针对大数据的预期内的短期的突发流量可以是做到按量收费,更加实惠因为仅仅用户真正使用到了弹性区间内的一部分流量才会进行收费。

image.png 

接下来具体介绍5.0消息收发弹性能力的实例,这个能力最直观的感受其实就是在5.0实例行业有一个自适应弹性的TPS这一部分可以看到在收发TPS弹性的旁边有额外自适应的弹性TPS,用户可以通过对部分进行设置就可以快速低成本的应对大促短时间内的突发流量不直接升级规则提高标准而使用弹性TPS来满足发流量的场景的原因是,此处假设一个大促场景,比如说在今晚的0点有大促活动,如果使用社区收发彩信功能,那这些用户完全可以提前几天就把性功能打开,等到大促结束流量恢复之后把这个功能关闭,实际上不关闭也不会有什么问题,因为如果没有使用的话就不进行收费,使用之后才会收费

但是如果通过升级规格提升标准TPS来处理突发流量,同样是提前几天就把规则给升高那么在大促前这几天实际上是按照高规格进行收费的,但是又无法使用高规格的TPS故此用户实际上是花了更多的钱并且造成了资源的浪费。即使是用户为了避免自己过度浪费,在大促当天0点之前升级规则,这也会出现问题,一个是用户需要付出的额外的精力来关注Rocket MQ进行按时分配,实例的分配是一个非常消耗资源的操作,并且耗时时间会很长没有办法做到开箱即用秒级生效这样的话可能会对用户的业务造成一些有损的影响,使用消息弹性功能的话,可以秒成效,开箱即用的,而且是弹性也是弹性收费的。但是弹性TPS也不是一个解决问题万能的,它也是有上限的。可以看到在上图所示,它上限其实基本上是在标准TPS的基础上有一半的弹性TPS。也就是说如果用户预估自己的业务流量,即使是标准TPS加上弹性TPS仍然无法满足的话,此时只能通过升级规则进行扩容处理,这种情况下使用消息收发弹性功能是满足不了的消息收发发弹性还是会进行扩容弹性,仅仅因为弹性的计算节点已经没有办法满足这个需求,需要扩容存储来满足这种需求,所以需要配规则,这部分的原理后面有详细介绍还有用户可能会问,日常TPS在2500左右,可不可以购买图里的实例,还是购买一个2000标准TPS的实例,但是若把弹性功能打开,弹性有1000,实际上是可以满足消息发送3000 TPS的这样的场景下,其实建议直接使用标准发送消息TPS大于2500的实例,因为弹性TPS部分的使用会有额外收费。如果一天24个小时都在大量的使用弹性TPS,基本上不能直接使用更高规格的实例,这样才会更加实惠。

image.png 

接下来介绍5.0实例如何具体实现消息收发弹性能力的,并且在扩容的场景下对比传统自建的基础上具有的优势。

若左图所示,传统自建集群它是一个存储机资源部分的架构,在这种架构下捕捉是一个很重的数据,可以看到同时需要处理客户端的请求,需要负责消息的读取和写入,需要同时负责计算和存储两方面的功能。那这样的话,就是作为的一个状态结构,那如果想要扩容的话,就需要很重的操作时间也会比较慢,而且在很多时候并不需要真的把握存储能力扩容,仅仅是为了应对短时间的高TPS的请求计算能力的。

此时为了满足这种短时间的高速TPS请求,将其中一个辅助扩容实际上随着扩容出来的存储能力是被浪费掉的。再来看一下右的5.0实例的结构首先可以看到5.0实例的架构是一个存储计算分离的模式用户的客户端仅仅计算节点计算节点才会创作节点之间的消息的读取写入或者存储的部分。

客户端并不会直接访问存储节点,消息收发性功能实际上就是意味着client的弹性得益于存储计算分离的架构,可以快速低成本的扩容计算层的点。计算层的节点作为工作的应用扩容的过程十分便捷,并且依赖于阿里云云厂商拥有大量资源池的前提下配送到资源的材质扩容。

Rocket MQ 5.0消息收发弹性能力一方面依赖于阿里云作为云厂商的弹性能力和自身的存储分离的方案才得以实现的。也就是说在大促这种短时间大量突发流量的场景下,实际上大部分是不需要扩容存储节点,此时就可以通过开通消息收发弹性功能的能力来满足需求

 

二、产品使用及限制:消息收发弹性的使用及限制

image.png 

接下来讲解产品的使用限制,消息收发弹性功能仅仅是支持专业版和铂金版,标准版实例是不支持,并且可以看到图所示专业版的单机规格也是不支持消息收发弹性功能,因为这个单机版实际上是给用户作为一个测试验证的测试实例,并不建议用户在上面生产业务,因为它是单机版的,没有办法生产业务。而且可以看到不同规格的实例弹性TPS上限也是不同的,基本上是在标准TPS的基础上额外会有一半的弹性TPS。面这张图展示的是标准版的弹性TPS上限,如图所示,其他规格的弹性上限小伙伴们可以自行参照官网文档在这里面就不具体列出收费的标准之前也介绍过,是额外计费的而且计费是按照小时进行收费的,计费的具体方式是超过标准TPS的部分流量乘以使用时长乘以弹性规格的使用单价计算得出而且可以看到针对不同版本的实例,在不同地域,它的单价实际上会有一些略微的差别

image.png 

用户可能担心使用此部分弹性TPS会不会有一些稳定性的风险,因为毕竟是在基础标准的TPS之外额外提供的能力,这样给人一种感觉,就是对于实例,如果使用消息收发弹性的功能,是不是因为这个实例已经是处在一种超出额外预算的状态关于这个问题,实际上是不需要担心的,因为对于不同的规格都已经经过了线上的压缩验证,实际上超出了标准TPS的这个弹性TPS是享受一样的稳定性,为期三个月的保障同时可以看到5.0实例的三个版本,标准版,专业版,铂金版,它的稳定性SIV是啊逐渐升高的,弹性TPS的部分是与实例整体稳定性IOS是满足实例整体性SIV的。不会因为使用了弹性GPS它的稳定性就会下降,是不会这样的。

 

三、使用方式及演示:结合业务场景的最佳使用方式

image.png

最后进行操作消息收发弹性能力,进而验证这个功能因为Rocket MQ 5.0实例依然支持使用Rocket MQ 4.0实例交叉访问,所以在这里分别提供了一个一点叉客户端和五点叉客户端的测试代码的实例。可以看到这个程序才写了两千个线程的线程池,并且通过rob limit 的根据输入参数设置了每秒最大的发送设备条数。在程序中会打印发送失败的原因,并且每秒会统计一下总共发送的消息量,根据这个功能,可以验证是不是能达到预期想要的一秒中发送的消息TPS。

image.png 

此处已经购买好了一个专业版的实例而且此实例默认是不会开启消息收发弹性能力的。如果要开启的话,需要在实例消息的页面点击开启弹性,进入到实例修改页面,点开消息弹性的按钮。具体要注意的是在这里可以调整收发信息请求的占比,因为一条消息可能会被多个股东订阅,那这样的话发送一条消息被三个股东订阅,那它的发送消费比例就是1:3,就意味着如果有一条消息写入会有三个消息的消费就有三次消费,那整体的TPS就是4,也就是一条消息对应4个TPS。用户可以根据自己的业务场景以及是如何使用这个消息的,自定义消息收发的占比。现在先不开启弹性能力,可以看到发送TPS上限是2000,此时先尝试发送2300 GPS时会出现的问题。

image.png

可以看到现在基本上每秒成功发送在2200左右,然后其实很多消费都是公司发线路上去可以看到报错信息里面会打印出限流阈值。示的是标准TPS标准发送TPS是2000,但是能够跑到差不多2200左右,因为不会限制的很严格,会预留一定的空间,避免边界情况,例如一个用户就偶尔超了一点点的这种情况是不希望对用户造成业务影响,所以会预留一定的空间。

image.png 

接下来设置好弹性实例,并且设计触发比改成4:5比发送占比改成40%

image.png

现在可以看到已经成功修改了

image.png

那现在再尝试发送2300的TPS,因为这个时候实例实际上应该是可以发送到2400的,还有1600的标准TPS发送和800信息TPS发送。现在已经成功发送300左右个TPS了,并且没有触发任何的限流场景,这已经意味着已经满足了之前的预期情况以上是本节课的全部内容,如果小伙伴们感兴趣的话,也可以自己根据弹性实例来进行验证

相关实践学习
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 流存储解析:面向流场景的关键特性与典型案例
88361 0
|
3月前
|
消息中间件 负载均衡 监控
【面试问题】RabbitMQ 的集群
【1月更文挑战第27天】【面试问题】RabbitMQ 的集群
|
3月前
|
消息中间件 Java
Java操作RabbitMQ单一生产-消费者模式
Java操作RabbitMQ单一生产-消费者模式
31 0
|
11天前
|
消息中间件 存储 算法
RocketMQ学习笔记
RocketMQ学习笔记
54 0
|
23天前
|
传感器 网络协议 中间件
Mqtt学习笔记--交叉编译移植(1)
Mqtt学习笔记--交叉编译移植(1)
18 0
|
1月前
|
消息中间件 存储 数据库
深度剖析 RocketMQ 5.0,流存储:流场景的诉求是什么?
本文将从使用的角度出发,来更详细的展示一下流存储的场景,看看它和业务消息的场景有哪些区别。 RocketMQ 5.0 面向流存储的场景,提供了哪些特性。再结合两个数据集成的案例,来帮助大家了解流存储的用法。
3357 2
|
1月前
|
消息中间件 SQL 容灾
深度剖析 RocketMQ 5.0,消息进阶:如何支撑复杂业务消息场景?
本文主要学习 RocketMQ 的一致性特性,一致性对于交易、金融都是刚需。从大规模复杂业务出发,学习 RocketMQ 的 SQL 订阅、定时消息等特性。再从高可用的角度来看,这里更多的是大型公司对于高阶可用性的要求,如同城容灾、异地多活等。
108171 287
|
1月前
|
消息中间件 Cloud Native 物联网
深度剖析 RocketMQ 5.0,消息基础:RocketMQ 在业务消息场景的基础优势是什么?
本文主要介绍业务消息的应用解耦场景,具体解耦什么? RocketMQ 在业务消息场景的基础特性。业界那么多消息队列能实现应用解耦,RocketMQ 在基础特性上有哪些增强?
125284 2
深度剖析 RocketMQ 5.0,消息基础:RocketMQ 在业务消息场景的基础优势是什么?
|
1月前
|
消息中间件 存储 Cloud Native
深度剖析 RocketMQ 5.0,架构解析:云原生架构如何支撑多元化场景?
了解 RocketMQ 5.0 的核心概念和架构概览;然后我们会从集群角度出发,从宏观视角学习 RocketMQ 的管控链路、数据链路、客户端和服务端如何交互;学习 RocketMQ 如何实现数据的存储,数据的高可用,如何利用云原生存储进一步提升竞争力。
140056 2
|
2月前
|
消息中间件 存储 Apache
精华推荐 | 【深入浅出RocketMQ原理及实战】「性能原理挖掘系列」透彻剖析贯穿RocketMQ的事务性消息的底层原理并在分析其实际开发场景
事务消息(Transactional Message)是指应用本地事务和发送消息操作可以被定义到全局事务中,要么同时成功,要么同时失败。RocketMQ的事务消息提供类似 X/Open XA 的分布事务功能,通过事务消息能达到分布式事务的最终一致。
365 2
精华推荐 | 【深入浅出RocketMQ原理及实战】「性能原理挖掘系列」透彻剖析贯穿RocketMQ的事务性消息的底层原理并在分析其实际开发场景

热门文章

最新文章