消息存储核心类介绍|学习笔记

简介: 快速学习消息存储核心类介绍

开发者学堂课程【RocketMQ 知识精讲与项目实战(第三阶段)消息存储核心类介绍】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/704/detail/12477


消息存储核心类介绍

 

消息存储它的源码主要是在store的模块当中。

image.png

这里面最重要的一个类是DefaultMessageStore,最核心的消息存储代码都在这里面。

image.png

在这个类当中有一些重要的属性:

1、第一个就是message store config,这是消息配置的一些属性,这些属性都在这个类当中。如下代码所示:

private final Messagestoreconfig messagestoreconfig;//消息配置属性

2、commit log是文件存储的一个实现类。如下代码所示:

private fina1 Commitlog commitLog /commitLog文件存储的实现类

3、还有一个就是消息队列缓存表,这里面就会按照topic对于整个的消费的队列进行维护。如下代码所示:

private finaT ConcurrentMap<string/topic/,ConcurrentMap<Integer/ queueId/ consumequeue>> C onsumequeue table;/ /消息队列存储缓存表,按照消息主题分组

4、flashConsumerqueueservice就是一个服务类,它是服务的一个线程。这个线程主要的作用就是进行消息队列的文件的刷盘作用,flash就是用来刷盘的。如下代码所示:private final FlushConsuneQueueService flushConsumeQueueService:消息队列文件隔盘线程

5、commitlogService也是一个服务类,这个服务类是用来清除commit log这个文件的。commit log里面存储了消息的所有信息,消息消费了之后里面的已经全部消费的文件就可以删除了。那么将来就可以通过这个服务去进行删除处理。如下代码所示:

private final cleancommitlogservice Cleancommitlogservice; //清除Commitlog文件服务

6、CleanConsumerqueueService,同样的道理就是对于consumer queue的这个队列文件,通过这个服务类去删除。

如下代码所示:private finalCleanconsumeQueueservice cleanconsumequeueservice; //清除consumerQueue队列文件服务

7、IndexService indexService就是负责维护索引文件对应的业务逻辑。如下代码所示:

private final Indexservice indexservice;//索引实现类

8、Mapped File分配的服务,它也是一个服务类。

如下代码所示:private final A11ocateMappedFileservice allocateMappefileservice: /Mappedfile分配任务

9、Commitlog消息分发,就是这个reputMessageService,当这个消息发到commit log之后会通过服务类对这个消息进行转发。转发到哪里?转发到 consumer queue和index service所有文件当中。如下代码所示:

private final ReputMessageservice reputMessage Service;//s omnitLog消息分发,根据CommitLog文件构建 consumerqueue. IndexFile文件

10、HAservice是做高可用机机制的一个服务类。如下代码所示:

Private final Haservice haservice//存储HA机制

11、Schedulemessageservice是消息服务调度的一个线程:

如下代码所示:

PrivatefinalschedulemessageService schedulemessageservice

12、storeSratsService是消息存储服务。

如下代码所示:

Private final storestatesservice storestatsservice//消息存储服务

13、Transientstorepool这里面的意思是在消息发送时进行刷盘,如果打开了一个堆外的内存,那么这个消息再去进行刷盘的时候,会将这个消息刷到堆外的内存空间当中去,这就是对外的内存。

如下代码所示:

Private final TransientstorePool transienstorePool;//消息堆外内存缓存

14、下一个是Broker的状态管理器,就是Brokerstats Manager。

如下代码所示:

PrivatefinalBrokerStatesMessage brokerstatsManger;//Broker状态管理器

15、message ArrivingListener是一个监听器,是消息拉取长轮询模式,消息到达的监听器。

如下代码所示:

PrivatefinalMessageArrivingListener messageArrivigListener;//消息拉取长轮询模式消息达到监听器

16、下面这个brokerconfig就是broker的一个配置类。

如下代码所示:

Private final BrokerConfig brokerConfig;//Broker配置类

17、store checkpoint 就是文件刷盘的一个检测点。如下代码所示:

Private storeCheckpoint storecheckpoint;//文件刷盘监测点

18、dispatcherList就是commitlog的文件转发请求,这是一个链表。如下代码所示:

Privatefinal LinkedList<commitLogDispatcher>dispatcherList;//commitLog文件转发需求

以上是一些重要的属性。

