自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 分布式锁用 Redis 还是 Zookeeper?

文章目录为什么用分布式锁?基于Redis实现分布式锁另一种方式:Redisson基于zookeeper实现分布式锁Curator介绍两种方案的优缺点比较建议转载:分布式锁用 Redis 还是 Zookeeper?为什么用分布式锁?在讨论这个问题之前,我们先来看一个业务场景:系统A是一个电商系统,目前是一台机器部署,系统中有一个用户下订单的接口,但是用户下订单之前一定要去检查一下库存,确保库存足够了才会给用户下单。由于系统有一定的并发,所以会预先将商品的库存保存在redis中,用户下单的时候会更新r

2022-04-12 10:52:24 108

原创 消费者详解-消费消息(1)

文章目录消费者消费消息流程Pull消费流程1. 初始化消费者2. 拉取topic的消息队列3. 拉取消费位点4. 根据消费位点消费消息5. 保存消费进度拉取消息-pullKernelImplBroker处理拉取消息请求1、权限、参数校验并且获取初始化变量:2、获取拉取消息的topic配置3、解析订阅信息4、成消息过滤器5、获取消息(1)校验消息存储服务状态(2)校验消费队列(3)获取消息6、处理消息结果7、更新消费位点8、返回结果消费者消费消息流程RocketMQ的消费方式包含Pull和Push两种。

2022-04-09 11:01:25 1884

原创 TransientStorePool暂存池

TransientStorePool暂存池TransientStorePool类比较简单,采用双端队列Deque维护了一些列的预分配的ByteBuffer,这些ByteBuffer都是在堆外分配的直接内存,DefaultMessageStore会持有TransientStorePool对象实例,如果启动时配置了启用transientStorePoolEnable,那么在DefaultMessageStore构造函数中会调用TransientStorePool.init方法,预分配ByteBuffer并放入

2022-04-08 08:48:53 1128

原创 RocketMQ存储优化技术

RocketMQ存储优化技术RocketMQ存储层采用的几项优化技术方案在一定程度上可以减少PageCache的缺点带来的影响,主要包括内存预分配,文件预热和mlock系统调用。预先分配MappedFile在消息写入过程中(调用CommitLog的putMessage()方法),CommitLog会先从MappedFileQueue队列中获取一个 MappedFile,如果没有就新建一个。这里,MappedFile的创建过程是将构建好的一个AllocateRequest请求(具体做法是,将下一个文件

2022-04-08 08:47:32 752

原创 NameServ详解

文章目录Nameserv详解Nameserv概述Nameserv核心数据结构和APINameserv架构Nameserv启动流程RocketMQ的路由原理路由注册路由剔除Nameserv详解Nameserv概述Nameserv之于RocketMQ,即服务注册中心之于微服务。Nameserv在RocketMQ体系中是一个Topic路由注册和管理(Producer、Consumer从Nameserv获取topic路由信息),Broker注册和发现的管理者。Nameserv在RocketMQ体系中主要用于

2022-04-08 08:44:01 1563

原创 Broker主从同步详解

文章目录主从同步概述主从同步流程名词解释配置数据同步流程CommitLog数据同步流程异步复制Slave -> Master*ReadSocketService*:Master接收Slave同步数据的请求,并将这些信息保存在HAConnection中。*WriteSocketService*:Master根据HAConnection中保存的Slave同步请求,从CommitLog中查询数据,并发送给Slave。Master -> Slave同步复制参考文档主从同步概述众所周知,Broker中

2022-04-08 08:42:34 1146

原创 Broker关机恢复流程详解

文章目录Broker关机恢复机制概述abortcheckpointBroker关机恢复流程Broker关机恢复机制概述Broker关机恢复是指恢复CommitLog、Consume Queue、Index File等数据文件。Broker关机分为正常调用命令关机和异常被迫进程终止关机两种情况。恢复过程的设计目标是:使正常停止的进程实现零数据丢失,异常停止的进程实现最少量的数据丢失。与关机恢复相关的主要文件有两个:abort和checkpoint。abortabort是一个空文件,标记当前Brok

2022-04-08 08:38:07 469

原创 Broker存储机制详解

文章目录Broker详解Broker概述Broker启动和停止流程Broker存储机制为什么写文件这么快Broker存储消息流程详解(1)Broker接收客户端发送消息的请求并做预处理(2)Broker存储前消息预处理(3)消息校验和存储模块校验(4)将消息写入CommitLogBroker读写分离机制Master-Slave读写分离Direct Memory-Page Cache读写分离Broker详解Broker概述Broker是RocketMQ体系中的核心组件之一,存储是Broker的核心功能之

2022-04-08 08:37:08 1504

原创 Broker CommitLog索引机制详解

文章目录Broker CommitLog索引机制索引的数据结构索引的构建过程ConsumeQueueIndexFile索引搜素过程按照位点查消息按照时间段查消息按照key查询消息索引文件过期删除机制CommitLog文件删除过程Consume Queue、Index File文件删除过程参考文档Broker CommitLog索引机制索引的数据结构索引是为了增加查询速度而设计的一种数据解雇,在RocketMQ中以文件形式保存在Broker中。Broker中有两种索引:Comsumer Queue 和

2022-04-08 08:33:23 365

原创 消费者详解-重平衡机制

文章目录消费者的Rebalance机制RebalanceImpl核心属性DefaultMQPullConsumer Rebalance流程DefaultMQPushConsumer Rebalance流程重平衡分配策略-AllocateMessageQueueStrategyAllocateMachineRoomNearby-基于机房就近原则分配策略AllocateMessageQueueAveragely-平均散列队列算法AllocateMessageQueueAveragelyByCircle-循环平均

2022-04-08 08:23:36 1320

原创 消费者详解-消费进度保存机制

文章目录消费进度保存机制定时持久化不定时持久化消费者关闭消费进度保存机制在 消费者详解-启动流程中我们可以知道,在消费者启动是会同时启动位点管理器,RocketMQ设计了远程位点管理-RemoteBrokerOffsetStore和本地位点管理-LocalFileOffsetStore。集群消费时,消费者使用远程位点管理-RemoteBrokerOffsetStore,将消费位点提交给Broker保存;广播消费时,消费位点保存在消费者本地磁盘上-LocalFileOffsetStore。客户端消费进度

2022-04-08 08:17:53 644

原创 生产者详解-消息发送流程

生产者发送消息流程以下是生产者发送消息的概要时序图:先了解发送同步消息的详细流程和源码解析,后面在分析发送其他消息的区别:用户将发送的消息包装成Message对象,调用DefaultMQProducer的send的方法Message是MQ发送的消息的载体,其包含的属性如下:// 消息public class Message implements Serializable { private static final long serialVersionUID = 84457739770

2022-04-08 08:16:13 1165

原创 生产者详解-启动流程

文章目录生产者详解生产者概述生产者高可用客户端保证Broker端保证生产者源码解析生产者类生产者启动流程生产者详解生产者概述发送消息的一方被称作生产者RocketMQ客户端中的生产者有两个独立的实现类:org.apache.rocketmq.client.producer.DefaultMQProducer(用于生产普通消息、顺序消息、单向消息、批量消息、延迟消息)和org.apache.rocketmq.client.producer.TransactionMQProducer(用于生产事务消息)

2022-04-07 10:26:59 645

原创 消费者详解-启动流程

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mar

2022-04-07 10:02:31 839

空空如也

空空如也

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

TA关注的人

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