自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(39)
  • 收藏
  • 关注

原创 RocketMQ源码 Consumer 消费者源码架构分析

消息消费者 MQConsumer 即消息的消费方,主要负责消息消息生产者 MQ Producer 投递的消息。它的源码架构如下图,以常用的消费者实现类 DefaultMQPushConsumer 视角分析消费者的源码架构,介绍消费者核心数据结构。

2024-01-10 18:30:22 1042 1

原创 RocketMQ源码 发送 延迟消息 源码分析

rocketMQ 支持的延迟消息,简单理解就是对于生产者发送的消息,支持设置固定时间的延迟级别,在到达指定的延迟时间时,才会投递到消费者队列,消费者才能消费到消息。

2024-01-09 08:00:00 1069

原创 RocketMQ源码 事务消息 TransactionalMessage 源码分析

使用普通消息和订单事务无法保证一致的原因,本质上是由于普通消息无法像单机数据库事务一样,具备提交、回滚和统一协调的能力。 而基于 RocketMQ 的分布式事务消息功能,在普通消息基础上,支持二阶段的提交能力。将二阶段提交和本地事务绑定,实现全局提交结果的一致性。

2024-01-08 08:00:00 1061

原创 RocketMQ源码 发送顺序消息源码分析

rocketmq 发送顺序消息和普通消息的主流程区别大部分一致的,区别在于:普通消息发送时,从所有broker的队列集合中 轮询选择一个队列,而顺序队列可以提供用户自定义消息队列选择器,从NameServer 分配的顺序 broker集合中选择一个队列。

2024-01-07 08:00:00 1096

原创 RocketMQ源码 发送消息源码分析

DefaultMQProducer 是默认生产者组件,是生产者客户端中,绝大部分关于生产者和broker、nameSrv进行网络通信的功能入口。其中,包含发送各种形式(同步、异步、事务、顺序)的消息,针对发送消息部分的实现,主要是封装好消息协议后,从NameSrv获取当前Topic路由信息,轮询悬着一个队列,通过RemotingClient 客户端,将请求发送给messageQueue所在的broker的主节点。broker主节点收到消息后,SendMessageProcessor 发送消息处理组件处理

2024-01-06 08:00:00 475

原创 RocketMQ源码 Producer生产者源码架构分析

消息生产者 MQ producer 即消息的生产发送方,主要负责将生产方产生的消息投递到 Broker 节点。它主要的源码实现架构如下图,继承了MQAdmin 管理组件接口,内部又依赖了DefaultMQProducerImpl 内部实现类实现所有内部逻辑,DefaultMQProducerImpl 实现了 创建 topic、获取消息队列偏移量、查看消息、发送消息、故障容错、事务消息、顺序消息等能力,最底层通过 NettyRemotingClient netty网络通信客户端组件建立网络连接,发起和接受网络

2024-01-05 10:56:15 469

原创 RocketMQ源码 创建Topic流程源码分析

MQAdminImpl MQ管理组件提供了大量对mq进行管理的工具,其中一个就是创建Topic。它内部实现是通过 mqClient工具从 NameServer拉取当前 Topic对应的路由元数据信息,解析遍历和当前topic有关的 broker高可用分组集合,找到分组中的 master主节点,然后依次对 broker主节点发送创建topic请求。broker 高可用分组的主节点收到请求后,将 topic元数据存储在 TopicConfigManager元数据管理组件中,然后上报当前 broker节点 Top

2024-01-03 18:30:00 1460

原创 RocketMQ源码 Broker-BrokerFastFailure 快速失败请求组件源码分析

BrokerFastFailure 快速失败处理组件,主要负责,在系统激活broker快速失败能力时,以后台定时调度任务方式进行过期任务清理。主要对以下几类任务进行处理:

2023-12-14 15:07:14 408

原创 RocketMQ源码 Broker-BrokerStatsManager Broker统计管理组件源码分析

