摘要:
JVM synchronized锁升级 实验(64位) 一. MarkWord图 32位虚拟机下: 64位虚拟机下: 由于我的机器是64位的, 因此后面的实验会参考 第二张图的内容做详解。 二、偏向锁延迟偏向 验证 HotSpot虚拟机在启动后开启偏向锁模式 默认在 4s后, 为了减少初始化时间,J 阅读全文
摘要:
RocketMQ 消费者(三) - Consumer端拉消息 (图解) 1. 拉消息服务 与负载均衡服务一样, 消费者端拉消息的入口在 客户端实例中,为 PullMessageService 。 内部有几个关键点: 其内部维护了一个 阻塞任务队列 private final LinkedBlocki 阅读全文
摘要:
#RocketMQ 消费者(二) - 负载均衡 (图解) 1. 负载均衡入口 如图, 负载均衡服务 实际上是运行在 客户端实例中, 是一个周期性执行的服务,正常情况下 每20s执行一次。 负载均衡方法 最终会 来到 每个消费者内部的 负载均衡实例对象中, 然后根据消费者本地的 订阅集合, 来进行负载 阅读全文
摘要:
RocketMQ 消息者(一) Consumer端架构 (图解) 1.配置项 Consumer 采用门面模式, 其门面类为 DefaultMQPushConsumer , 核心业务类为:DefaultMQPushConsumerImpl。 其中 DefaultMQPushConsumer 门面类中包 阅读全文
摘要:
RocketMQ消息存储(三) - MappedFileQueue 上一篇 讲解了 MappedFile 类, 其底层实际上是通过 MappedByteBuffer采用零拷贝的方式 来管理 文件的读写 。 既然 MappedFile 是管理单个文件的类, 那么就会存在用来管理 这些 MappedFi 阅读全文
摘要:
RocketMQ消息存储(四) - CommitLog 之前几篇文章都对RocketMQ消息存储的底层基本类做详解。 从本篇开始,就来到了消息存储的上层层面的存储文件对象了。 我们知道RocketMQ 主要的消息存储文件有三种: 1. commitlog文件 2. consumeQueue文件 3. 阅读全文
摘要:
RocketMQ消息存储(一) - mmap零拷贝(前置篇) 从本篇开始研究Broker 对文件的存储, 这些文件分为三类 (CommitLog , ConsumeQueue , IndexFile) 。 而在分析文件存储的源码之前, 我们要先了解一个重要的前置知识: 零拷贝IO 技术. 下面是针对 阅读全文
摘要:
RocketMQ消息存储(二) - MappedFile MappedFile 类是RocketMQ消息存储模块中最底层的类, 它是对 MappedByteBuffer(mmap) 的进一步封装,能够更方便的去操作和使用 mmap零拷贝(不理解的请移步上一篇**《RocketMQ消息存储(一) - 阅读全文