Netty学习之Netty整体架构

架构设计

Netty is a NIO client server framework which enables quick and easy development of network applications such as protocol servers and clients. It greatly simplifies and streamlines network programming such as TCP and UDP socket server.

'Quick and easy' doesn't mean that a resulting application will suffer from a maintainability or a performance issue. Netty has been designed carefully with the experiences earned from the implementation of a lot of protocols such as FTP, SMTP, HTTP, and various binary and text-based legacy protocols. As a result, Netty has succeeded to find a way to achieve ease of development, performance, stability, and flexibility without a compromise.

 Netty 是一个 NIO 客户端服务器框架,可以快速轻松地开发网络应用程序,例如协议服务器和客户端。它极大地简化和精简了 TCP 和 UDP 套接字服务器等网络编程。 “快速而简单”并不意味着生成的应用程序会受到可维护性或性能问题的影响。 Netty 是根据从许多协议(如 FTP、SMTP、HTTP 以及各种基于二进制和文本的遗留协议)的实现中获得的经验而精心设计的。结果,Netty 成功地找到了一种方法,可以在不妥协的情况下实现易于开发、性能、稳定性和灵活性。

Core(核心层):核心层,主要定义一些基础设施,比如事件模型、通信 API、缓冲区等。

Transport Services(传输服务层):主要定义一些通信的底层能力,或者说是传输协议的支持,比如 TCP、UDP、HTTP 隧道、虚拟机管道等。

Protocol Support(协议支持层):这里的协议比较广泛,不仅仅指编解码协议,还可以是应用层协议的编解码,比如 HTTP、WebSocket、SSL、Protobuf、文本协议、二进制协议、压缩协议、大文件传输等,基本上主流的协议都支持。

模块设计

Netty是一个多模块项目,由许多小模块构建而成,常用的、重要的模块如下所示:

netty-common:公用模块,其它的所有模块都依赖于common包

  • 通用工具类
  • 对于JDK原生类的增强
  • Netty自定义的并发包
  • Netty自定义的集合包

netty-buffer:Netty自己实现的Buffer,比JDK原生的ByteBuffer做出了许多优化,比如池化Buffer,组合Buffer等

netty-resolver:主要用做地址解析

以上三个模块均为Netty的基础模块,是Netty的基石和底盘。

netty-transport:主要定义了一些用于传输层的接口以及类,比如Channel、ChannelHandler等,同时还实现了对于TCP、UDP通信协议的支持

netty-handler:定义了各种不同的Handler,这些Handler的功能有:IP过滤、日志、SSL等

netty-codec:定义了一些编码解码器,比如:base64、json、xml等

netty-example:提供了各种各样的代码示例、案例

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Lw中

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值