“ 从事广告服务端研发4年了,终于有时间总结下Netty,希望有所受益 。” Netty简介
Netty是由JBOSS提供的一个Java开源框架,Netty提供异步的、面向事件驱动的网络应用程序框架,用以快速开发高性能、高可靠性的网络IO程序; Netty可以帮助你快速、简单的开发出一个网络应用,大幅度简化和流程化了NIO的开发过程; Netty是目前最流行的NIO框架,Netty主要针对在TCP协议下,面向Clients端的高并发应用,或者Peer to Peer场景下的大量数据传输的应用,在互联网领域、大数据分布式计算领域、通信行业、游戏行业等都获得了广泛的应用,知名的框架Dubbo、ElasticSearch、lettuce等内部都采用了; 如图所示,基于零拷贝的缓存设计、通用通信API、可扩展的事件模型作为Netty的内核,并结合多种协议(例如FTP,SMTP,HTTP等),netty的“快速简便”并不意味着最终的应用程序将遭受可维护性或性能问题的困扰,netty以一种可插拔的精良设计,实现了一种无需妥协即可轻松实现开发,性能,稳定性和灵活性的方法。 原生NIO存在的问题 NIO的类库和API复杂,使用麻烦;需要熟练掌握Selector、ServerSocketChannel、SocketChannel、ByteBuffer等; 需要具备其他的额外技能:要熟悉Java多线程编程,因为NIO编程涉及到Reactoor模式,你必须对多线程和网络编程非常熟悉,才能编写出高质量的NIO程序; 开发工作量和难度非常大:例如客户端面临断线重连、网络闪断、半包读写、失败缓存、网络拥塞和异常流得得得处理等等; JDK NIO的Bug,例如臭名昭著的Epoll Bug,会导致Selector空轮训,最终导致CPU 100%。 Netty特点 性能 更高的吞吐量,更低的延迟:多路复用 减少资源消耗:非阻塞 减少不必要的内存复制:零拷贝 安全 使用方便 API清晰,模块丰富且可插拔; 社区活跃,更新速度快; 本文参与
腾讯云自媒体同步曝光计划 ,分享自微信公众号。
原始发表:2020-07-08,如有侵权请联系
cloudcommunity@tencent.com 删除