什么是Netty?
netty是一个高并发的通信框架。
IO读写的基础原理
有两种IO
- 进程缓冲区和内核缓冲区的交互
- 内核缓冲区和物理设备的交互
四种IO模型
同步和异步的区别:
同步是用户线程发起,异步是内核空间发起的
阻塞和非阻塞的区别:
阻塞是发起IO后需要等待IO结束
- 同步阻塞IO****
优点:开发简单。阻塞期间,用户线程挂起,不会占用CPU资源
缺点:一个连接一个线程,不适合高并发
- 同步非阻塞NIO
优点:用户等待线程过程中不会阻塞,实时性较好
缺点:不断轮询内核,占用CPU时间
指的并不是Java的NIO包,
- IO多路复用
解决同步非阻塞模型中轮询等待的问题
linux对文件的操作实际上是通过文件描述符,而IO复用模型就是,通过一个进程监听多个文件描述符,一旦某个文件描述符准备就绪,就去通知程序做处理。不仅单个链接处理的快,而且能处理更多链接
- 异步IO
用户线程通过系统调用注册IO操作,直到完成都不阻塞。
应用程序只需要进行事件的注册与接收,其余工作都要操作系统完成,需要支持
windowsIOCP真正支持,Linux还是IO多路复用,
netty也还是IO多路复用
总结
到此为止都是高并发IO的底层原理。但即使最先进的模型也需要合理的配置
JavaNIO通信基础
Reactor反应器模式
并发基础中的Future回调模式
此处为语雀内容卡片,点击链接查看:www.yuque.com/u22564695/s…