国外时尚设计网站,鹤壁做网站哪家好,学校申请建设网站的原因,哪些做海报比较好的网站1.前言
此文章是在儒猿课程中的学习笔记#xff0c;感兴趣的想看原来的课程可以去咨询儒猿课堂《从0开始带你成为RocketMQ高手》#xff0c;我本人觉得这个作者还是不错#xff0c;都是从场景来进行分析#xff0c;感觉还是挺适合我这种小白的。这块主要都是我自己的学习笔…1.前言
此文章是在儒猿课程中的学习笔记感兴趣的想看原来的课程可以去咨询儒猿课堂《从0开始带你成为RocketMQ高手》我本人觉得这个作者还是不错都是从场景来进行分析感觉还是挺适合我这种小白的。这块主要都是我自己的学习笔记。想看原版的还是去儒猿课堂。
这篇文章紧挨着上一篇文章RokcetMQ中Producer的秘密-CSDN博客
2.Broker如何存储消息
前面我们已经大致了解到Broker通过Netty网络服务器获取到一个请求会将消息进行写入到一个CommitLog文件中一个Broker上只有一个CommitLog文件所有的Topic消息都会写入到一个CommitLog文件里。同时会以异步的方式将消息写入到MessageQueue中因为一个Topic会有多个MessageQueue一个MessageQueue其实就对应一个ConsumeQueue文件。于此同时还会异步将消息写入到IndexFile里这个IndexFile里存储的就是每个消息的key和消息在CommitLog中的offset偏移量做一个索引。
我们来总结一下这个流程
1.Broker收到消息之后先写入到CommitLog日志文件中这个CommitLog日志文件在磁盘目录是${ROCKETMQ_HOME}/store/commitlog,这个目录下会有很多CommitLog日志文件每个文件的默认大小是1G一个文件写满了就会创建一个新的文件文件名的话就是文件中的第一偏移量如果文件名不足20位就会用0来补齐。文件名如下所示
00000000000000
00000000000124
在把消息写入到CommitLog文件的时候就会申请PutMessageLock锁这就意味着写入CommitLog日志的时候是串行的操作不会让你进行并发写的。并发写的时候就会有数据错乱的问题。
2.接着就会对消息做出一通处理包括设置消息的存储时间创建全局唯一消息ID计算消息的总长度接着走一段关键的代码将消息写入到MappedFile里。
3.总结
紧接着我们用一张图来总结下这篇博客的内容