netty 4.1.34 源码浅析1
概述
- 参考
背景知识
- 单线程、多线程、线程池
- 单线程Reactor(Acceptor+IO Handler/性能、安全、可靠都存在问题)
- 多线程Reactor(Acceptor+IO Pool/当Acceptor需要鉴权,认证有很大损耗)
- 主从Reactor(Accept Pool+IO Pool)
- 一个Acceptor接收后,其他Acceptor负责鉴权/认证等,处理后将其注册到IO多路复用器,进行IO的读写
- 时间轮(tickMs/whileSize/Interval/currentTime+分层)
- web协议变更(减少加载时间与增加安全性)
- http1.0/http1.1/https/spdy(speedy)/http2
- ocsp(online certificate status protocol)
- Unix I/O模型
- 阻塞IO(进程被阻塞)
- 非阻塞IO(轮询查内核数据,进程非阻塞)
- IO复用型(通过注册fd到select/epoll系统调用,内核态感知fd准备好,则回调用户态进行数据复制)
- epoll相比与select,fd无限制(select=1024/epoll=>1GB=10万个)
- io效率不会随着fd的增加而线性下降(epoll使用活跃socket的回调,不会像select扫描所有socket列表,但是活跃的socket太多,效率就差不多)
- epoll使用mmap同一块内存共享内核与用户空间,无需消息在两个空间的复制
- epoll的api更简单
- 信号驱动IO模型(通过信号量通知应用,进行数据的内核态到