相关文章
|
8月前
|
消息中间件 Java 数据库
RocketMQ实战—9.营销系统代码初版
本文主要介绍了实现营销系统四大促销场景的代码初版:全量用户推送促销活动、全量用户发放优惠券、特定用户推送领取优惠券消息、热门商品定时推送。
RocketMQ实战—9.营销系统代码初版
|
8月前
|
消息中间件 搜索推荐 调度
RocketMQ实战—8.营销系统业务和方案介绍
本文详细介绍了电商营销系统的业务流程、技术架构及挑战解决方案。涵盖核心交易与支付后履约流程,优惠券和促销活动的发券、领券、用券、销券机制,以及会员与推送的数据库设计。技术架构基于Nacos服务注册中心、Dubbo RPC框架、RocketMQ消息中间件和XXLJob分布式调度工具,实现系统间高效通信与任务管理。针对千万级用户量下的推送和发券场景,提出异步化、分片处理与惰性发券等优化方案,解决高并发压力。同时,通过RocketMQ实现系统解耦,提升扩展性,并利用XXLJob完成爆款商品推荐的分布式调度推送。整体设计确保系统在大规模用户场景下的性能与稳定性。
RocketMQ实战—8.营销系统业务和方案介绍
|
8月前
|
消息中间件 存储 NoSQL
RocketMQ实战—6.生产优化及运维方案
本文围绕RocketMQ集群的使用与优化,详细探讨了六个关键问题。首先,介绍了如何通过ACL配置实现RocketMQ集群的权限控制,防止不同团队间误用Topic。其次,讲解了消息轨迹功能的开启与追踪流程,帮助定位和排查问题。接着,分析了百万消息积压的处理方法,包括直接丢弃、扩容消费者或通过新Topic间接扩容等策略。此外,提出了针对RocketMQ集群崩溃的金融级高可用方案,确保消息不丢失。同时,讨论了为RocketMQ增加限流功能的重要性及实现方式,以提升系统稳定性。最后,分享了从Kafka迁移到RocketMQ的双写双读方案,确保数据一致性与平稳过渡。
|
10月前
|
人工智能 数据可视化 API
自动查文献+写代码+跑数据+出报告!港大开源 Auto Deep Research 搞定科研全流程
Auto-Deep-Research 是一款由香港大学开源的个人 AI 助理,基于模块化多 Agent 架构,专注于深度研究任务,兼容多种大语言模型,并提供一键启动和文件解析等强大功能。
952 4
自动查文献+写代码+跑数据+出报告!港大开源 Auto Deep Research 搞定科研全流程
|
8月前
|
消息中间件 NoSQL Java
RocketMQ实战—10.营销系统代码优化
本文主要介绍了如何对营销系统的四大促销场景的代码进行优化,包括:全量用户推送促销活动、全量用户发放优惠券、特定用户推送领取优惠券消息、热门商品定时推送。
|
8月前
|
SQL 大数据 数据库
RocketMQ实战—1.订单系统面临的技术挑战
本文详细分析了一个订单系统的设计与技术挑战。首先,介绍了订单系统的整体架构、业务流程及负载情况,包括电商购物流程、核心和非核心业务流程,以及真实生产中的负载压力。接着,探讨了系统面临的主要技术问题:支付后发券、发红包等操作导致性能下降;退款流程复杂且易失败;与第三方系统耦合带来的不稳定;大数据团队直接查询数据库影响性能;秒杀活动时数据库压力剧增等。最后,通过放大100倍压力的方法,梳理了高并发下的技术挑战,如核心链路优化、后台线程补偿机制、第三方系统解耦、数据获取方式改进等,为订单系统的优化提供了全面的参考。
RocketMQ实战—1.订单系统面临的技术挑战
|
消息中间件 存储 Cloud Native
深度剖析 RocketMQ 5.0,架构解析:云原生架构如何支撑多元化场景?
了解 RocketMQ 5.0 的核心概念和架构概览;然后我们会从集群角度出发,从宏观视角学习 RocketMQ 的管控链路、数据链路、客户端和服务端如何交互;学习 RocketMQ 如何实现数据的存储,数据的高可用,如何利用云原生存储进一步提升竞争力。
143137 3
中国联通·阿里云万卡绿色算力项目在西宁点亮
中国联通·阿里云万卡绿色算力项目在西宁点亮
|
12月前
|
人工智能
官宣!西安市数据局与阿里云达成合作
官宣!西安市数据局与阿里云达成合作
395 8
|
12月前
|
人工智能 数据挖掘
扎根江西!江西数字集团与阿里云达成深度合作
扎根江西!江西数字集团与阿里云达成深度合作
371 6