Java游戏服务器系列:Netty重要组件

5 篇文章 0 订阅
2 篇文章 0 订阅
Channel
  • 1.通信过程中基本的I/O操作如:bind()、connect()、read()、write()等。都依赖与的曾网络传输所提供的原语,非框架下,操作都在Socket中实现
  • 2.Netty的Channel封装了这些底层原语的API,降低了直接使用Socket的复杂性
  • 3.每个链接进入之后,都会为其注册一个Channel,所有的I/O操作都在这个Channel中进行
EventLoop 和 EventLoopGroup
  • 1.服务器会维护一个EventLoopGroup
  • 2.一个EventLoopGroup包含一个或者多个EventLoop
  • 3.一个EventLoop生命周期内只会与一个线程绑定
  • 4.一个EventLoop可以被一个或者多个Channel绑定
  • 5.EventLoop就相当于一个处理区域,当有链接进入服务器时,EventLoopGroup会选择一个空闲的、可用的EventLoop去接受这个链接所在的Channel
  • 6.一台服务器能给EventLoopGroup注册多少个EventLoop,取决于服务器的配置,如核心数和内存
ChannelFuture
  • 1.Netty中所有链接的I/O操作都是异步的
  • 2.ChannelFuture是异步操作的结果的占位符
  • 3.ChannelFuture通过设置回调函数,来处理这个异步操作流程上的一些细节,比如成功的回调函数应该执行什么
  • 4.通过ChannelFuture设置的回调函数什么时候执行并不确定,确定的是肯定会被执行
ChannelHandler
  • 1.Netty中实现服务器逻辑的最重要组件
  • 2.内置了ChannelInboundHandler,继承或者重写这个类可以用于处理入站时的一系列操作,比如解码,逻辑处理,等等
  • 3.内置了ChannelOutbountHandler,继承或者重写这个类可以用于处理出站时的一系列操作,比如编码等等
  • 4.是的,通过上面两条你们可以发现,处理的函数可以并不是一种,Netty中采用了链式操作的方法,可以一步步的将处理过的数据传到链的下个处理节点中,比如将网络I/O中读取的字节流进行解码,通常是解成一个Java对象,而后将这个对象交给下个逻辑处理点。
ChannelPipeline
  • 1.被成为Netty的大动脉
  • 2.上面所有的ChannelHandler都在这个对象中
  • 3.可以被认为是ChannelHandler的容器

通过以上几个组件的说明,我们可以发现,Netty的巧妙之处就是已经写好的一个处理的基本框架,而我们需要做的就是把每一步的具体实现逻辑注册进去,

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值