springboot整合rocketMQ集群、监控

本文详细介绍了如何将SpringBoot应用与RocketMQ集群整合,并搭建监控。首先概述了RocketMQ在异步处理、应用解耦等场景的应用,然后详细阐述了网络集群节点描述、集群部署的步骤,包括NameServer、Broker的配置与启动,以及搭建web管理界面的过程。最后,通过代码示例展示了Producer和Consumer的使用,并总结了RocketMQ集群的价值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前提

在上一篇里面介绍了关于rocketMQ的基础知识和单机搭建,现在把自己的集群搭建和监控以及springboot整合贴出来分享

应用场景和性能

这里参照了《rocketMQ》集群解决方案:https://yq.aliyun.com/ziliao/306770  rocketMQ能帮我们解决什么问题?

1、异步处理,将不是必须要在当前处理的业务逻辑,进行异步处理,比如注册之后的短信,邮箱的发送

2、应用解耦:

订单系统:用户下单后,订单系统完成持久化处理,将消息写入消息队列,返回用户订单下单成功。

库存系统:订阅下单的消息,采用拉/推的方式,获取下单信息,库存系统根据下单信息,进行库存操作。

假如:在下单时库存系统不能正常使用,也不影响正常下单,因为下单后,订单系统写入消息队列就不再关系其他后续的操作了。实现订单系统与库存系统的应用解耦。

3、流量削峰,也是消息队列中的常用场景,一般在秒杀或团抢活动中使用广泛。

应用场景:秒杀活动,一般会因为流量过大,导致流量暴增,应用挂掉。为解决这个问题,一般需要在应用前端加入消息队列。

可以控制活动的人数

可以缓解短时间内高流量压垮应用

用户的请求,服务器接收后,首先写入消息队列。加入消息队列长度超过最大数量,则直接抛弃用户请求或跳转到错误页面

秒杀业务根据消息队列中的请求信息,再做后续处理

4、日志处理

5、消息通讯

6、性能:

rocketMQ单机也可以支持亿级的消息堆积能力,单机写入TPS单实例约7万条/秒,单机部署3个broker,可以跑到最高12万条/秒,消息大小10个字节

网络集群节点描述

1、NameServer可集群部署,节点之间无任何信息同步

2、broker部署相对复杂,broker分为master和slave,一个master可以对应多个slave,但是一个slave只能对应一个master,master与slave的对应关系通过指定相同的brokerName,不同的brokerId来定义,brokerId=0表示master,非0表示slave,master也可以部署多个,只需指定不同的brokerName和监听端口

3、producer与NameServer集群中的其中一个节点(随机选择)建立长连接,定期从NameServer取topic路由信息,并向提供topic服务的master建立长连接,且定时向master发送心跳。producer完全无状态,可集群部署。

4、consumer与NameServer集群中的其中一个节点(随机选择)建立长连接,定期从NameServer取topic路由信息,并向提供Topic服务的master、slave建立长连接,且定时向master、slave发送心跳。consumer既可以从master订阅消息,也可以从slave订阅消息,订阅规则由broker配置决定。

集群部署

这里基于最新版4.3.2搭建双nameserver双master双slave集群

准备环境

1、两台linux服务器(centos7-64位)

2、maven3.5以上

3、64位JDK1.8以上

4、工具:我这里使用的是finalShell,可以选择xshell+xftp

部署结构如下:

 开始搭建

1、下载安装包上传到节点服务器

下载地址:

https://www.apache.org/dyn/closer.cgi?path=rocketmq/4.3.2/rocketmq-all-4.3.2-bin-release.zip

下载完成上传到节点指定目录(我的是放到/date/rocketMQ)

 2、压解zip包

 

这里提一下

rocketMQ官方文档中默认提供了三种建议配置模式(conf目录中):

1、2m-2s-async(主从模式异步刷盘机制)在这里我选的是主从异步的模式

2、2m-2s-sync(主从模式同步刷盘机制)

3、2m-noslave(仅master)

修改配置文件

在同一台服务器启动多个broker时,需使用不同的broker配置文件来启动(我这里采用改的是节点1启动a-m和b-s)

关于配置文件的详细信息在官方文档中有明确标注,这里不做过多描述,贴出地址,个性化配置请参照:http://rocketmq.apache.org/docs/rmq-deployment/

listenPort默认为10911,同服务器启动多个broker时,需区分端口

broker启动时默认内存设置比较大,如果报错‘Cannot allocate memory’ 修改bin目录的runbroker.sh文件

单节点启动多个broker实例时,存储路径如果显式设置,则需要指定不同的storePath路径,默认不同

修改broker-a.properties配置文件

v
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值