Netty:异步事件驱动的网络应用框架

Netty是一种异步事件驱动的网络应用框架,用以支持高性能协议服务器应用和客户端程序的快速开发。其健壮性、功能、性能、可定制和可扩展行在同类NIO框架中都是首屈一指,并得到大量商业项目的验证。

 netty

简介

Netty是一种基于Java NIO的网络应用框架,能够简单快速开发网络应用,如客户端和服务端协议。它极大的简化和流程化了网络编程的开发过程,如TCP和UDP的socket开发。

开发上的”简单快速”并不意味着开发出的应用程序会存在维护或性能上的问题。Netty是一个精心设计的框架,它从许多网络协议如FTP、SMTP、HTTP、二进制协议和传统文本协议的实现中吸收了宝贵经验,使得Netty易于简单快速开发的同时具有高性能、稳定性、灵活性等特点。

上图展示了Netty的构架,其中最下面是Netty的核心core:具有ZeroCopy特性的ByteBuffer,其实就是ChannelBuffer里面的操作,所有Netty的Server和Client端的传输,最终都是byte传输,也就是说必须得经过ChannelBuffer的操作,转化成二进制传输;niversal Communication API,这个是Netty的核心底层内容;还有Extensible Event Model。这些都是底层的东西,已经封装好,仅供拿来使用或者只需要修改自己感兴趣的内容即可。

右上角是跟跟传输相关的协议:最下面是Legacy-Text传统文本协议,也就是二进制协议,这个实际上是传输的协议;上面的各种协议都是基于文本协议的操作,如HTTP、WebSocket、zlib/gzip压缩、SSL(https)、Google-Protobuf、Large-File、RTSP(Real Time StreamingProtocol)传输多媒体数据。这些协议是内置的,如果自己有需要,也可以定制自己的传输方式。

左上角是传输层支持的内容:Pipeline、Tunnel、Datagram和Socket,这些都是传输层支持的内容。

特性

设计

  • 为不同类型的传输提供统一阻塞式和非阻塞式通信API
  • 基于可变的和可延伸的事件模型,能够清晰地对重点事件进行分离
  • 高度可定制化线程模型——单线程,一个或多个线程池,例如SEDA
  • 支持真实的无连接报文通信(从3.1版本开始)

简单易用

  • 完善的文档Javadoc,用户指南和用例
  • 没有多余的依赖,只需要JDK5(Netty 3.x)或JDK6(Netty 4.x)

性能

  • 高吞吐量、低延迟
  • 资源消耗更少
  • 简化不必要的内存拷贝

安全

  • 完整的SSL/TLS和StartTLS支持

社区

  • 社区非常活跃,版本迭代周期短,发现的BUG可以被及时修复

开发资源

官方网站:http://netty.io/index.html
开源地址:https://github.com/netty/netty

1 1 收藏

资源整理者简介:John Smith

这个世界上有10种人,一种懂二进制,一种不懂。 个人主页 · 贡献了1个资源 · 1


直接登录

推荐关注

按分类快速查找

关于资源导航
  • 伯乐在线资源导航收录优秀的工具资源。内容覆盖开发、设计、产品和管理等IT互联网行业相关的领域。目前已经收录 1439 项工具资源。
    推送伯乐头条热点内容微信号:jobbole 分享干货的技术类微信号:iProgrammer