BrokerStatsManager 主要负责对broker端的系统指标进行统计,如QUEUE_GET_NUMS队列获取数量、QUEUE_GET_SIZE队列获取大小指标的 分钟、小时、天级别的统计数据。它针对的所有指标都是使用后台定时调度线程,对统计条目中的数据进行后台统计计算,存储在统计条目中的对应集合里,以便使用。

2023-12-14 14:33:56 473

原创 RocketMQ源码 Broker-FilterServerManager 过滤服务器管理组件源码分析

FilterServerManager负责维护过滤服务器长连接 与 过滤服务器信息映射关系,并且内部有定时调度线程,不断检查过滤服务器实际数量和配置数量是否一致,如果不一致,就根据配置构建命令行命令,执行命令启动 FilterServer 过滤服务器进程。

2023-12-13 18:01:56 423

原创 RocketMQ源码 Broker-BrokerOuterAPI Broker向NameServer发送请求组件源码分析

BrokerOuterAPI Broker向NameServer命名集群发送请求组件,主要负责使用remotingClient 网络通信客户端向NameServer集群发送请求。主要操作包括:注册broker信息到NameServer集群、取消注册Broker、询问NameServer集群是否需要更新Broker的注册信息、获取所有topic配置、获取所有消费者配置、获取所有延迟消息、获取所有消费者订阅配置。

2023-12-13 17:27:05 418

原创 RocketMQ源码 Broker-Broker2Client Broker向客户端发送请求组件源码分析

Broker2Client 组件比较独立,负责处理的broker 向客户端发送请求的组件,分装了通用的请求逻辑,包括:检查生产者事务状态请求、调用客户端同步请求、通知客户端消费组发生变化请求oneway请求、重置消费组下所有消费者位点oneway请求、获取消费组下所有消费者消费状态sync请求。

2023-12-13 16:02:46 368

原创 RocketMQ源码 Broker-ClientHousekeepingService 客户端网络连接监听服务源码分析

ClientHousekeepingService 继承了ChannelEventListener 监听器接口,负责对netty长连接产生的网络连接事件进行监听,比如:网络连接、网络关闭、网络异常、网络空闲事件,然后调度生产者管理组件、消费组管理组件、过滤服务器组件维护,断开它们内存中维护的网络长连接。

2023-12-13 14:20:59 422

原创 程序员养生指南

作为一名程序猿,多多少少都出现了健康问题,我根据目前掌握的健康和养生知识为程序员朋友们提供一些建议:合理安排工作和休息时间:长时间的熬夜和连续工作不仅会导致身体机能下降,还可能损害心理健康。定期休息和合理分配工作量对于保持健康状态至关重要。

2023-12-13 12:36:33 420

原创 RocketMQ源码 Broker-ProducerManager 生产者管理组件源码分析

ProducerManager生产者管理组件主要负责管理生产者客户端与 broker 的建立netty长连接,以及维护客户端长连接的上下线、定时扫描失活连接。

2023-12-13 11:44:49 405

原创 RocketMQ源码 Broker-SubscriptionGroupManager 订阅组管理组件源码分析

SubscriptionGroupManager 继承了ConfigManager配置管理组件,拥有将内存数据持久化到磁盘文件subscriptionGroup.json的能力。它主要负责维护所有消费组在内存中的订阅数据。

2023-12-13 11:12:40 602

原创 RocketMQ源码 Broker-ConsumerFilterManager 消费者数据过滤管理组件源码分析

ConsumerFilterManager 继承了ConfigManager配置管理组件,拥有将内存数据持久化到磁盘文件consumerFilter.json的能力。它主要负责,对在消费者拉取消息时,进行消息数据过滤,且只针对使用表达式过滤的消费者有效。

2023-12-12 22:33:28 566

原创 RocketMQ源码 Broker-ConsumerManager 消费者管理组件源码分析

ConsumerManager消费者管理组件,主要负责对Consumer消费者连接进行管理,内存中维护了所有消费者相关的消费组-topic订阅关系,并且在网络连接发生变化(注册、下线、关闭、消费者弹性伸缩)时,会同步维护内存信息,且通知到所有组内消费者。

