本章小结
本章重点介绍了RocketMQ高可用主从同步负载机制与主从服务器读写分离机制。RocketMQ的高可用机制的核心实现是从服务器在启动的时候主动向主服务器建立TCP长连接,然后获取服务器CommitLog文件的最大偏移量,以此偏移量向主服务器主动拉取消息。主服务器根据偏移量,与自身CommitLog文件的最大偏移量进行比较,如果大于从服务器的偏移量,主服务器将向从服务器返回一定数量的消息,该过程循环进行,以此达到主从服务器数据同步的目的。
RocketMQ读写分离与其他中间件的实现方式完全不同,RocketMQ是消费者首先向主服务器发起拉取消息请求,然后主服务器返回一批消息,最后会根据主服务器负载压力与主从同步情况,建议消息消费者下次消息拉取是从主服务器还是从从服务器拉取。
RocketMQ读写分离的特点是默认情况下所有的消费者都从主服务器上消费,只有积压的消息超过物理内存的40%,消费者才会从从服务器拉取消息。从服务器重新漂移到主服务器消费的条件是从服务器积压的消息未超过30%。
RocketMQ从服务器会开启一个定时任务,每隔10s向主服务器同步一次元数据,元数据包括topic路由信息、消息消费进度、延迟消息处理进度、消费组订阅关系。