Netty
文章平均质量分 84
Netty
李有乾
劝君须惜少年时
展开
-
Netty服务端源码阅读笔记(十)IdleStateHandler
IdleStateHandler原创 2021-05-09 23:10:46 · 580 阅读 · 2 评论 -
RocketMQ源码阅读(二)RemotingCommand、NettyEncoder和NettyDecoder
RemotingCommand消息传输过程中的对数据内容的封装类,结构如下分四部分1、消息长度:消息的总长度,int类型,四个字节存储;2、序列化类型&&头部长度:int类型,第一个字节表示序列化类型,后面三个字节表示消息头长度;3、消息头数据:经过序列化后的消息头数据;4、消息主体数据:消息主体的二进制字节数据内容序列化类为SerializeType,类型有两,json消息和RocketMQ自定义消息public enum SerializeType { .原创 2021-05-07 22:38:45 · 903 阅读 · 0 评论 -
RocketMQ源码阅读(一)remoting模块核心类
前段时间学习了netty,读了些源码,今天开始看经历了大风大浪的RocketMQ是如何使用netty进行通信。remoting项目目录(截了两个重要的包):提前看个类RemotingCommand消息传输过程中的对数据内容的封装类,结构如下分四部分1、消息长度:消息的总长度,int类型,四个字节存储;2、序列化类型&&头部长度:int类型,第一个字节表示序列化类型,后面三个字节表示消息头长度;3、消息头数据:经过序列化后的消息头数据;4、消息主体数据:.原创 2021-05-02 22:01:11 · 496 阅读 · 0 评论 -
Netty客户端源码阅读笔记(一)Bootstrap
netty客户端Bootstrap的启动main源码原创 2021-04-25 22:02:00 · 257 阅读 · 0 评论 -
Netty服务端源码阅读笔记(六)服务端拆包粘包--LengthFieldBasedFrameDecoder
接上篇 Netty服务端源码阅读笔记(六)服务端拆包粘包和解决方法代码示例代码不贴了,看上篇文章吧客户端handler依次为LengthFieldPrepender用来为消息增加元数据头的handler和自定义的handler服务端handler依次为LengthFieldBasedFrameDecoder、StringDecoder、和自定义的handler1、MessageToMessageEncoder<T>LengthFieldPrepender继承Message..原创 2021-04-25 21:09:25 · 333 阅读 · 0 评论 -
Netty服务端源码阅读笔记(七)零拷贝与ByteBuf
HeapByteBuffer与DirectByteBuffer的区别原创 2021-04-20 23:27:58 · 375 阅读 · 0 评论 -
Netty服务端源码阅读笔记(六)服务端拆包粘包和解决方法代码示例
接上篇AdaptiveRecvByteBufAllocator对象原创 2021-04-12 00:27:38 · 210 阅读 · 0 评论 -
Netty服务端源码阅读笔记(五)AdaptiveRecvByteBufAllocator
在读服务端NioServerSocketChannel和客户端NioSocketChannel的内部unsafe类读写数据源码时,发现有RecvByteBufAllocator对象来辅助操作,另写一篇来分析分析其实客户端读数据才是难点重点,但是我们先分析服务端channel读取数据方法,比较简单好了解服务端NioServerSocketChannel.NioMessageUnsafe代码位置:io.netty.channel.nio.AbstractNioMessageChannel.NioMe原创 2021-04-09 20:21:02 · 1100 阅读 · 0 评论 -
Netty服务端源码阅读笔记(四)ServerBootstrap(4)
接上章节Netty服务端源码阅读笔记(四)ServerBootstrap(1)Netty服务端源码阅读笔记(四)ServerBootstrap(2)Netty服务端源码阅读笔记(四)ServerBootstrap(3)serverBootStrap.bind() -->doBind0绑定服务端channel的端口号 private static void doBind0( final ChannelFuture regFuture, fi...原创 2021-03-28 11:31:14 · 119 阅读 · 0 评论 -
Netty服务端源码阅读笔记(四)ServerBootstrap(3)
接上章节Netty服务端源码阅读笔记(四)ServerBootstrap(1)Netty服务端源码阅读笔记(四)ServerBootstrap(2)serverBootStrap.bind() -->initAndRegister() -->NioEventLoop.register(channel)NioEventLoop注册NioServerSocketChannel public ChannelFuture register(Channel chann...原创 2021-03-28 11:29:12 · 150 阅读 · 0 评论 -
Netty服务端源码阅读笔记(四)ServerBootstrap(2)
serverBootStrap.bind() -->initAndRegister() -->init(channel);serverBootStrap初始化NioServerSocketChannelio.netty.bootstrap.ServerBootstrap#init void init(Channel channel) throws Exception { // 处理bootstrap中的option设置属性 final Map..原创 2021-03-28 11:28:25 · 132 阅读 · 0 评论 -
Netty服务端源码阅读笔记(四)ServerBootstrap(1)
ServerBootstrap用于关联服务端的各组件回顾服务端代码和netty的reactor模型,可以看到出,parentGroup用来处理连接请求,childGroup用于处理接下来的操作原创 2021-03-28 11:26:33 · 304 阅读 · 0 评论 -
Netty服务端源码阅读笔记(三)new NioEventLoop(2)
接上章节Netty服务端源码阅读笔记(三)new NioEventLoop(1)首次启动NioEventLoop中的线程,会走到run方法,run方法里边是些类似原生nio的代码,selector.select()和处理连接和读事件的代码,大致分为三部分1、任务队列没有任务时,进行select(timeout)监测就绪channel2、处理就绪IO3、处理任务队列中的任务io.netty.channel.nio.NioEventLoop#run 先贴完整run代码,下...原创 2021-03-28 11:25:01 · 686 阅读 · 1 评论 -
Netty服务端源码阅读笔记(三)new NioEventLoop(1)
继承关系虽然也实现了EventLoopGroup接口,但是不是一个组,是单个的Executor上节看到NioEventLoopGroup的newChild方法实例化EventLoop数组 protected EventLoop newChild(Executor executor, Object... args) throws Exception { return new NioEventLoop(this, executor, (SelectorProvider) a原创 2021-03-28 11:21:17 · 218 阅读 · 0 评论 -
Netty服务端源码阅读笔记(二)new NioEventLoopGroup
需要记住它的继承和组合关系原创 2021-03-28 11:14:22 · 647 阅读 · 0 评论 -
Netty服务端源码阅读笔记(一)服务端代码和概念介绍
先上服务端启动代码 EventLoopGroup parentGroup = new NioEventLoopGroup(); EventLoopGroup childGroup = new NioEventLoopGroup(); try { ServerBootstrap bootstrap = new ServerBootstrap(); bootstrap.group(parentGroup, chil原创 2021-03-28 11:13:51 · 161 阅读 · 0 评论