今天我在学习<netty in action>这本书. 前俩天照着书本写了个客户端和服务端的demo. 留下了几个问题:
Q1:netty服务端怎么构建?
Q2:netty客户端怎么构建? 好像使用了Bootstrap
Q3:netty服务端是如何将数据发送回客户端的,是如何定位到客户端的具体地址,看了下代码,好像用了Socket进行了网络传输,至于怎么传输给客户端的,这个问题还没找到答案. 看看第三部分(netty的组件和设计)能不能找到我的答案.
netty网络抽象的组件:
Channel - 通道,类似Socket
EventLoop - 本质好像是个ScheduledExecutorService, Channel, EventLoop,Thread, EventLoopGroup的关系是:
- 一个EventLoopGroup包含一个或多个EventLoop
- 一个EventLoop在他的生命周期内只和一个Thread绑定;
- 所有由EventLoop处理当IO事件,都将在它专有的Thread上被处理
- 一个Channel在它的生命周期内只和一个EventLoop绑定
- 一个EventLoop可能被分配给一个或多个Channel
注意:一个Channel所有的I/O操作都是由相同的Thread处理完成的,这种设计实际上消除了对于同步的需要(同一线程,不存在不一致问题).
ChannelFuture - 异步通知, netty里面所有的返回,都是异步的.通过addListener将结果通知给客户端.
执行应用程序处理逻辑的组件:
ChannelHandler - 应用程序处理业务逻辑
ChannelPipline - ChannelHandler责任链
引导类组件:
netty组件分类.png
网友评论