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 服务器可以主动发消息给客户端

 

posted @ 2020-04-27 14:32  褐色键盘  阅读(269)  评论(0)    收藏  举报