技术Netty 能做什么?浅谈其在服务器中的应用

Posted 程序员交流学习

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了技术Netty 能做什么?浅谈其在服务器中的应用相关的知识,希望对你有一定的参考价值。

Netty是什么?从本质来讲JBoss做的一个Jar包,目的是快速开发高性能、高可靠性的网络服务器和客户端程序,其优点可以概括为提供异步的、事件驱动的网络应用程序框架和工具。通俗地讲:一个好使的处理Socket的东东如果没有Netty是不行的。

远古:java.net + java.io

近代:java.nio

其他:Mina,Grizzly

与Mina相比有什么优势?1、都是Trustin Lee的作品,Netty更晚;2、Mina将内核和一些特性的联系过于紧密,使得用户在不需要这些特性的时候无法脱离,相比下性能会有所下降,Netty解决了这个设计问题;3、Netty的文档更清晰,很多Mina的特性在Netty里都有;4、Netty更新周期更短,新版本的发布比较快;5、它们的架构差别不大,Mina靠apache生存,而Netty靠jboss,和jboss的结合度非常高,Netty有对google protocal buf的支持,有更完整的ioc容器支持(spring,guice,jbossmc和osgi);6、Netty比Mina使用起来更简单,Netty里你可以自定义的处理upstream events 或/和 downstream events,可以使用decoder和encoder来解码和编码发送内容;7、Netty和Mina在处理UDP时有一些不同,Netty将UDP无连接的特性暴露出来;而Mina对UDP进行了高级层次的抽象,可以把UDP当成"面向连接"的协议,而要Netty做到这一点比较困难。

Netty的特性1)设计统一的API,适用于不同的协议(阻塞和非阻塞)基于灵活、可扩展的事件驱动模型高度可定制的线程模型可靠的无连接数据Socket支持(UDP)2)性能更好的吞吐量,低延迟更省资源尽量减少不必要的内存拷贝3)安全完整的SSL/TLS和STARTTLS的支持能在Applet与android的限制环境运行良好4)健壮性不再因过快、过慢或超负载连接导致OutOfMemoryError不再有在高速网络环境下NIO读写频率不一致的问题5)易用完善的JavaDoc,用户指南和样例简洁简单仅信赖于JDK1.5。

Netty 在哪些行业得到了应用?互联网行业:随着网站规模的不断扩大,系统并发访问量也越来越高,传统基于 Tomcat 等 Web 容器的垂直架构已经无法满足需求,需要拆分应用进行服务化,以提高开发和维护效率。从组网情况看,垂直的架构拆分之后,系统采用分布式部署,各个节点之间需要远程服务调用,高性能的 RPC 框架必不可少,Netty 作为异步高性能的通信框架,往往作为基础通信组件被这些 RPC 框架使用。典型的应用有:阿里分布式服务框架 Dubbo 的 RPC 框架使用 Dubbo 协议进行节点间通信,Dubbo 协议默认使用 Netty 作为基础通信组件,用于实现各进程节点之间的内部通信。

其中,服务提供者和服务消费者之间,服务提供者、服务消费者和性能统计节点之间使用 Netty 进行异步/同步通信。除了 Dubbo 之外,淘宝的消息中间件 RocketMQ 的消息生产者和消息消费者之间,也采用 Netty 进行高性能、异步通信。除了阿里系和淘宝系之外,很多其它的大型互联网公司或者电商内部也已经大量使用 Netty 构建高性能、分布式的网络服务器。游戏行业:无论是手游服务端、还是大型的网络游戏,Java 语言得到了越来越广泛的应用。Netty 作为高性能的基础通信组件,它本身提供了 TCP/UDP 和 HTTP 协议栈,非常方便定制和开发私有协议栈。账号登陆服务器、地图服务器之间可以方便的通过 Netty 进行高性能的通信。

Netty 在游戏服务器架构中的应用大数据领域:经典的 Hadoop 的高性能通信和序列化组件 Avro 的 RPC 框架,默认采用 Netty 进行跨节点通信,它的 Netty Service 基于 Netty 框架二次封装实现。大数据计算往往采用多个计算节点和一个/N个汇总节点进行分布式部署,各节点之间存在海量的数据交换。由于 Netty 的综合性能是目前各个成熟 NIO 框架中最高的,因此,往往会被选中用作大数据各节点间的通信。企业软件:企业和 IT 集成需要 ESB,Netty 对多协议支持、私有协议定制的简洁性和高性能是 ESB RPC 框架的首选通信组件。事实上,很多企业总线厂商会选择 Netty 作为基础通信组件,用于企业的 IT 集成。通信行业:Netty 的异步高性能、高可靠性和高成熟度的优点,使它在通信行业得到了大量的应用。


以上是关于技术Netty 能做什么?浅谈其在服务器中的应用的主要内容,如果未能解决你的问题,请参考以下文章

浅谈RPC及Netty在RPC中的应用

如何用Netty写一个高性能的分布式服务框架?

如何用Netty写一个高性能的分布式服务框架

网络应用框架Netty快速入门

浅谈Netty(转载)

netty之DirectByteBuf 和 HeapByteBuf浅谈