Skip to content

1 Introduce

BladeCode edited this page Nov 23, 2019 · 1 revision

Netty 是国内外各大互联网公司的必备网络应用框架,Netty 主要处理与网络相关的一些应用

由于 Netty 设计的巧妙的实现方式,以及对协议很好的实现,使的 Netty 可以在各种应用场景下广泛的应用,无论是传统基于HTTP协议的访问方式,还是更底层基于socket的访问方式,以及支持HTML5规范中的websocket的长连接特性,都提供了比较好的支持

Netty is an asynchronous event-driven network application framework 
for rapid development of maintainable high performance protocol servers & clients

Netty 是一个异步的,事件驱动的网络应用框架,
是可维护的,高性能的,协议化的服务端和客户端快速开发方式

Netty

Netty 是一个非阻塞(NIO)客户端服务端框架,它可以快速的进行网络应用开发,例如:基于协议的客户端和服务端。它极大的简化并且支持流式的网络程序,例如:基于TCP和UDP的socket服务
'快捷方便'并不意味着最终的应用程序会受到可维护性或性能问题的影响。Netty经过精心设计,具有实施许多协议所获得的经验,如FTP,SMTP,HTTP以及各种基于二进制和文本的遗留协议。因此,Netty 成功地找到了一种在不妥协的情况下实现易于开发,性能,稳定性和灵活性的方法。

特点

设计

  • 适用于各种传输类型统一API - 阻塞和非阻塞 socket
  • 基于灵活且可扩展的事件模型,可以清晰地关注分离(separation of concerns)
  • 高度可定制的线程模型 - 单线程,一个或多个线程池,如:Staged Event Driven Architecture(SEDA,阶段型事件驱动架构,将一个请求分成若干个阶段,每个阶段可以根据自身情况不用数量的线程来分别进行处理,阶段与阶段之间是通过事件驱动的这种异步通讯模式来进行沟通及通信)
  • 真正的无连接数据报套socket支持(since 3.1)

易用

  • 详细的Javadoc,用户指南和示例 (实际:并不是很友好)
  • 没有额外的依赖,JDK5(Netty 3.x),JDK6(Netty 4.x)

性能

  • 更高的吞吐量,更低的延迟
  • 减少资源消耗
  • 不必要的内存复制降到最低

安全

  • 完整的SSL / TLS和StartTLS支持

Netty的使用场景

  1. 作为HTTP的服务器,类似与Jetty,Tomcat这种Servlet容器,只是Netty在充当HTTP的服务器时,它采用的编程模型并不是基于Servlet的规范,原因是Netty并没有实现Servlet的接口,Servlet的实现,Netty有自己的实现方式
  2. 作为RPC通讯的框架,通讯的协议(可自定义),通讯的库,实现远程过程的调用,基于Socket方式(广泛使用)
  3. 作为长连接的服务器,基于WebSocket,实现客户端和服务端之间的长连接通信

附录:Netty official website

Clone this wiki locally