技术主题
在RocketMQ的高可用架构中,重点关注两点:第一个点是主从同步,第二个点是故障转移。
技术原理-主从同步
主从同步意义
1、数据备份:保证了多台机器上的数据冗余
2、高可用性:即使master掉线,consumer会自动重连到对应的slave的机器上
3、提高性能:分担master读的压力,当从master拉取消息,拉取消息
4、消费实时:master节点挂掉之后,依然可以从slave节点读取消息
主从同步和刷盘类型
通常是异步刷盘+同步复制
broker的角色
1.ASYNC_MASTER主从异步复制
master写成功,返回客户端成功,拥有较低的延迟和较高的吞吐量,但是当master出现故障后,会出现数据丢失
2.SYNC_MASTER主从同步双写(推荐)
master和slave均写成功,返回客户端成功,master挂了以后,保证数据不丢失,同步复制会增加数据写入延迟,降低吞吐量
刷盘方式
1、ASYNC_FLUSH异步刷盘(默认)
生产者发送的消息不会立即保存到磁盘,而是暂时缓存起来,然后返回生产者成功,随后异步将缓存数据保存到磁盘,两种情况:1是定期将缓存中更新的数据进行刷盘,2当缓存中更新的数据条数达到一定值后进行刷盘,会存在消息丢失&#x