2023-12-12 21:59:14 425

原创 RocketMQ源码 Broker-ConsumerIdsChangeListener 消费者ids变更监听器组件源码分析

ConsumerIdsChangeListener是一个负责监听消费组数据变更的监听器,主要监听consumerManager消费则管理器,发出的变更事件。

2023-12-12 19:47:11 366

原创 RocketMQ源码 Broker-PullRequestHoldService 长轮询消息拉取组件源码分析

PullRequestHoldService 继承了ServiceThread类,它本身是一个线程,以后台方式无线循环运行,支持长轮询(默认5秒)和短轮询(默认1秒)两种方式(CountDownlatch 方式控制)控制线程执行间隔。5秒钟后,线程内部会检查被挂起的请求(消费者建立连接后,会立即执行一次消息拉取服务,如果能拉到消息直接返回相应,如果拉不到,就会被挂起到 PullMessHoldService 服务),通知消息到达,调用 PullMessageProcessor 消息拉取处理组件,再进行一次拉

2023-12-12 19:00:48 434

原创 RocketMQ源码 Broker-SlaveSynchronize 主从同步组件源码分析

SlaveSynchronize主从同步组件,主要是主从架构模式下,从节点使用,负责从主broker节点拉取元数据信息(topic元数据、消费偏移量数据、延迟消息偏移量数据、订阅消费组数据),和本地数据进行比较,如果不一样就更新本地元数据,且持久化到磁盘文件。

2023-12-11 17:50:09 397 1

原创 RocketMQ源码 Broker-RebalanceLockManager 重平衡锁定组件源码分析

在queue队列数量弹性变化、consumer数量弹性变化时,需要对consumer客户端进行Rebalance重平衡,重新优化consumer和queue之间的关系,RebalanceLockManager就负责在重平衡时,进行重平衡锁定关系的管理。

2023-12-11 16:58:51 422 1

原创 RocketMQ源码 Broker-TopicConfigManager 元数据管理组件源码分析

ConsumerOffsetManager负责管理Broker端的topicConfig元数据信息,它继承了ConfigManager组件,且定时将内存中维护的topic元数据信息,注册到远程NameServer集群,并持久化到磁盘文件。

2023-12-11 15:54:11 487 1

原创 RocketMQ源码 Broker-ConsumerOffsetManager消费偏移量管理组件源码分析

ConsumerOffsetManager负责管理Broker端的消费偏移量,它继承了ConfigManager组件,且定时将内存中维护的偏移量数据,持久化到磁盘文件。源码版本:4.9.3源码架构图。

2023-12-11 11:01:13 484 1

原创 RocketMQ源码 Broker启动流程源码分析

RocketMQ在启动Broker过程会创建BorkerContoller控制器,初始化大量配置、核心组件、启动大量后台线程。从部署架构中可以看出它主要负责与Namesrv建立netty长连接,上报Routing Info路由信息,也与Producer Cluster和Consumer Cluster建立netty长连接,发送、接收消息。

2023-12-07 15:00:12 497 1

原创 RocketMQ源码 NameServer启动流程源码分析

RocketMQ在启动 Namesrv 的过程中会创建NamesrvController控制器,并初始化一些核心组件RouteInfoManager路由信息管理组件、NettyRemotingServer网络通信服务器组件、BrokerHousekeepingService网络通信监听器组件,使用了大量JUC并发知识和Netty网络通信的应用。

2023-12-06 21:49:40 910 1

原创 RocketMQ源码 Namesrv-BrokerHousekeepingService网络通信管理组件

它的处理逻辑比较少,但是也比较重要,负责监听了网络连接事件、网络关闭事件、网络异常事件,网络空闲事件,并维护对应broker的路由信息。

2023-11-28 18:53:15 334

原创 RocketMQ源码 Namesrv-FileWatchService文件变更监听服务组件

