netty学习笔记二

傷城~ 2022-05-11 07:36 278阅读 0赞

Netty架构,特性、模块组件、线程模型(Boss线程、worker线程)以及源码、

netty架构图

70

netty架构五部分

Extensible Event Model(可扩展的事件模型)

Universal Communication API(统一的通讯API)

Zero-Copy-Capable Rich Byte Buffer(零拷贝的Buffer)

Protocol Support(应用层协议支持)

Transport Services(传输层服务)

模块组件

bootstrap
Netty服务端及客户端启动类
buffer
缓冲相关,对NIO Buffer做了一些优化、封装
channel
处理客户端与服务端之间的连接通道
container
连接其他容器的代码,例如Spring
handler
实现协议编解码等附加功能,
logging 日志
util工具类

70 1

netty处理流程

1.标记Nio Selector唤醒状态

2.Selector注册

3.处理内部任务队列

4.处理selector自己的事件对应的逻辑

对应关系:

MainReactor = NioServerBoss
SubReactor = NioWorker

===========================================================================================

高性能序列化协议protobuf及源码:

序列化协议基础
基础类型int在内存中的原始序列化
基于nio的序列化
基于netty的序列化
对象序列化
Java原始对象序列化
ObjectInputStream,ObjectOutStream
基于protobuf序列化
Protobuf序列化过程源码解析
Netty+Protobuf案例

protobuf是1-5个字节,它回去遍历判断 int a; 具体需要多少存储字节,int是4个字节32位;但是如果 a用不到这么多,就不会开辟这么多空间, protobuf为什么是5个字节,因为它要多大int,10000000 1是protobuf用作符号位,后面才是值,如果protobuf也是4个字节肯定不够用,所以每8位的最左边一位是protobuf用于作为标识的,如果是1则代表a的值用1个字节不够存,0代表够了,一次类推。

===========================================================================================

粘包分包现象及解决方案、编解码:

发表评论

表情:
评论列表 (有 0 条评论,278人围观)

还没有评论,来说两句吧...

相关阅读

    相关 netty学习笔记

    Netty与原生Nio的区别 原生的nio,只简单封闭了ByteBuffer以及Channel,也就是网络IO操作以及对这些字节的缓存,字节的编码与解码、粘包与拆包

    相关 netty学习笔记

    Netty架构,特性、模块组件、线程模型(Boss线程、worker线程)以及源码、 netty架构图: ![70][] netty架构五部分: Extensible