netty 知识图谱
2021-02-21 21:49:10 1 举报
AI智能生成
登录查看完整内容
netty java
作者其他创作
大纲/内容
Netty编码流程及demo
Netty知识图谱
netty组件
Channel: 代表一个连接或者一个请求
ChannelHandlerAdapter
ChannelInboundHandler
ChannelOutboundHandler
SimpleChannelInboundHandler
ChannelInitializer
ByteBuffer
JVM ByteBuffer
Codec: 本质上也是一种ChannelHandler
编码器Encode
解码器Decode
StringDecoder:把收到的消息对象转换为字符串的编码器
DelimiterBasedFrameDecoder
FixedLemgthFrameDecoder
子主题
EventLoop
EventLoopGroup:
ServerBootstrap: 服务器端启动辅助类
Bootstrap: 客户端启动辅助类
ChannelInitializer:Channel初始化器
Netty实战
作为http服务器
作为websocket服务器
自定义协议
定义协议
编写编码解码handler
编写握手handler
编写认证handler
编写心跳handler
编写重连handler
编写业务handler
传统BIO
socket 的配置
缺点及优势
不利于高并发
并发数小于1000时性能较好
可以通过控制线程的方式限流
java demo
java NIO
组件
NIOServerSocketChannel
NIOScoketChannel
Selector
Buffer
SelectionKey
编程过于复杂
jdk NIO 本身有bug
读写就绪
读就绪: 只要内核空间有可读的内容select就会返回
IO核心概念
用户空间: 用户进程可以使用的内存
IO阻塞阶段
第一阶段: 由磁盘到内核空间的阻塞
第二阶段: 有内核空间到用户空间的阻塞
写数据同理
粘包拆包
由于TCP协议的问题<比如:缓存>客户端收到的数据不一定是一次一个完整的消息 .
定长协议
固定分隔符
边长协议: 类似于HTTP
序列化
JDK序列化
不能跨语言
序列化后字节流太大
thrift序列化
avro序列化
JSON序列化
把对象以json字符串的格式序列化成二进制
五种IO模式
阻塞IO: 再两个数据拷贝阶段都会阻塞
信号驱动式IO
reactor网络编程模型
事件循环
IO复用结合线程池模式就是reactor的核心
Reactor
Handler
单线程Reactor模型
redis使用的是单线程Reactor模型
多线程Reactor模型
reactor线程池
acceptor线程
专门监听处理新建立的连接
主从模式
proactor模式
proactor模式使用的是异步非阻塞IO
0 条评论
回复 删除
下一页