大家好,我是你的好朋友思创斯。今天说一说netty简介_netty客户端[通俗易懂],希望您对编程的造诣更进一步.
1.简述
netty是一个高性能、异步事件驱动的nio框架,它提供了对tcp、udp和文件传输的支持,作为一个异步nio框架,netty的所有io操作都是异步非阻塞的,通过future-listener机制,用户可以方便的主动获取或者通过通知机制获得io操作结果。
netty在互联网领域、大数据分布式计算领域、游戏行业、通信行业等获得了广泛的应用,一些业界著名的开源组件也基于netty的nio框架构建。
2.netty的优缺点
netty的优点:
- api使用简单,开发门槛低。
- 功能强大,预置了多种编解码功能,支持多种主流协议。
- 定制能力强,可以通过channelhandler对通信框架进行灵活地扩展。
- 性能高,通过与其他业界主流的nio框架对比,netty的综合性能最优。
- 成熟、稳定,netty修复了已经发现的所有jdk nio bug,业务开发人员不需要再为nio的bug而烦恼。
- 社区活跃,版本迭代周期短,发现的bug可以被及时修复,同时,更多的新功能会加入。
- 经历了大规模的商业应用考验,质量得到验证。
netty的缺点:
- 大版本不兼容,3.x/4.x同时维护,5.x放弃维护,主要原因是netty抛弃了jboss单独发展了。
3.为什么选择netty
netty的特点:
- 高性能、异步事件驱动的nio框架,提供了对tcp、udp和文件传输的支持。
- 使用更高效的socket底层,对epoll空轮询引起的cpu占用飙升在内部进行了处理,避免了直接使用nio的陷阱,简化了nio的处理方式。
- 采用多种decoder/encoder 支持,对tcp粘包/分包进行自动化处理。
- 可使用接受/处理线程池,提高连接效率,对重连、心跳检测的简单支持。
- 可配置io线程数、tcp参数, tcp接收和发送缓冲区使用直接内存代替堆内存,通过内存池的方式循环利用bytebuf。
- 通过引用计数器及时申请释放不再引用的对象,降低了gc频率。
- 使用单线程串行化的方式,高效的reactor线程模型。
- 大量使用了volitale、使用了cas和原子类、线程安全类的使用、读写锁的使用。
netty的设计:
- 适用于各种传输类型的统一api – 阻塞和非阻塞套接字。
- 基于灵活且可扩展的事件模型,可以清晰地分离关注点。
- 高度可定制的线程模型 – 单线程,一个或多个线程池,如seda。
- 真正的无连接数据报套接字支持(自3.1起)。
netty的性能:
- 更高的吞吐量,更低的延迟。
- 减少资源消耗。
- 最小化不必要的内存复制。
netty的安全:
- 完整的ssl / tls和starttls支持。
4.netty的应用场景
netty的应用场景:
- 作为rpc框架的网络通讯工具,如dubbo。
- 实现即时通讯系统。
- 实现消息推送系统。
文章由思创斯整理,转载请注明出处:https://ispacesoft.com/370092.html