1、数据复制和刷盘策略
1.1 数据复制
数据复制策略指的是Broker的Master与Slave间的数据同步方式。有两种策略:同步复制与异步复制。
同步复制:消息写入master后,等待slave同步数据成功后才向producer返回成功ACK。
异步复制:消息写入master后,master立即向producer返回成功ACK,无需等待slave同步数据成功。
异步复制策略可降低系统的写入延迟,提高系统的吞吐量。
1.2 刷盘策略
刷盘策略指的是broker中消息消息持久化到磁盘的方式,同样有同步刷盘与异步刷盘两种策略。
同步刷盘:当消息持久化到broker的磁盘后才返回消息写入成功的消息。
异步刷盘:当消息写入到broker的内存后即返回消息写入成功的消息,无需等待消息持久化到磁盘。
1)异步刷盘策略可降低系统的写入延迟,提高系统的吞吐量。
2)消息写入到broke的内存,一般是写入到了PageCache。
3)对于异步刷盘策略,消息会写入到PageCache后立即返回成功ACK,但并不会立即做落盘操作,而是当PageCache到达一定量时会自动进行落盘。
2、broker集群模式
2.1 多Master
多master的集群仅由多个master构成,不存在Slave,同一Topic的各个Queue会平均分布在各个master节点上。
优点:配置简单,性能最高;
缺点:单台机器宕机期间,这台机器上未被消费的消息在机器恢复之前不可订阅(不可消费), 消息实时性会受到影响。
2.2 多Master多Slave模式-异步复制
broker集群由多个master构成,每个master又配置了多个slave。master负责处理消息的读写请求,而slave仅负责消息的备份与master宕机后的角色切换。当消息写入master成功后,master立即向 producer返回成功ACK,无需等待slave同步数据成功。 该模式的最大特点之一是,当master宕机后slave能够自动切换为master。不过由于slave从master的同 步具有短暂的延迟(毫秒级),所以当master宕机后,这种异步复制方式可能会存在少量消息的丢失问 题。
2.3 多Master多Slave模式-同步双写
该模式是多Master多Slave模式的同步复制实现。所谓同步双写,指的是消息写入master成功后, master会等待slave同步数据成功后才向producer返回成功ACK,即master与slave都要写入成功后才会返回成功ACK。
该模式与异步复制模式相比,
优点:消息的安全性更高,不存在消息丢失的情况。
缺点:消息的延迟比较高,性能较低。 而且对于目前的版本,Master宕机后,Slave不会自动切换到Master。
3、windows单机环境安装实践
3.1下载安装
①RocketMq官网下载4.7.0版本的RocketMq:Apache RocketMQ
②解压到文件夹
3.2 配置环境变量
新建一个用户变量ROCKETMQ_HOME,值为刚刚解压的RocketMq安装包,如:
3.3 启动
3.3.1 启动NameServer
进入bin目录下,然后执行‘start mqnamesrv.cmd’
3.3.2 启动Broker
进入bin目录下,先修改runbroker.cmd,将 %CLASSPATH% 改成 "%CLASSPATH%"
然后执行‘start mqbroker.cmd -n 127.0.0.1:9876 autoCreateTopicEnable=true’