netty介绍

介绍

Netty 是一个高性能、异步事件驱动的 NIO 框架,基于 JAVA NIO 提供的 API 实现,使用 主从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繁杂,学习成本高,你需要熟练掌握 SelectorServerSocketChannelSocketChannelByteBuffer 等。

  • 需要熟悉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


原文出处:https://malaoshi.top/show_1IX4tL4AKChj.html