【闪电侠学netty】第2章 Netty是什么
1. 内容概要
2.1 IO编程
1. 什么是IO编程?
- Input Stream :数据从外面(磁盘、网络)流进内存
- Output Stream:数据从内存流到外面去
- IO编程:内存和磁盘/网络交互数据的编程
2.2 NIO编程
1. 什么是NIO编程?
- NIO:new input/output
IO | NIO | |
线程 | 一个连接一个线程 | 两个(均在服务器端) serverSelector:轮询是否有新的连接 clientSelector:轮询连接是否有可读数据 |
读写 | 面向流Stream | 面向Buffer |
读写效率 | 低:一次性只能从流中读取一个或多个字节 | 高:任意读取任何数据 |
缓存数据 | 需要自己缓存 | 无须缓存,移动指针读写 |
2.3 Netty编程
1. 什么是Netty?
- 异步事件驱动的网络应用架构
- 封装JDK的NIO,使用更方便
2. Netty不使用原生NIO的原因?
- 简易性:原生NIO需要了解概念太多,API反人类,编程复杂,易出错
- Netty底层NIO和IO模型随意切换
- 自带拆包/粘包,异常检测等机制,程序员只需关心业务逻辑
- 解决JDK的BUG,如空轮询
- Reactor线程模型高效的并发处理
- 自带各种协议栈:无须自己实现
- 社区活跃
- 健壮性:经历各大RPC框架、消息中间件、分布式通讯中间件的广泛验证
3. netty maven依赖 + Java 快速入门
点击进入
2. 心得
- Netty完美封装NIO,代码优雅
- Netty几乎不用操心网络通讯性能问题,尽情地让Netty榨干你的CPU吧。这句话不理解,后面再更新这里的心得