- 博客(95)
- 资源 (1)
- 收藏
- 关注
原创 RocketMQ 索引文件(IndexFile)详解:结构、原理与源码剖析
RocketMQ 的消息存储采用顺序写 CommitLog 的方式保证高性能,但这种方式在随机读场景下效率较低。IndexFile 作为一种辅助存储结构,旨在为消息提供基于 Key 的快速检索能力,弥补了顺序写在查询场景下的不足。IndexFile 作为 RocketMQ 的核心组件之一,通过精心设计的哈希索引结构,为消息提供了高效的基于 Key 的检索能力。其固定大小的文件设计、内存映射机制以及时间范围查询特性,使得 RocketMQ 在处理海量消息时依然能够保持出色的检索性能。
2025-05-25 15:29:21
783
原创 RocketMQ 中的 ConsumeQueue:消息消费的关键索引
在理解 ConsumeQueue 之前,我们需要先了解 RocketMQ 的整体存储架构。CommitLog:作为消息的物理存储文件,所有主题的消息都按写入顺序被存储在 CommitLog 中。这是一个全局唯一的存储结构,确保了消息的顺序写入和高效存储。:作为消息的逻辑队列,是 CommitLog 的索引文件。每个主题的每个队列都有独立的 ConsumeQueue 文件,记录着消息在 CommitLog 中的物理偏移量、大小、标签等元数据。IndexFile。
2025-05-22 16:40:19
719
原创 MySQL InnoDB 表空间详解
InnoDB 表空间是数据存储的逻辑容器,负责组织和管理数据文件、索引及事务日志。系统表空间:存储数据字典、双写缓冲区等核心数据独立表空间:每个表独立存储为.ibd 文件通用表空间:多个表共享的可自定义表空间临时表空间:处理临时数据和排序操作撤销表空间:管理事务回滚信息和 MVCC 机制。
2025-05-11 21:53:46
629
原创 深入探究 InnoDB 的写失效问题
InnoDB 的写失效问题是数据库管理中需要重点关注的一个方面。部分页写入等写失效情况可能导致数据丢失和数据库完整性受损,严重影响应用程序的正常运行。Double Write Buffer 机制作为 InnoDB 应对写失效的有效手段,通过在内存和磁盘上创建数据副本,结合崩溃恢复机制,极大地提高了数据页的可靠性。虽然该机制会带来一定的性能开销,但通过合理的监控和配置,可以在数据可靠性和性能之间找到平衡。
2025-05-10 19:46:34
932
原创 探秘 RocketMQ 的 DLedgerServer:MemberState 的技术解析与深度剖析
在 RocketMQ 构建高可靠、强一致性消息系统的架构中,DLedgerServer 扮演着举足轻重的角色,而 MemberState 作为 DLedgerServer 内部用于描述节点状态的核心类,更是整个分布式日志模块稳定运行的关键。深入理解 MemberState 的设计理念、功能特性和工作原理,有助于我们揭开 RocketMQ 高可用背后的技术奥秘。本文将从多个维度对 DLedgerServer 中的 MemberState 进行详细介绍与剖析。。
2025-05-04 22:42:18
959
原创 探索 Disruptor:高性能并发框架的奥秘
Disruptor 是由 LMAX 开发的一个高性能的无锁并发框架,最初用于 LMAX 的交易平台,以处理每秒数百万级别的交易请求。它通过优化内存访问、减少锁竞争和提高缓存命中率等方式,显著提升了系统的并发处理能力。Disruptor 通过无锁化设计、缓冲行填充和 RingBuffer 等技术,有效地解决了高并发场景下的性能瓶颈问题。它的设计理念和实现方式为我们提供了一种高效的并发编程思路。在实际应用中,我们可以根据具体的业务需求,合理使用 Disruptor 来提升系统的并发处理能力。
2025-05-02 23:42:55
877
原创 Netty相关的知识点
适用于需要将消息传递给下一个处理器的场景,或者要对消息进行多次处理的场景。方法的主要作用是断开当前的连接,不过它会保留底层的通道,方便后续再次连接。:适用于消息处理完成后无需再传递给下一个处理器的场景,例如简单的客户端或服务器,处理完消息后就可以释放资源。这意味着在处理完消息之后,你得手动释放相关资源,不然会造成内存泄漏。:会自动释放接收到的消息。当消息处理完成,它会自动释放消息所占用的资源。方法,在其中处理接收到的消息。包,以此来正常终止连接,但不会释放底层的套接字资源。方法,在其中处理接收到的消息。
2025-05-01 14:33:42
344
原创 RocketMQ 存储核心:深入解析 CommitLog 设计原理
CommitLog 是 RocketMQ 消息存储的核心物理文件,所有 Topic 的消息均以顺序追加(Append-Only)的方式写入同一个 CommitLog 文件。这种设计颠覆了传统“每个 Topic 独立存储”的模式,通过统一的顺序写机制最大化磁盘 I/O 效率。
2025-04-28 22:14:08
733
原创 RocketMQ CommitLog 核心恢复机制解析:recoverNormally 如何守护消息可靠性
的设计体现了 RocketMQ 在性能与可靠性之间的精妙平衡:通过严格顺序扫描、分层校验和智能截断,在保证消息不丢失的前提下,实现平均 5 秒内完成 TB 级 CommitLog 的恢复(实测数据)。理解这一机制,对于构建高可靠消息系统、排查数据不一致问题具有重要实践意义。
2025-04-21 16:33:54
414
原创 RocketMQ CommitLog异步写入机制深度解析:从asyncPutMessage看亿级消息吞吐设计
在万亿级消息流转的战场上,RocketMQ的CommitLog如同消息高速公路的收费站。当我们调用asyncPutMessage时,本质上是在进行一场精密的。其设计目标可量化为:单机TPS:突破10万级消息写入端到端延迟:控制在5ms以内数据可靠性:99.9999%持久化保障。
2025-04-17 15:47:45
772
原创 深入剖析 RocketMQ 中的 MappedFile 技术
MappedFile 作为 RocketMQ 的存储基石,通过精妙的内存映射设计将硬件性能发挥到极致。理解其实现细节不仅有助于消息中间件的深度优化,更为设计高性能存储系统提供了经典范式。随着新型存储硬件的出现,内存映射技术仍将持续演进,继续在分布式系统中扮演关键角色。
2025-04-14 15:12:34
757
原创 RocketMQ 中 DefaultMessageStore 的 AllocateMappedFileService 属性详解
是一个后台服务,其主要职责是预先分配物理文件,也就是MappedFile实例。在 RocketMQ 中,消息会被存储在一系列的物理文件中,为了避免在消息写入时临时创建文件带来的性能开销,会提前将这些文件分配好,并进行初始化,以确保消息能够快速、高效地写入。方法的主要作用是把文件分配请求添加到请求队列中,并且等待文件分配完成,最终返回分配好的MappedFile实例。该方法通过线程同步机制,确保调用者在请求文件分配后,能够等待分配操作完成并获取到可用的文件。方法的主要功能是根据传入的文件分配请求。
2025-04-13 20:48:10
517
原创 RocketMQ 中的 MessageStore 组件:消息存储的核心枢纽
MessageStore 是 RocketMQ 中负责消息存储的核心组件,它承担着将生产者发送的消息持久化到磁盘,并在消费者需要时能够快速、准确地将消息提供给消费者的重要职责。其设计目标是在高并发场景下实现高效的消息存储和读取,同时保证数据的可靠性和一致性。MessageStore 作为 RocketMQ 中消息存储的核心组件,通过高效的消息持久化、索引管理和数据恢复机制,为分布式系统提供了可靠的消息存储和检索服务。它在异步通信、流量削峰和数据同步等方面具有重要的应用价值。
2025-04-13 20:00:42
942
1
原创 深入解析 RocketMQ 中的 BrokerOuterAPI 组件
BrokerOuterAPI 并非一个孤立的模块,而是一组封装了 Broker 对外提供服务接口的集合。它涵盖了与客户端(Producer、Consumer)、其他 Broker 以及 NameServer 等进行通信和交互的关键逻辑。通过这些接口,Broker 能够接收并处理各种请求,实现消息的发送、消费、存储管理以及集群状态同步等核心功能。
2025-04-05 22:57:00
956
原创 深入探究 RocketMQ 中的 Broker2Client 组件
Broker2Client 并非一个独立的物理组件,而是一系列功能和逻辑的集合,它涵盖了从 Broker 端到 Client 端通信的各个方面,主要讲一些消息(生产者事务,通知消费者Ids的变化,消费者复位偏移量 查询消费者状态)进行推送到Client上。Broker2Client 组件的存在,使得 RocketMQ 的 Broker 与 Client 之间的交互变得有序、高效。在大规模分布式系统中,众多的客户端需要与 Broker 进行频繁的通信。
2025-04-05 13:51:09
1010
原创 RocketMQ 中的 ProducerManager 组件剖析
在分布式系统的消息传递领域,RocketMQ 以其高性能、高可用性和强大的扩展性脱颖而出。ProducerManager 作为 RocketMQ 中的一个关键组件,在消息生产环节发挥着至关重要的作用。它负责管理消息生产者(Producer)的生命周期、配置和操作,为系统的稳定运行和高效消息传递提供了坚实的基础。
2025-04-04 19:20:54
239
原创 RocketMQ 核心组件:consumerIdsChangeListener、consumerManager 和 consumerFilterManager 深度解析
是一个监听器接口,其主要功能是监听消费组内消费者 ID 的变化。在 RocketMQ 的分布式环境中,消费者的加入和退出是动态的过程。例如,当有新的消费者实例启动并加入某个消费组,或者已有消费者实例因为故障、维护等原因退出消费组时,能够及时感知到这些变化,并触发相应的处理逻辑。是 RocketMQ 中负责管理消费组和消费者信息的核心组件。它维护着一个消费组的元数据信息,包括每个消费组下的消费者 ID 列表、消费者的状态、消费进度等。通过,可以方便地对消费组和消费者进行增删改查操作,确保消费组的管理有序进行。
2025-03-31 22:41:38
538
原创 深入解析 RocketMQ 中的 PullMessageProcessor、PullRequestHoldService 和 NotifyMessageArrivingListener
在 RocketMQ 的消息消费机制中,PullMessageProcessor、PullRequestHoldService 和 NotifyMessageArrivingListener 这三个类扮演着关键角色,它们协同工作,确保消费者能够高效、准确地拉取并处理消息。本文将深入剖析这三个类的功能和交互方式。
2025-03-27 16:52:31
933
原创 RocketMQ 中的 SlaveSynchronize 技术剖析
RocketMQ 采用主从架构来提高系统的可用性和可靠性。主节点(Master)负责处理消息的写入和读取请求,而从节点(Slave)则作为主节点的备份,实时同步主节点的数据。当主节点出现故障时,从节点可以接管部分或全部的服务,保证系统的正常运行。在主从架构中,数据同步是一个核心问题。就是 RocketMQ 中负责从主节点同步元数据的组件,它确保从节点能够及时获取主节点的最新配置信息,如主题配置、订阅组配置等。的主要功能是从主节点同步元数据。
2025-03-26 13:37:58
390
原创 深入剖析 RocketMQ Broker 中的 RebalanceLockManager 组件
RebalanceLockManager 作为 RocketMQ Broker 中的重要组件,在负载均衡过程中起着关键作用。它通过对消息队列的锁管理,保证了消费的一致性、支持动态负载均衡并防止死锁的发生。在实际应用中,RebalanceLockManager 能够有效提高系统的稳定性和可靠性,确保消息的准确消费。深入理解 RebalanceLockManager 的工作原理和作用,有助于开发者更好地使用 RocketMQ 构建高效、稳定的分布式消息系统。
2025-03-25 11:21:45
712
原创 RocketMQ 中 TopicManager 的属性与方法深度剖析
是 RocketMQ 中用于管理主题相关信息的核心类,它维护着系统中所有主题的配置信息,包括主题的名称、权限、队列数量等。通过,可以实现主题的创建、删除、查询等操作,为消息的生产和消费提供基础支持。在 RocketMQ 中扮演着至关重要的角色,通过其丰富的属性和方法,实现了对主题的高效管理。开发者在使用 RocketMQ 时,深入理解的工作原理和使用方法,能够更好地利用 RocketMQ 的功能,构建出稳定、高效的消息系统。无论是主题的创建、查询还是删除,都提供了相应的接口,为开发者提供了便利。
2025-03-24 15:01:39
399
原创 深入剖析 RocketMQ 的 ConsumerOffsetManager
是 RocketMQ Broker 端的一个重要组件,主要负责管理消费者的消费偏移量(offset)。消费偏移量是指消费者在消息队列中已经消费到的位置,通过管理这个偏移量,可以确保消费者在重启或故障恢复后能够从正确的位置继续消费消息,避免消息的重复消费或遗漏。是 RocketMQ 中一个非常重要的组件,它通过管理消费者的消费偏移量,确保了消息的准确消费和系统的可靠性。了解的主要属性和方法,有助于开发者更好地理解 RocketMQ 的工作原理,优化消息消费的性能,以及处理各种异常情况。在实际应用中,合理配置。
2025-03-21 16:28:52
926
原创 深入探究 RocketMQ 中 NettyRemotingServer 的核心 Handler
主要负责处理客户端与服务器之间的握手过程。这个HandshakeHandler主要是进行SSL的链接创建。HandshakeHandler初始化的方法,在org.apache.rocketmq.remoting.netty.NettyRemotingServer#prepareSharableHandlers的方法中,代码如下://创建握手用的handler//netty的解码器//netty 连接管理的handler//netty 服务器消息处理的组件。
2025-03-12 13:44:08
1036
原创 探秘 Netty 通信中的 SslHandler 类:保障网络通信安全的基石
SslHandler是 Netty 中用于处理 SSL/TLS 协议的处理器,它是的一种实现。在 Netty 的中,SslHandler通常处于最前端,负责对进出Channel的数据进行加密和解密操作。通过使用SslHandler,可以确保在网络上传输的数据以加密形式存在,从而保护数据的机密性和完整性。SslHandler类是 Netty 中实现 SSL/TLS 加密通信的关键组件,它为开发者提供了便捷的方式来保障网络通信的安全。通过正确配置和使用SslHandler,可以轻松构建安全可靠的网络应用。
2025-03-09 22:38:06
1066
原创 RocketMQ 中的 NettyRemotingAbstract 类
NettyRemotingAbstract 类主要负责封装与 Netty 相关的网络通信操作,将复杂的网络编程细节抽象化,使得 RocketMQ 的 Remoting 模块能够专注于消息协议处理和业务逻辑实现。它管理着 Netty 的 Channel、EventLoopGroup 等核心组件,提供了统一的消息发送、接收和处理接口,同时处理网络连接的建立、断开以及异常情况。
2025-03-05 15:36:13
866
原创 Netty 关键通信组件深度解析
Netty 中的 RemotingServer 和 BrokerHousekeepingService 作为重要的网络通信组件,各自承担着关键的职责,共同为分布式系统的网络通信提供了强大的支持。通过深入理解它们的工作原理和协同机制,开发者能够更好地利用 Netty 框架构建高性能、高可靠的分布式系统。随着分布式技术的不断发展,网络通信面临着越来越多的挑战,如更高的并发量、更复杂的网络拓扑结构等。
2025-03-02 17:39:40
928
原创 RocketMq中RouteInfoManger组件的源码分析
是 RocketMQ 中NameServer的核心组件之一,主要负责管理和维护整个 RocketMQ 集群的路由元数据信息。里面包含一些非常核心的功能:存储和管理 Broker 信息(broker的注册,broker心跳的维护);维护 Topic 的路由信息(topic的创建和更新,topic路由信息的查询);管理队列信息,管理集群信息等。
2025-02-16 17:37:11
269
原创 RocketMq之Broker注册流程详解
前面我也是写过一些关于broker注册到NameServer里的代码分析,但是总感觉写的比较简单,今天这篇的话,算是重新梳理一篇broker注册到NameServer中的代码,感兴趣的可以看下我前面写的几篇博客:1.NameServer的主要数据结构:RocketMQ中的NameServer主要数据结构-优快云博客2.Broker发送注册请求的逻辑:Broker注册到NameServer_ailed to register current broker to name server. t-优快云博客3.
2025-02-09 18:17:17
461
原创 RocketMQ中的NameServer主要数据结构
NameServer是RocketMQ中的一个比较重要的组件,我们这篇博客针对NameSever中包含的组件进行分析,分析一下NameServer中包含的组件以及组件的作用。以前我有一篇博客中,在这篇博客中就简单看了下NameSever中会有两个组件:NamesrvConfig和NettyServerConfig。在这里就不在进行介绍。
2025-02-02 23:14:06
498
原创 RocketMQ中的一些细节
此文章是在儒猿课程中的学习笔记,感兴趣的想看原来的课程可以去咨询儒猿课堂《从0开始带你成为RocketMQ高手》,我本人觉得这个作者还是不错,都是从场景来进行分析,感觉还是挺适合我这种小白的。这块主要都是我自己的学习笔记。想看原版的,还是去儒猿课堂。
2025-01-19 22:29:52
727
原创 Broker收到消息之后如何存储
此文章是在儒猿课程中的学习笔记,感兴趣的想看原来的课程可以去咨询儒猿课堂《从0开始带你成为RocketMQ高手》,我本人觉得这个作者还是不错,都是从场景来进行分析,感觉还是挺适合我这种小白的。这块主要都是我自己的学习笔记。想看原版的,还是去儒猿课堂。
2025-01-15 22:58:29
435
原创 RokcetMQ中Producer的秘密
此文章是在儒猿课程中的学习笔记,感兴趣的想看原来的课程可以去咨询儒猿课堂《从0开始带你成为RocketMQ高手》,我本人觉得这个作者还是不错,都是从场景来进行分析,感觉还是挺适合我这种小白的。这块主要都是我自己的学习笔记。想看原版的,还是去儒猿课堂。
2025-01-13 13:42:46
621
原创 Broker如何进行定时心跳发送和故障感知
此文章是在儒猿课程中的学习笔记,感兴趣的想看原来的课程可以去咨询儒猿课堂《从0开始带你成为RocketMQ高手》,我本人觉得这个作者还是不错,都是从场景来进行分析,感觉还是挺适合我这种小白的。这块主要都是我自己的学习笔记。想看原版的,还是去儒猿课堂。这篇文章紧挨着上一篇文章。
2025-01-12 20:02:36
907
原创 NameServer接收Broker的注册请求处理
此文章是在儒猿课程中的学习笔记,感兴趣的想看原来的课程可以去咨询儒猿课堂《从0开始带你成为RocketMQ高手》,我本人觉得这个作者还是不错,都是从场景来进行分析,感觉还是挺适合我这种小白的。这块主要都是我自己的学习笔记。想看原版的,还是去儒猿课堂。这篇文章紧挨着上一篇文章Broker注册到NameServer-优快云博客NameSever进行初始化的时候就会进行初始化Netty服务器,并且进行注册请求处理器,代码位置:org.apache.rocketmq.namesrv.NamesrvControll
2025-01-08 19:51:14
338
原创 Broker注册到NameServer
此文章是在儒猿课程中的学习笔记,感兴趣的想看原来的课程可以去咨询儒猿课堂《从0开始带你成为RocketMQ高手》,我本人觉得这个作者还是不错,都是从场景来进行分析,感觉还是挺适合我这种小白的。这块主要都是我自己的学习笔记。想看原版的,还是去儒猿课堂。这篇文章紧挨着上一篇文章。
2025-01-08 10:16:24
665
原创 nacos学习笔记(一)
何为nacos,nacos是一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。可以说集注册中心,配置中心,服务管理于一起的平台。注册中心:相当于我们可以把服务注册到注册中心上,我们以后可以通过服务名就可以进行调用了,而不用使用远程服务地址进行调用了;配置中心:就是我们在代码开发的时候,都有一些共同的配置文件,这些配置文件都放到配置中心进行统一管理;服务管理平台:就是提供一些简单的页面可以让我们来进行管理这些服务和配置信息。nacos的一些关键的特性:1.服务发现和服务健康监测。
2025-01-07 18:28:46
343
原创 rocketMq源码分析之Broker启动
此文章是在儒猿课程中的学习笔记,感兴趣的想看原来的课程可以去咨询儒猿课堂《从0开始带你成为RocketMQ高手》,我本人觉得这个作者还是不错,都是从场景来进行分析,感觉还是挺适合我这种小白的。这块主要都是我自己的学习笔记。想看原版的,还是去儒猿课堂。这篇文章紧挨着上一篇文章。
2025-01-07 11:10:29
849
原创 rocketMq源码分析之搭建本地环境
此文章是在儒猿课程中的学习笔记,感兴趣的想看原来的课程可以去咨询儒猿课堂《从0开始带你成为RocketMQ高手》,我本人觉得这个作者还是不错,都是从场景来进行分析,感觉还是挺适合我这种小白的。这块主要都是我自己的学习笔记。想看原版的,还是去儒猿课堂。
2025-01-06 11:15:33
192
原创 RocketMQ场景使用
会出现消息丢失的情况,可能出现的原因:在发送的过程中,出现了网络抖动,导致了消息没有发送的MQ的集群上;答案还是有可能会丢失的,假如我们的消费者拿到了消息,此时还没有进行消费,此时系统会有自动提交offset的能力,自动提交了offset,同时咱们的消息者宕机了,那么再次重启之后,这条消息就会出现丢失的情况。答案也是可能的,举个例子,我们发送消息到MQ集群上,此时消息还是在os cache中,还是没有写入到磁盘,此时Broker机器发生了宕机,那么消息就会出现丢失的情况。
2025-01-04 23:50:03
703
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人