BIO,NIO
BIO
- 阻塞的,效率低下,线程和fd一对一
NIO 第一版
- 用户线程不断轮询,线程和fd一对多,但是用户线程需要轮询非常多次,多次调用内核,成本大
NIO 第二版 select
- 用户线程调用select,内核做轮询。但是需要传参拷贝fd list
NIO 第三版 epoll
- 用户线程和内核共享内存(mmap),解决了传递fd list 的问题
零拷贝
- 数据不经过内核态,直接指定 in 和 out (sendfile方法)
epoll + 零拷贝 = kafka
- 生产者写入通过mmap将数据从网卡存储到磁盘
- 消费者通过零拷贝直接将数据从磁盘发送到网卡
PREVIOUS知识总结 jvm
NEXT知识总结 redis