面试题答案
一键面试1. 数据同步方式
RocketMQ 的 Master 和 Slave 之间的数据同步采用的是异步复制方式。
2. 同步流程和机制
- 消息写入 Master:
- 生产者将消息发送到 Master Broker。Master Broker 接收到消息后,会将其写入到 CommitLog 文件(消息存储文件)中。
- 写入成功后,Master 会给生产者返回写入成功的响应。
- 同步到 Slave:
- Master Broker 会启动一个专门的线程,负责将 CommitLog 中的数据同步到 Slave Broker。这个线程会不断地从 CommitLog 中读取数据。
- Master 通过网络将读取到的数据发送给 Slave。
- Slave Broker 接收到数据后,将其写入到自己的 CommitLog 文件中。这样就完成了一次数据同步。
- 高可用性保障:
- 当 Master 发生故障不可用时,Slave 可以切换为 Master 继续提供服务。由于采用异步复制,可能存在部分数据还未同步到 Slave 的情况,但 RocketMQ 会尽量保证数据的一致性和可靠性。例如,在故障恢复和切换过程中,会对未同步的数据进行处理,尽量减少数据丢失。