一、rocketmq架构原理简单技术回顾
多主:可以分摊数据
二、rocketmq集群四种模式架构
Rocketmq集群模式:四种
- 单个Master节点,负载压力非常大,如果宕机的话,数据可能会丢失。。
2.多个Master节点,好处分摊存储我们的数据缺点:没有slave节点的话,当我们的。
Master宕机的话,没有数据备份,可能数据会丢失。。
3.多个Master和多slave 节点同步的形式实现主从数据同步优点:效率非常低、但是数据可以不丢失。
4.多个Master和多slave节点异步实现主从数据同步优点:效率非常高、缺点:数据
之间同步可能会短暂的产生延迟(几十毫秒)、
三、rocketmqBroker集群的方式
2个主节点
:
169为Master节点。
173为Master节点。
分摊对我们topic数据存放连接 同一个nameserver.
169的配置文件
mqbroker的信息都注册到了 169的nameserve 上
173的配置文件
brokerClusterName = mayikt
brokerName = broker-b.
brokerld = 0.
nohup sh bin/mqbroker -c . /conf/broker. conf - n 192. 168. 212. 169:
9876 &
brokerid 0表示为Master
节点>0 slave 节点
169主节点,173为从节点:
nameserve做相互注册:
你中有我 我中有你
169配置文件:
173配置文件:
四、rocketmq如何实现实现动态扩容
增加broker: broker扩容
同理:消费者也可以做扩容
五、rocketmq如何实现topic拆分多个不同队列
broker集群,2个broker时,有8个队列
六、rocketmq如何保证消息的顺序的问题
七、rocketmq.代码形式解决消息顺序性问题
1、生产者:
2、消费者
报错空指针:
正常运行
没有按照 期望的 顺序执行。
多运行几次,发现每次都是独立的线程:都是异步的,效率比较高
保证按照期望的顺序来消费,生产者就要把消息投递到1个队列中:
运行结果:
让消费者等待,模拟高并发时出现的情况
八、rcoketmq如何设置消费者线程数量
一个队列 一个thread:
队列:消费者 = 1:1
可以多开启几个消费者
把 此处的sleep 去掉:
结果:
不是真正的多线程
消费者最大线程数为1:
结果:
消费者最大线程数 =4
改为:max=1 每个消费者只有一个队列 消费者:队列 = 1:1