netty性能为什么性能高

netty性能是一个高性能、异步事件驱動的NIO框架它提供了对TCP、UDP和文件传输的支持,作为一个异步NIO框架netty性能的所有IO操作都是异步非阻塞的,通过Future-Listener机制用户可以方便的主动获取或者通过通知机制获得IO操作结果。

作为当前最流行的NIO框架netty性能在互联网领域、大数据分布式计算领域、游戏行业、通信行业等获得了廣泛的应用,一些业界著名的开源组件也基于netty性能的NIO框架构建

netty性能是业界最流行的NIO框架之一,它的健壮性、功能、性能、可定制性和可擴展性在同类框架中都是首屈一指的它已经得到成百上千的商用项目验证,例如Hadoop的RPC框架avro使用netty性能作为底层通信框架;很多其他业界主流嘚RPC框架也使用netty性能来构建高性能的异步通信能力。

通过对netty性能的分析我们将它的优点总结如下:

问:能不能讲解一下netty性能的串行无锁化設计,如何在串行和并行中达到最优

为了尽可能提升性能,netty性能采用了串行无锁化设计在IO线程内部进行串行操作,避免多线程竞争导致的性能下降表面上看,串行化设计似乎CPU利用率不高并发程度不够。但是通过调整NIO线程池的线程参数,可以同时启动多个串行化的線程并行运行这种局部无锁化的串行线程设计相比一个队列-多个工作线程模型性能更优。netty性能的NioEventLoop读取到消息之后直接调用ChannelPipeline的fireChannelRead(Object msg),只要用戶不主动切换线程一直会由NioEventLoop调用到用户的Handler,期间不进行线程切换这种串行化处理方式避免了多线程操作导致的锁的竞争,从性能角度看是最优的

版权声明:本文为博主原创文章遵循 版权协议,转载请附上原文出处链接和本声明

这种方式会将handler的所有方法都放到线程池去处理,如果分配内存则在业务线程池里媔分配,做不到内存的共享;第一种方式则可以自由选择要放到线程池的代码可以将内存分配放在主线程里面,业务逻辑才放到业务线程池里可以做到内存共享;

我要回帖

更多关于 netty性能 的文章

 

随机推荐