netty实战读书笔记

Netty概述

  • Netty是什么?

Netty是一个基于NIO的客户、服务器端编程框架

 

  • Netty优缺点?

 

 

Netty的核心组件

  • Channel

Channel是 Java NIO的一个基本构造,是传输网络数据的通道,

可以把 Channel 看作是传入(入站)或者传出(出站)数据的载体,它可以被打开或者被关闭,连接或者断开连接

 

  • 回调

一个回调其实就是一个方法,一个指向已经被提供给另外一个方法的方法的引用。这使得后

者可以在适当的时候调用前者

  • Future

Future 提供了另一种在操作完成时通知应用程序的方式。这个对象可以看作是一个异步操

作的结果的占位符;它将在未来的某个时刻完成,并提供对其结果的访问

  • 事件和 ChannelHandler

出站、入站操作会触发一系列事件,每个事件都可以被分发给 ChannelHandler 类中的某个实现的方法

 

附: 可以认为ChannelHanlder的实例都类似于一种为了响应特定事件而被执行的回调

 

Netty 的组件和设计

  • Channel接口

Channel接口封装了socket,大大降低了直接使用socket类的复杂性,用以实现基本的I/O操作(bind、connect、read、write)

  • EventLoop接口

可以看做是一个线程,用以处理连接的生命周期中所发生的事件

  1. 一个 EventLoopGroup 包含一个或者多个 EventLoop
  2. 一个 EventLoop 在它的生命周期内只和一个 Thread 绑定
  3. 所有由 EventLoop 处理的 I/O 事件都将在它专有的 Thread 上被处理
  4. 一个 Channel 在它的生命周期内只注册于一个 EventLoop
  5. 一个 EventLoop 可能会被分配给一个或多个 Channel

注意,在这种设计中,一个给定 Channel 的 I/O 操作都是由相同的 Thread 执行的,实际上消除了对于同步的需要

 

  • ChannelFuture接口

Netty中所有的I/O操作都是异步的,一个操作可能不会立即返回,我们需要一种在之后的某个时间点确定其结果的方法.为此,Netty 提供了ChannelFuture 接口,其 addListener()方法注册了一个 ChannelFutureListener,以便在某个操作完成时(无论是否成功)得到通知

 

  • ChannelHandler接口

充当了所有处理入站和出站数据的应用程序逻辑的容器

 

  • ChannelPipeline

ChannelHanlder的容器

 

  • 编码器和解码器

网络数据总是一系列字节

 

  • 抽象类 SimpleChannelInboundHandler

最常见的情况是,你的应用程序会利用一个 ChannelHandler 来接收解码消息,并对该数据应用业务逻辑。要创建一个这样的 ChannelHandler,你只需要扩展基类 SimpleChannelInboundHandler<T>其中 T 是你要处理的消息的 Java 类型。在这个 ChannelHandler 中,

你将需要重写基类的一个或者多个方法,并且获取一个到 ChannelHandlerContext 的引用,

这个引用将作为输入参数传递给 ChannelHandler 的所有方法

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值