Netty In Action 读书笔记 - 第九章 引导启动Netty应用

本章包括:
1、引导启动客户端和服务器;
2、在一个channel内引导启动客户端;
3、添加ChannelHandlers;
4、使用ChannelOptions及attr;

主要分析在Netty应用中的以下组件是如何协调共存的:
1、EventLoopGroup类型;
2、Channel类型;
3、设置ChannelOptions;
4、在Channel注册后会被调用的ChannelHandlers;
5、指明被添加到Channel的特殊属性;
6、设置本地和远端地址;
7、绑定本地端口或连接到服务器(视乎类型);

不同的引导启动类型
Netty包括两种引导启动类型。一个像服务器那样接受连接,并为每个连接创建“子”Channel。第二个像客户端那样不接收新的连接,且在“父”Channel中处理所有的事。
UDP有点不同,它是面向无连接的。换句话说,由于UDP传输的本质,没有必要像TCP一样为每个连接创建一个Channel,这意味着一个单独的Channel即可处理所有的数据,而不需要“父-子”Channel关系。


AbstractBootstrap实现了Clone able接口,因此通过对一个已经配置好的bootstrap进行深度克隆,将会返回一个可重用的副本,无需再次配置。注意Netty在克隆时,对bootstrap的EventLoopGroup仅做了一个影子拷贝,这表示EventLoopGroup将在所有的channels副本之间共享。

引导启动客户端和无连接协议
BootStrap类:


1、当调用bind()方法时,Bootstrap将创建一个新的Channel,随后就可以在channel上调用connection来建立连接;
2、当调用connection()方法时,Bootstrap将创建一个新的Channnel;
3、新创建的Channel;

EventLoop和EventLoopGroup
分配给Channel的EventLoop负责处理Channel中的所有操作,这说明任何时候在执行一个返回ChannelFuture的方法时,它将在被分配给这个Channel的EventLoop中被执行。
EventLoop被绑定到它的线程执行。
EventLoopGroup包括一组EventLoop,并负责在Channel注册过程中,分配一个EventLoop给它。

选择不兼容的channel实现将导致IllegalStateException。

使用ServerBootstrap引导启动Netty服务器
ServerBootstrap类:


1、当调用bind()方法时,Bootstrap将创建一个新的channel,一旦绑定成功,这个channel将负责接收连接并创建子channel;
2、接收新的连接请求并创建子channel,用于服务接收到的连接;
3、用于服务接收到的连接的channel;

在一个channel内引导启动客户端
有些场景下会需要在一个Channel内部引导启动另外一个客户端channel,如实现一个代理或从其它系统获取数据。

共享EventLoop的好处:
可以确保所有分配给EventLoop的Channels都使用相同的线程,记住EventLoop被分配给一个线程并由它执行EventLoop的操作。
因为使用了相同的线程,不需要上下文切换,因此开销更少。


1、Bootstrap在调用bind方法时创建新的channel,一旦bind成功,这个channel将接收子channel;
2、接收新的连接请求并创建子channel,用于服务被接收的连接;
3、服务被接收连接的channel;
4、channel创建Bootstrap,一旦它的connection方法被调用,一个新的channel将被创建;
5、新创建的channel连接到远端;
6、channel间共享的EventLoop;

添加ChannelHandlers
ChannelInitializer类,辅助添加ChannelHandlers到ChannelPipeline。

使用ChannelOptions及attr
Attributes类似ServletRequest。


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值