Netty——基础知识点整理

1. Netty 是什么?

Netty 是一款异步的事件驱动的网络应用程序框架,支持快速地开发可维护的高性能的面向协议的服务器 和客户端。

2. 为什么要使用Netty?

这个问题也有其他的问法,比如原生NIO有什么问题呢

  1. NIO 的类库和API繁杂,使用麻烦:需要熟练掌握 SelectorServerSocketChannelSocketChannelByteBuffer 等。

  2. 需要具备其他的额外技能:要熟悉 Java 多线程编程,因为 NIO 编程涉及到 Reactor 模式,你必须对多线程和网络编程非常熟悉,才能编写出高质量的 NIO 程序。

  3. 开发工作量和难度都非常大:例如客户端面临断连重连、网络闪断、半包读写、失败缓存、网络拥塞和异常流的处理等等。

  4. JDK NIO 的 Bug:例如臭名昭著的 Epoll Bug,它会导致 Selector空轮询,最终导致 CPU 100%。直到 JDK 1.7 版本该问题仍旧存在,没有被根本解决。

3. Netty有什么优点

设计

        1、统一的 API,支持多种传输类型,阻塞的和非阻塞的

        2、简单而强大的线程模型

        3、真正的无连接数据报套接字支持

        4、链接逻辑组件以支持复用

易用性

        详实的 Javadoc 和大量的示例集

性能

        1、拥有比 Java 的核心 API 更高的吞吐量以及更低的延迟

        2、得益于池化和复用,拥有更低的资源消耗

        3、最少的内存复制

健壮性

        1、不会因为慢速、快速或者超载的连接而导致 OutOfMemoryError

        2、消除在高速网络中 NIO 应用程序常见的不公平读/写比率

安全性

        1、完整的 SSL/TLS 以及 StartTLS 支持

        2、可用于受限环境下,如 Applet 和 OSGI

4. netty高性能主要依赖了哪些特性

        1、IO 线程模型:同步非阻塞,用最少的资源做更多的事。

        2、内存零拷贝:尽量减少不必要的内存拷贝,实现了更高效率的传输。

        3、内存池设计:申请的内存可以重用,主要指直接内存。内部实现是用一颗二叉查找树管理内存分配情况。

        4、

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值