开发者学堂课程【RocketMQ 知识精讲与项目实战(第三阶段):RocketMQ 主从复制】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/704/detail/12452
RocketMQ 主从复制
内容介绍:
一、消息主从复制的方式
二、配置
三、总结
一、消息主从复制的方式
对于 broker 集群存在两种主从复制的方式,第一种是同步复制,第二种是异步复制。同步复制即 当前给 master 进行复制,master 和 slave 完成数据同步之后,当前才是给生产者进行一个反馈。对于生产者而言,同步复制会产生一定的延迟。在同步复制之下,若 master 产生崩溃的问题, slave 上有全部的备份数据,容易恢复,但是同步复制数据量大的话,数据写入会延迟,降低系统的吞吐量。异步复制即信息发送给 master 之后,它可以很快的响应给生产者, master 和 slave 再通过异步的方式去同步数据,在异步复制之下,具有较小的延迟,可以实现比较高的吞吐量。若 master 在接受完数据出现故障,有些数据没有同步到 slave ,可能造成数据的丢失。两种方式各有优缺点,即同步复制可以保证消息不丢失,吞吐量低。异步复制吞吐量高,但 master 故障可能造成数据丢失。
二、配置
主要配置 brokerRole 的参数值即可,打开文件找到 brokerRole ,如图所示。发现有三个值,大家会有疑问不是只有同步和异步两种吗?同步双写 master、异步复制 master,当前是从节点则配置为第三点 slave ,对于从节点就配置 slave ,对于主节点才会有同步和异步的复制区别。
三、总结
一般刷盘机制和主从复制机制配置组合在一起使用,具体如何组合使用,在实际的业务场景当中,我们建议大家将其刷盘配置为异步的方式,主从之间可以使用同步复制,因为同步复制可以最小的保证数据不丢失,基于以上的分析,上图要进行组合,即异步刷盘加主从复制,是较为推荐的一种方式。异步刷盘保证数据的吞吐量,主从复制保证消息的不丢失。