天天看点

netty入门小程序Netty的特性Netty 在哪些行业得到了应用?简单实现服务器端和客户端

设计统一的api,适用于不同的协议(阻塞和非阻塞)基于灵活、可扩展的事件驱动模型高度可定制的线程模型可靠的无连接数据socket支持(udp)

性能更好的吞吐量,低延迟更省资源尽量减少不必要的内存拷贝

安全完整的ssl/tls和starttls的支持能在applet与android的限制环境运行良好

健壮性不再因过快、过慢或超负载连接导致outofmemoryerror不再有在高速网络环境下nio读写频率不一致的问题

易用完善的javadoc,用户指南和样例简洁简单仅信赖于jdk1.5

随着网站规模的不断扩大,系统并发访问量也越来越高,传统基于 tomcat 等 web 容器的垂直架构已经无法满足需求,需要拆分应用进行服务化,以提高开发和维护效率。从组网情况看,垂直的架构拆分之后,系统采用分布式部署,各个节点之间需要远程服务调用,高性能的 rpc 框架必不可少,netty 作为异步高性能的通信框架,往往作为基础通信组件被这些 rpc 框架使用。  

阿里分布式服务框架 dubbo 的 rpc 框架使用 dubbo 协议进行节点间通信,dubbo 协议默认使用 netty 作为基础通信组件,用于实现各进程节点之间的内部通信。它的架构图如下:

netty入门小程序Netty的特性Netty 在哪些行业得到了应用?简单实现服务器端和客户端

其中,服务提供者和服务消费者之间,服务提供者、服务消费者和性能统计节点之间使用 netty 进行异步/同步通信。 

除了 dubbo 之外,淘宝的消息中间件 rocketmq 的消息生产者和消息消费者之间,也采用 netty 进行高性能、异步通信。  

除了阿里系和淘宝系之外,很多其它的大型互联网公司或者电商内部也已经大量使用 netty 构建高性能、分布式的网络服务器。

无论是手游服务端、还是大型的网络游戏,java 语言得到了越来越广泛的应用。netty 作为高性能的基础通信组件,它本身提供了 tcp/udp 和 http 协议栈,非常方便定制和开发私有协议栈。账号登陆服务器、地图服务器之间可以方便的通过 netty 进行高性能的通信,架构示意图如下:

netty入门小程序Netty的特性Netty 在哪些行业得到了应用?简单实现服务器端和客户端

经典的 hadoop 的高性能通信和序列化组件 avro 的 rpc 框架,默认采用 netty 进行跨节点通信,它的 netty service 基于 netty 框架二次封装实现。  

大数据计算往往采用多个计算节点和一个/n个汇总节点进行分布式部署,各节点之间存在海量的数据交换。由于 netty 的综合性能是目前各个成熟 nio 框架中最高的,因此,往往会被选中用作大数据各节点间的通信。

企业和 it 集成需要 esb,netty 对多协议支持、私有协议定制的简洁性和高性能是 esb rpc 框架的首选通信组件。事实上,很多企业总线厂商会选择 netty 作为基础通信组件,用于企业的 it 集成。

netty 的异步高性能、高可靠性和高成熟度的优点,使它在通信行业得到了大量的应用。

运行可以自己试一试

<a href="http://download.csdn.net/download/bug_moving/9762526">netty jar包</a>