RocketMQ

2019-10-21  本文已影响0人  千淘萬漉

1️⃣架构原理

本着不重复造轮子的原则,这里有一篇很好的文章RocketMQ-架构原理,对RocketMQ的基本概念,部署架构以及MQ中各个角色进行了很好的解释。挑出了几个重要问题和概念再单独梳理如下:

2️⃣环境部署

Docker环境下部署可以参考:RocketMQ-Docker部署RocketMQ集群。RocketMQ的部署方式可以分为四种:

1.单个 Master

这种方式风险较大,一旦Broker 重启或者宕机时,会导致整个服务不可用,线上环境一般不使用这种。

2.多 Master 模式

一个集群无 Slave,全是 Master,例如 2 个 Master 或者 3 个 Master
优点:配置简单,单个Master 宕机或重启维护对应用无影响,在磁盘配置为 RAID10 时,即使机器宕机不可恢复情况下,由与 RAID10 磁盘非常可靠,消息也不会丢(异步刷盘丢失少量消息,同步刷盘一条不丢)。性能最高。

3.多 Master 多 Slave 模式,异步复制

每个 Master 配置一个 Slave,有多对Master-Slave,HA 采用异步复制方式,主备有短暂消息延迟,毫秒级。

4.多 Master 多 Slave 模式,同步双写

每个 Master 配置一个 Slave,有多对Master-Slave,HA 采用同步双写方式,主备都写成功,向应用返回成功。

Broker关键配置及说明:

#所属集群名字
brokerClusterName=rocketmq-cluster

#broker名字,注意此处不同的配置文件填写的不一样 brokerName=broker-a|broker-b
#0 表示 Master,>0 表示 Slave
brokerId=0

#nameServer地址,分号分割
namesrvAddr=rocketmq-nameserver1:9876;rocketmq-nameserver2:9876

#在发送消息时,自动创建服务器不存在的topic,默认创建的队列数
defaultTopicQueueNums=4

#Broker 对外服务的监听端口
listenPort=10911

#存储路径
storePathRootDir=/usr/local/rocketmq/store

#commitLog 存储路径
storePathCommitLog=/usr/local/rocketmq/store/commitlog

#消费队列存储路径存储路径
storePathConsumeQueue=/usr/local/rocketmq/store/consumequeue

#消息索引存储路径
storePathIndex=/usr/local/rocketmq/store/index

#Broker 的角色
#- ASYNC_MASTER 异步复制Master
#- SYNC_MASTER 同步双写Master
#- SLAVE
brokerRole=ASYNC_MASTER

#刷盘方式
#- ASYNC_FLUSH 异步刷盘
#- SYNC_FLUSH 同步刷盘
flushDiskType=ASYNC_FLUSH

其中注意:

source: RocketMQ(4)---RocketMQ核心配置讲解

3️⃣SpringBoot集成RocketMQ

4️⃣高级特性

5️⃣原理解惑

主要参考:
1、雨点的名字. MQ消息队列

上一篇下一篇

猜你喜欢

热点阅读