netty介绍 作者:马育民 • 2023-02-02 16:19 • 阅读:10022 # 介绍 Netty 是一个高性能、异步事件驱动的 NIO 框架,基于 JAVA NIO 提供的 API 实现,使用 [主从Reactor多线程](https://www.malaoshi.top/show_1IX4ukPvVFlC.html "主从Reactor多线程") 实现 提供了对TCP、UDP 和文件传输的支持,作为一个异步 NIO 框架,Netty 的所有 IO 操作都是异步非阻塞的,性能非常高 中文资料: https://www.w3cschool.cn/essential_netty_in_action/essential_netty_in_action-4pqk28b5.html ## 为什么不用 NIO API 编程 因为 NIO 有一些缺点: - NIO的类库和API繁杂,学习成本高,你需要熟练掌握 `Selector`、`ServerSocketChannel`、`SocketChannel`、`ByteBuffer` 等。 - 需要熟悉Java多线程编程。这是因为NIO编程涉及到Reactor模式,你必须对多线程和网络编程非常熟悉,才能写出高质量的 NIO 程序。 - 臭名昭著的epoll bug。它会导致 `Selector` 空轮询,最终导致CPU 100%。直到JDK1.7版本依然没得到根本性的解决。 ## 优点 - API使用简单,学习成本低。 - 性能高,对比其他主流的NIO框架,Netty的性能最优。 - 功能强大,内置了多种解码编码器,支持多种协议:FTP, SMTP, HTTP - 社区活跃,发现BUG会及时修复,迭代版本周期短,不断加入新的功能。 ## 谁在用 Facebook、阿里的 Dubbo 框架、Elasticsearch都采用了Netty 参考: https://zhuanlan.zhihu.com/p/181239748 原文出处:http://malaoshi.top/show_1IX4tL4AKChj.html