随笔分类 - Netty
摘要:Netty - 内存大小预测器 RecvByteBufAllocator 源码分析 (包含客户端Channel读消息处理) 前言 我们知道 Netty 中 对消息的处理 都需要申请内存,而这内存默认是 堆外内存 ,为了增加内存的使用率,减少申请内存的不必要的消耗,诞生出了RecvByteBufAll
阅读全文
摘要:Netty - NioEventLoop 源码解析(启动相关) NioEventLoop的构造方法这里就不说了,在上一篇种仔细介绍过。 这里再来回顾下他的 继承体系: 由上图可看出, 其继承了 ScheduledExecutorService 调度线程池接口 。 也就是说 该 NioEventLoo
阅读全文
摘要:Netty-服务端启动流程 源码分析 预备知识 在看这篇 Netty启动流程 源码解析 之前, 最好请先了解 NioEventLoopGroup 和 NioEventLoop 这两个组件。可以参考我之前的文章 [Netty-组件 (NioEventLoopGroup、NioEventLoop)源码分
阅读全文
摘要:Netty-组件 (NioEventLoopGroup、NioEventLoop)源码分析 一、 必读前言 学习该篇源码,请希望先看完 我之前一期 【Netty-Reactor线程模型(NIO)】, 从中可学习到 从基础线程模型 到 高级Netty的 多Reactor多线程 模型 优化的思想 ,这非
阅读全文
摘要:Netty 协议设计与解析 (自定义协议) 一、自定义协议要素 魔术 , 用来在第一时间判断是否是无效数据包 版本号,可以支持协议的升级 序列化算法, 消息正文到底采用哪种序列化和反序列化方式, 可以由此扩展,例如:json、protobuf、hessian、jdk(缺点不能跨平台) 指令类型,是登
阅读全文
摘要:Netty 协议设计与解析(redis 、http) 一、redis 协议 redis 消息协议 有个固定的格式, 在客户端向 redis-server 发送命令时 要遵从该消息协议 Client端代码如下: 向redis 发送命令 set name zhangsan @Slf4j public c
阅读全文
摘要:Netty 黏包半包问题与解决方案 一、黏包/半包现象分析 黏包 现象,发送 abc def , 接收abcdef 原因 应用层: 接收方ByteBuf设置太大(Netty默认1024) 滑动窗口:假设发送发256 bytes 表示一个完整报文,但由于接收方处理不及时且窗口大小足够大,这256 by
阅读全文
摘要:Netty组件 之 ByteBuf 是对字节数据的封装 1)创建 ByteBuf buffer = ByteBufAllocator.Default.buffer(10) log(buffer) 上面代码创建了一个默认的ByteBuf(池化基于直接内存的ByteBuf),初始容量是10 输出 rea
阅读全文