FileWatchService文件变更监听服务组件,它本身是一个实现了Runnable的线程,负责监听系统文件变更,并维护一个文件列表的文件摘要,定时监听磁盘中的文件是否和内存中的文件的文件摘要是否相同,如果不同就将新的文件摘要维护到内存中,还会调用我们注册的listner监听器,执行回调逻辑。

2023-11-28 18:36:58 403

原创 RocketMQ源码 Namesrv-RemotingServer网络通信服务器

RemotingServer 网络通信服务器组件,它负责对管理的Borker、Producer、Consumer建立netty长连接(Channel),并注册处理请求的Netty请求处理组件,且可以对Borker、Client发起同步、异步、Oneway形式的RPC请求。

2023-11-27 19:48:14 367 1

原创 RocketMQ入门与最佳实践

RocketMQ是一种消息队列中间件,其架构简单、业务功能丰富、具备极强可扩展性等特点被众多企业开发者以及云厂商广泛采用。历经十余年的大规模场景打磨,RocketMQ 已经成为业内共识的金融级可靠业务消息首选方案,被广泛应用于互联网、大数据、移动互联网、物联网等领域的业务场景。

2023-11-20 22:32:39 59 1

原创 RocketMQ源码 Namesrv-RouteInfoManager路由管理组件

RocketMQ在启动 Namesrv 的过程中会初始化 NamesrvController 核心组件,NamesrvController初始化过程中 又引用了 RouteInfoManager 路由信息管理组件,它负责对管理主题队列和Broker集群路由分布信息。源码版本:4.9.3。

2023-11-20 15:31:38 49 1

原创 RocketMQ源码 NameSrv-KVConfigManager组件 巧用读写锁维护内存KV数据结构

在KVConfigManager配置管理组件中,使用到JDK并发包中的 ReadWriteLock读写锁,实现对内存数据结构configTable的并发控制,下面就分析一下具体实现逻辑。

2023-11-15 11:02:30 105

原创 Mysql 常用函数

记录mysql常用函数,提升研发效率

2023-11-13 17:58:41 26

原创 MacOS 无法使用Wget工具

1. 执行以下命令,安装wget命令工具。如果提示缺少 brew 依赖,参照下一节安装 Homebrew 部分解决问题。4. 验证brew工具,执行 brew -v 命令。3. MacOS命令行,执行命令。2. 验证wget工具。MacOS 报错提示。

2023-11-13 10:06:26 2962

原创 RocketMQ 本地安装部署 MacOS

RocketMQ的安装部署方式有很多种,其中本地安装是比较常用的一种。启动NameServer,使用后台线程方式启动,且通过输出的日志检查启动状态。启动Broker,使用后台线程方式启动,且通过输出的日志检查启动状态。检查JDK环境,输入 java -version 命令,检查本地JDK版本是否大于等于JDK8。可以看到,broker启动成功,并且将自己注册到了本地端口为9876的NameServer。关闭broker,看到shutdown hook done即可任务已关闭。

2023-11-13 09:40:45 336

原创 RocketMQ 源码下载与目录介绍

RocketMQ 源码下载与目录介绍

2023-11-13 08:49:03 211

原创 通义灵码 代码助手使用教程

基于通义大模型的代码助手,是采用海量优秀开源代码进行训练,正确使用它,就像和大佬一起探讨编码艺术,可以极大提升我们的生产能力以及编码效率。

2023-11-06 09:49:40 6491

原创 德州扑克入门级分享

想要扩大自己的影响力,和同事、老板做好技术外的沟通,且持续建设积极向上的文化体系,提升团队间凝聚力&幸福感,掌握一下软技能也是非常关键的。

2023-11-05 17:51:35 1560

原创 通义灵码 代码助手安装教程

通义大模型智能代码助手 “通义灵码”安装教程

2023-11-01 08:02:00 5834

长轮询消息拉取组件源码

长轮询消息拉取组件源码

2023-12-12

PullRequestHoldService.class

PullRequestHoldService源码解析文件

2023-12-12

PullMessageProcessor.class

PullMessageProcessor源码解析文件

2023-12-12

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除