RocketMQ高可用探究:消息存储技术
RocketMQ是阿里开源的分布式消息中间件,跟其它中间件相比,RocketMQ的特点是纯JAVA实现、集群和HA实现相对简单、在发生宕机和其它故障时消息丢失率更低,具有良好的高可用架构及稳定性。其发展的迭代历史如下图所示,从2007年至今已发展超过10年。 图1:RocketMQ迭代历史 1 消息存储架构 图2:RocketMQ消息存储架构 RocketMQ的消息存储架构如上图所示,可以看到主要由三个跟消息存储相关的文件构成。 CommitLog:消息及元数据的存储主体。消息内容不是定长的,同时单个文件大小默认1G,文件名长度为20位,左边补零,剩余为起始偏移量。比如00000000000000000000代表了第一个文件,起始偏移量为0,文件大小为1G=1073741824;当第一个文件写满了,第二个文件为00000000001073741824,起始偏移量为1073741824,以此类推。消息主要是顺序写入日志文件,当第一个文件满了,再写入下一个文件。 ConsumeQueue:消息消费队列。RocketMQ是基于主题topic的订阅模式,消息消费是针对主题进行的,如果要根据to...