Netty

Netty 概览

Netty是网络应用开发框架,具有以下三个特点

  1. 异步
  2. 事件驱动
  3. 基于 NIO

Netty 作为网关适用于:

  • 服务端开发
  • 客户端开发
  • 使用TCP/UDP/HTTP传输的网络应用
    Netty

协议支持:Netty所支持的各种协议包括数据传输、序列化和反序列化(压缩和解压、编解码)
在这里插入图片描述

Zero-Copy-Capable Rich Byte Buffer 零拷贝
在这里插入图片描述
TCP/IP是一个多层协议,在传输过程中传输层、物理层会把应用层的数据转换为字节,然后按照自身协议的输出要求选择合适的字节大小进行拆分或者组合,在拆分或者组合的过程中应用层可能需要多次拷贝数据。数据拷贝对性能存在一定影响,Netty提供的ChannelBuffer是一个零拷贝的Buffer,通过CompositeChannelBuffer和SlicedChannelBuffer两个类实现了组合、拆分的零拷贝
————————————————
原文

Netty 特性

作为高性能的协议服务器可以实现:

  • 高吞吐
  • 低延迟
  • 低开销
  • 零拷贝
  • 可扩容
  • 松耦合: 网络和业务逻辑分离
  • 使用方便、可维护性好

Netty兼容性

JDK 兼容性::

  • Netty 3.x: JDK5及以上
  • Netty 4.x: JDK6及以上

协议兼容性:

  • 兼容大部分通用协议
  • 支持自定义协议

嵌入式(可以使用在多种通信场景):

  • HTTP Server
  • HTTPS Server
  • WebSocket Server
  • TCP Server
  • UDP Server
  • In VM Pipe

Netty涉及的基本概念

  • Channel
    通道,用于取代直接监听和操作socket,Java NIO 中的基础概念,代表一个打开的连接,可执行读取/写入 IO 操作。Netty 对 Channel 的所有 IO 操作都是非阻塞的
  • ChannelFuture
    Java 的 Future 接口,只能查询操作的完成情况,或者阻塞当前线程等待操作完成。Netty 封装一个 ChannelFuture 接口,我们可以将回调方法传给 ChannelFuture,在操作完成时自动执行。
  • Event & Handler
    Netty 基于事件驱动,事件和处理器可以关联到入站和出站数据流
  • Encoder & Decoder
    处理网络 IO 时,需要进行序列化和反序列化,转换 Java 对象与字节流
    对入站数据进行解码,基类是 ByteToMessageDecoder
    对出站数据进行编码,基类是MessageToByteEncoder
  • ChannelPipeline
    数据处理管道就是事件处理器链
    有顺序、同一 Channel 的出站处理器和入站处理器在同一个列表中

Netty 应用组成

Netty 基于事件驱动, Netty 应用主要组成即为Event & Handler

Event:

  • 网络事件
    1、 入站事件:
    • 通道激活和停用
    • 读操作事件
    • 异常事件
    • 用户事件
    2、出站事件:
    • 打开连接
    • 关闭连接
    • 写入数据
    • 刷新数据
  • 应用程序逻辑事件
  • Handler
    事件处理程序接口:
    • ChannelHandler
    • ChannelOutboundHandler 应用程序用于通过channel向Socket输出数据的handler
    •ChannelInboundHandler 应用程序用于通过channel从Socket读取数据的handler
    适配器(空实现,需要继承使用):
    • ChannelInboundHandlerAdapter
    • ChannelOutboundHandlerAdapter
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值