自定义博客皮肤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)
  • 收藏
  • 关注

原创 RocketMQ存储之DefaultMessageStore(二)

一、概述上篇分析了DefaultMessageStore的大体功能和DefaultMessageStore生命周期的关键方法。本篇我们分析一下DefaultMessageStore提供的功能的具体实现。这里再把上篇的DefaultMessageStore功能清单贴出来:我们本篇主要分析数据的写入和读取过程。...

2021-08-27 16:33:08 275

原创 RocketMQ存储之DefaultMessageStore(一)

一、功能概述DefaultMessageStore是RocketMQ底层存储对外层提供服务的窗口,它通过组织CommitLog、ConsumeQueue、IndexFile来完成RocketMQ存储的功能。本篇分析DefaultMessageStore源码的实现。二、源码分析首先,我们看一下DefaultMessage提供的功能窗口,DefaultMessageStore实现了MessageStore接口,我们看看MessageStore提供了哪些方法:...

2021-08-26 17:03:47 569 2

原创 RocketMQ存储之IndexFile

一、功能概述IndexFile提供了可以通过key或时间区间来查询消息的功能。IndexFile的功能很简单,但是文件的结构要比CommitLog和ConsumeQueue要复杂些。本篇我们分析IndexFile的实现细节。二、源码分析

2021-08-09 15:26:14 492

原创 RocketMQ存储之ConsumeQueue

一、功能概述ConsumeQueue作为RocketMQ存储实现的重要部分,它提供了每个Topic下每个Queue中消息存储的索引功能。也就是说,每个Topic下的每个Queue都会有一个ConsumeQueue保存该Queue下消息存储在CommitLog的位置。ConsumeQueue和CommitLog一样,都是基于MappedFileQueue实现的。所以ConsumeQueue和CommitLog的实现有很多相似的地方。本篇我们只会分析ConsumeQueue的一些比较核心的功能实现,其他内容

2021-08-03 14:43:16 804

原创 RocketMQ存储之CommitLog

一、CommitLog功能概述

2021-07-30 11:12:04 1764

原创 RocketMQ存储之MappedFileQueue

文章目录一、概述二、实现细节一、概述上一篇我们分析了MappedFile的实现细节,MappedFile实现了文件内存映射的功能。本篇我们分析MappedFileQueue的实现。MappedFileQueue的作用是:将多个MappedFile按顺序组织起来,并且提供MappedFile的“增删查”操作等作用。由于MappedFileQueue的实现逻辑并不复杂,本篇只分析一部分源码实现。二、实现细节首先来看一下MappedFileQueue的创建和加载: public MappedFi

2021-06-07 21:19:48 421 1

原创 RocketMQ存储之MappedFile

一、概述RocketMQ的存储依赖于三类文件:CommitLog、ConsumeQueue、IndexFile,每类文件的具体作用可以参考官方文档,这里我们只做源码分析。三类存储文件都依赖MappedFile 来实现文件底层的数据读写。从类名可以看出:MappedFile 是通过内存映射文件来实现文件操作的,本篇我们分析MappedFile 的实现细节。二、实现细节我们先来看一下MappedFile 的变量: /** * 操作系统文件页大小 */ public st

2021-05-20 23:11:43 741

原创 RocketMQ网络通信

目录简介服务端实现简介RocketMQ的remoting模块是RocketMQ客户端、消费端、NameServer、Broker之间通信的基础。是通过netty框架实现的。核心类的继承结构如下:RemotingService接口定义了start()、shutdown()、registerRPCHook()方法。registerRPCHook()方法可以为服务注册钩子方法。RemotingServer提供了服务端的基本功能:注册请求处理器、消息发送(同步、异步、Oneway)。RemotingCl

2021-04-27 08:05:02 457

原创 一、netty源码分析之概述

作为Java程序员,netty大家应该都或多或少的接触过。netty作为一个异步事件驱动的网络框架被广泛使用。我们从netty的官网的一张图上可以看到netty有哪些特点:netty的核心能力有三点:可扩展的事件模型通用的通信API有零拷贝能力的字节缓冲区在这三种核心能力的基础上,扩展出了对多种协议和传输服务的支持。当然netty的优点不仅仅如此,后面我们将会通过源码的方式来分析...

2019-09-05 15:23:49 175

原创 四、netty源码分析之ServerBootstrap

一、功能概述前两篇我们分别介绍了EventLoopGroup和EventLoop在netty中的作用。但是仅仅知道这些,可能对netty如何完成一整个网络事件监控到任务分发处理还是有些模糊。本篇我们要分析一下netty的启动流程。在我们使用netty编程的时候,我们的使用ServerBootstrap和Bootstrap来实现服务端和客户端的启动。我们先来看一下这两个类的相关类图:netty...

2019-09-05 15:22:55 276

原创 三、netty源码分析之EventLoop

一、EventLoop功能概述上篇我们分析了EventLoopGroup的核心能力,EventLoopGroup具有执行任务、注册Channel、执行器调度等能力。今天我们来看一下EventLoop。我们先来看看EventLoop的类图关系:我们可以看到,EventLoop接口继承了EventLoopGroup接口。为什么EventLoop要继承EventLoopGroup呢?从上一篇的分析...

2019-09-03 16:41:28 617 1

原创 二、netty源码分析之EventLoopGroup

#一、EventLoopGroup功能概述EventLoopGroup是netty中一个比较核心的组件,想要知道EventLoopGroup的功能,我们先看一下EventLoopGroup的类图关系:Exector是java的JUC包中定义的一个接口,我们可以看一下具体定义:public interface Executor { /** * Executes the g...

2019-08-30 12:00:50 439

原创 mybatis查询分析

上篇我们分析了mybatis在启动过程中是如何加载配置文件的,本篇我们继续来分析一下mybatis在创建完Configuration配置后,是如何进行查询的。1、通过SqlSessionFactory创建SqlSession我们上篇分析完了mybatis解析配置文件创建Configuration,根据Configuration创建SqlSessionFactory的过程。现在,我们看一下m...

2018-09-18 17:50:19 136

原创 mybatis启动分析

本专辑将介绍mybatis的原理和源码分析。1、概述在不使用spring的情况下,我们从官网上可以看到mybatis的使用方法:String resource = "org/mybatis/example/mybatis-config.xml";InputStream inputStream = Resources.getResourceAsStream(resource);...

2018-09-14 09:13:12 145

空空如也

空空如也

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

TA关注的人

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