原生NIO存在的问题
- 类库繁杂
- 需要多线程知识
- 工作量增加,难度增加
- 会出现断连、重连、网络闪退、半包读写、失败缓冲、网络拥塞、和异常流的处理
- NIO本身的bug Epoll bug
Netty 概念
- 异步,基于事件驱动的网络应用框架,可快速开发高性能,高可靠性的网络应用
线程模型的基本介绍
- 传统阻塞I/O
- Reactor模式(反应式)
- 单Reactor,单线程
- 单Reactor,多线程
- 主从Reactor,多线程
- netty 基于主从Reactor 多线程模型
传统阻塞型I/O模型
- 模型特点
- 采用阻塞IO模式获取输入的数据
- 每个连接都选用独立的线程完成数据输入
- 问题
- 并发数很大的情况下不适用
- 会阻塞