netty学习笔记(1)_一些核心概念

netty是一个非阻塞,事件驱动的网络框架。netty实际上是使用多线程处理io事件,对于熟悉多线程编程的人来说,可能会想到netty需要进行代码同步。但是这样的方式不好,因为同步会影响程序的性能,netty的设计者保证了程序处理事件不会有同步。

netty的EventLoopGroup包含一个或者多个EventLoop,而EventLoop就是一个Channel执行实际工作的线程。EventLoop总是绑定一个单一的线程,在其生命周期内不会改变。

当注册一个channel后,netty将这个channel绑定到一个EventLoop,在channel的生命周期内总是绑定到一个EventLoop。在netty IO操作中,程序不需要同步,因为一个指定通道的所有IO始终由同一个线程来执行。
但并不是说明一个EventLoop只能绑定一个channel.一个EventLoop可以执行多个channel.


Bootstrap用来在netty中配置程序,这个辅助类太重要了,把程序员从繁重的NIO操作中解放出来,提供了一个统一的模板式的操作。

当你需要连接服务端或服务端绑定指定端口时需要使用Bootstrap.客户端需要Bootstrap,服务端需要ServerBootstrap.
Bootstrap用来连接远程主机,有1个EventLoopGroup
ServerBootstrap用来绑定本地端口,有2个EventLoopGroup
一个ServerBootstrap可以认为有2个channels组,第一组包含一个单例ServerChannel,代表持有一个绑定了本地端口的socket(作用是接受客户端连接请求,然后注册到第二组EventLoopGroup上),第二组包含所有的channel,代表服务器已接受了的连接。我们知道,对于NIO来说,是要轮询的,轮询之前要先注册到多路复用器上,这个活就是由第一个EventLoopGroup干的。请看下图

==========================================

Handlers自身依赖于ChannelPipeline来决定它们执行的顺序。在很多地方,netty的ChannelHandler是你的应用程序中处理最多的。你的应用程序中至少有一个ChannelHandler的参与,换句话说,ChannelHandler对很多事情是关键的。我们可以理解为ChannelHandler是一段执行业务逻辑处理的代码,它们来来往往的通过ChannelPipeline。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值