Netty权威指南
第一章 Java的I/O演进之路
UNIX的5种I/O模型:
1 阻塞模型
2 非阻塞模型:轮询检查状态
3 复用模型:linux提供的select/poll,顺序扫描
4 信号驱动:内核通知用户,可以处理
5 异步I/O:内核处理完,通知用户
Java NIO的核心类库多路复用器selector就是基于epoll的多路复用技术实现的
epoll改进:
1 支持一个进程打开的socket描述符不受限制(最大值为操作系统最大文件句柄数)
2 I/O效率不会随socket增加而线性下降
3 使用mmap加速内核与用户空间的消息传递
4 api更加简单
第2章 NIO入门
传统BIO模型:一个线程处理一个请求
伪异步IO模型:一个线程池处理多个请求
NIO模型:selector轮询注册的channel,有新事件,就会被轮询出来,进行后续的IO操作
AIO(NIO2.0)模型:异步IO
第4章 TCP粘包/拆包问题的解决之道
tcp拆包粘包:一个完整的业务包可能被TCP拆分成多个包发送,也可能多个小包封装成一个大包发送
netty默认提供了多种编解码器处理半包
第6章 编解码技术
Java序列化缺点:
1 无法跨语言
2 序列化的码流太大
3 序列化性能太低
google的protobuf
facebook的thrift
jboss的marshalling
第11章 websocket协议开发
websocket是html5提供的全双工通信的网络技术:
1 单一TCP连接,采用全双工模式通信
2 对代理,防火墙和路由器透明
3 无头部信息,cookie和身份验证
4 无安全开销
5 通过ping/pong帧保持链路激活
6 服务器可以主动发消息给客户端

浙公网安备 33010602011771号