MQ_02RocketMQ快速实战
2023-04-27 17:24:16 7 举报
AI智能生成
RocketMQ快速实战
作者其他创作
大纲/内容
提供轻量级的Broker路由服务
直接执行脚本就可以启动RocketMQ的NameServer服务
nohup bin/mqnamesrv &
mqadminsrv
RocketMQ默认预设的JVM内存是4G,这是RocketMQ给我们的最佳配置
JAVA_OPT=\"${JAVA_OPT} -server -Xms512m -Xmx512m -Xmn256m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m\"
修改的方式是直接修改runserver.sh
CMS垃圾回收器
JVM内存大小
NameServer服务搭建
NameServer
实际处理消息存储、转发等服务的核心组件
nohup ./mqbroker &
启动Broker的脚本是runbroker.sh
Broker的默认预设内存是8G
JAVA_OPT=\"${JAVA_OPT} -server -Xms512m -Xmx512m\"
修改的方式是直接修改runbroker.sh
G1垃圾回收器
Broker服务搭建
Broker
消息生产者集群。通常是业务系统中的一个功能模块
Producer
消息消费者集群。通常也是业务系统中的一个功能模块
Consumer
组件组成
RocketMQ工作原理
消息的发送者
消息接收者
暂存和传输消息
管理Broker
区分消息的种类;一个发送者可以发送消息给一个或者多个Topic;一个消息的接收者可以订阅一个或者多个Topic消息
Topic
2主2从异步刷盘(吞吐量较大,但是消息可能丢失)
conf/2m-2s-async
2主2从同步刷盘(吞吐量会下降,但是消息更安全)
2m-2s-sync
2主无从(单点故障),然后还可以直接配置broker.conf,进行单点环境配置
2m-noslave
集群中的节点会基于Raft协议随机选举出一个leader,其他的就都是follower。通常正式环境都会采用这种方式来搭建集群
dleger就是用来实现主从切换的
brokerId=0
#在发送消息时,自动创建服务器不存在的topic,默认创建的队列数
defaultTopicQueueNums=4
#是否允许 Broker 自动创建Topic,建议线下开启,线上关闭
autoCreateTopicEnable=true
#是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=true
#Broker 的角色#- ASYNC_MASTER 异步复制Master#- SYNC_MASTER 同步双写Master#- SLAVE
brokerRole=ASYNC_MASTER
#刷盘方式#- ASYNC_FLUSH 异步刷盘#- SYNC_FLUSH 同步刷盘
flushDiskType=ASYNC_FLUSH
同一机器上两个实例的listenPort也不能相同。否则会报端口占用的错
如果是多网卡的机器,比如云服务器,那么需要在broker.conf中增加brokerIP1属性,指定所在机器的外网网卡地址
注意
配置细节
配置文件
RocketMQ主从集群
RocketMQ集群架构
消息消费者(Consumer)
负责生产消息,一般由业务系统负责生产消息
同步发送、异步发送、顺序发送、单向发送。同步和异步方式均
发送方式
消息生产者(Producer)
负责消费消息,一般是后台系统负责异步消费
拉取式消费、推动式消费
消费形式
消息模型(Message Model)
表示一类消息的集合,每个主题包含若干条消息,每条消息只能属于一个主题,是RocketMQ进行消息订阅的基本单位
Topic只是一个逻辑概念,并不实际保存消息
同一个Topic下的消息,会分片保存到不同的Broker上,而每一个分片单位,就叫做MessageQueue。MessageQueue是一个具有FIFO特性的队列结构,生产者发送消息与消费者消费消息的最小单位
主题(Topic)
消息中转角色,负责存储消息、转发消息
负责接收从生产者发送来的消息并存储、同时为消费者的拉取请求作准备
存储消息相关的元数据,包括消费者组、消费进度偏移和主题和队列消息
整个Broker的实体,负责处理来自clients端的请求
Remoting Module
负责管理客户端(Producer/Consumer)和维护Consumer的Topic订阅信息
Client Manager
提供方便简单的API接口处理消息存储到物理硬盘和查询功能
Store Service
高可用服务,提供Master Broker 和 Slave Broker之间的数据同步功能
HA Service
根据特定的Message key对投递到Broker的消息进行索引服务,以提供消息的快速查询
Index Service
子模块
集群模式下会给每个节点分配一个固定的角色
master负责响应客户端的请求,并存储消息
slave则只负责对master的消息进行同步保存,并响应部分客户端的读请求
消息同步方式分为同步同步和异步同步
普通集群
集群会随机选出一个节点作为master,而当master节点挂了后,会从slave中自动选出一个节点升级成为master
Dledger高可用集群
Broker架构模式
保证高可用需要搭建主从集群架构
代理服务器(Broker Server)
名称服务充当路由消息的提供者
Broker Server会在启动时向所有的Name Server注册自己的服务信息,并且后续通过心跳请求的方式保证这个服务信息的实时性
生产者或消费者能够通过名字服务查找各主题相应的Broker IP列表
NameServer中任意的节点挂了,只要有一台服务节点正常,整个路由服务就不会有影响
名字服务(Name Server)
消息系统所传输信息的物理载体,生产和消费数据的最小单位,每条消息必须属于一个主题Topic
每个消息拥有唯一的Message ID,且可以携带具有业务标识的Key
Message上有一个为消息设置的标志
用于同一主题下区分不同类型的消息
来自同一业务单元的消息,可以根据不同业务目的在同一主题下设置不同标签
标签能够有效地保持代码的清晰度和连贯性,并优化RocketMQ提供的查询系统
根据Tag实现对不同子主题的不同消费逻辑,实现更好的扩展性
Tag标签
消息(Message)
基础概念
RocketMQ消息转发模型
RocketMQ快速实战
0 条评论
下一页