博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Netty笔记(二)主要类的概念
阅读量:6683 次
发布时间:2019-06-25

本文共 1752 字,大约阅读时间需要 5 分钟。

  hot3.png

    netty 是一个一基于NIO跟事件模型驱动和Pipes And Filter的框架。运行时的几个主要的类:

    # Bootstarp 、ServerBootstarp

    # EventLoop

    # EventLoopGroup

    # ChannelPipeline

    # Channel

    # Futrue、ChannelFuture

    # ChannelInitializer

    # ChannelHandler

    在netty运行时,他们结合在一起,加上自己扩展的相关部件,构成了我们的应用。

# Bootstarp 、ServerBootstarp

    我们的应用起动,需要"引导程序",bootstarp进行配置我们需要的组件。

    使用Bootrstarp,指定host,跟port 建立客户端连接。

    使用ServerBootstrap , 绑定端口,建立服务。

    Bootstarp.connect() 跟ServerBootstarp.bind() 成功后,便建立了Channel, 他的生命周期由ChanelFture引用。

    Bootrstarp跟ServerBootstarp都使用了EventLoopGroup, 但两者数量不同。

    Bootrstarp只使用一个EventLoopGroup,而ServerBootstarp使用了两个,区别在于:

    ServerBootstarp使用两个EvenLoopGroup,一个用于accpect连接, 一个用于执行接收跟发送信息的处理;而Bootstarp只使用了一个EventLoopGroup,同时处理连接跟信息接收发送。

    ServerBootstart的EvenloopGroup运行:

# EventLoop、EventLoopGroup

   EventLoopGroup可以包含多个EventLoop,其是一个组合关系,每个EventLoopGroup,或EventLoop同时也是一个条执行线程。

关系:

运行过程:

    Bootstarp跟ServerBootstarp建立Channel后,EventLoopGroup贯穿的在整个Channel中,ServerBootstarp对于不同的客户端连接,会创建多个Channel , 多个Channel经常使用者同一个EventLoopGroup,应避免进行阻塞EventLoopGroup的操作。

#Channel、ChannelPipeline:

    Channel 实际包含了一种协议的通道,由Bootstarp配置,如NioSocketChannel;并且将通道读取IO,跟写IO等操作,包装成了EventLoop,嵌入到EventLoopGroup。Channel在事件触发时经过管道ChannelPipeline,组装多个Handler运行按顺序执行,并委托处理相关事件。

#ChannelHandler

在管道中执行:

在管道中执行

InboundHandler ->  Head到Tail

outboundHandler -> Tail 到 Head

几个Adapter

   - ChannelHandlerAdapter

   - ChannelInboundHandlerAdapter
   - ChannelOutboundHandlerAdapter
   - ChannelDuplexHandlerAdapter

#Futrue、ChannelFuture :

    ChannelFuture 扩展了 java.util.current.Futrue。并包装了一个Channel,Future模式下监控的该Channel的生命周期,同时可注册多个监听器,进行对应的操作。对于ServerBootstarp,进行bind()操作后返回的一个Server端的Channel。前面提到ServerBootstarp对于客户端连接创建的是对应客户端的Channel。

#ChannelInitializer

本身是一个ChannelHandler接口,Channel创建后,将Handler加入ChanelPipleline中执行。

转载于:https://my.oschina.net/XzhiF/blog/262625

你可能感兴趣的文章
OpenGL学习(七)纹理映射
查看>>
一些必不可少的Sublime Text 2插件
查看>>
测试项目
查看>>
第一章ASP.NET SignalR简介
查看>>
SSH
查看>>
41-50(UIApplication和delegate,UIApplicationMain,UIWindow,程序启动的完整过程,控制器view的延迟加载)...
查看>>
HTTP服务器实现
查看>>
2017.03
查看>>
未能加载文件或程序集“System.Data.SQLite”或它的某一个依赖项
查看>>
思科模拟器Packet Tracer的使用
查看>>
资产-服务器变更流程图
查看>>
linux文件特殊权限及文件的访问控制列表
查看>>
目录管理和文件管理
查看>>
广播事件的两种类型。
查看>>
cmd进入控制Mysql&出现乱码的问题
查看>>
POJ 2407 Relatives 题解《挑战程序设计竞赛》
查看>>
关于那些最好玩的户外APP合集下(适合资深驴友、牛逼设计狮、装逼攻城狮)...
查看>>
实现一个日期类
查看>>
mysql实时记录客户端提交的sql语句
查看>>
多线程学习笔记(五)
查看>>