-
Netty-12-Boostrap 客户端
引导客户端和无连接协议
Bootstrap 类被用于客户端或者使用了无连接协议的应用程序中。
表8-1 提供了该类的一个概览,其中许多方法都继承自AbstractBootstrap 类。
方法概览
Bootstrap group(EventLoopGroup) 设置用于处理Channel 所有事件的EventLoopGroup
Bootstrap channel(Class&...
2017-11-16 11:23:06 |
Netty
-
Netty-12-Boostrap 引导类 api
前言
算法=控制+逻辑
如果将控制可逻辑分开,那么代码的可维护性就会大幅度提升。
同理如果可以将配置与组件之间分开,就像汽车在生产的时候各个组件分开,最后统一组装,那么灵活性也会大幅度提升。
结构化
在深入地学习了ChannelPipeline、ChannelHandler 和EventLoop 之后,你接下来的问题可能是:
“如何将这些部分组织起来,成为一个可实际运行的应用程...
2017-11-16 11:23:06 |
Netty
-
Netty-11-EventLoop 之线程模型
知识准备
简单地说,线程模型指定了操作系统、编程语言、框架或者应用程序的上下文中的线程管理的关键方面。
显而易见地,如何以及何时创建线程将对应用程序代码的执行产生显著的影响,因此开发人员需要理解与不同模型相关的权衡。
无论是他们自己选择模型,还是通过采用某种编程语言或者框架隐式地获得它,这都是真实的。
在本章中,我们将详细地探讨Netty 的线程模型。
它强大但又易用,并且和Net...
2017-11-16 11:23:06 |
Netty
-
Netty-11-EventLoop 之任务调度实现
实现细节
这一节将更加详细地探讨Netty 的线程模型和任务调度实现的主要内容。
我们也将会提到需要注意的局限性,以及正在不断发展中的领域。
线程管理
Netty线程模型的卓越性能取决于对于当前执行的Thread的身份的确定它是否是分配给当前Channel以及它的EventLoop的那一个线程。
(回想一下EventLoop将负责处理一个Channel的整个生命周期内的所有事件。)...
2017-11-16 11:23:06 |
Netty
-
Netty-11-EventLoop 之任务调度
任务调度
偶尔,你将需要调度一个任务以便稍后(延迟)执行或者周期性地执行。
例如,你可能想要注册一个在客户端已经连接了 5 分钟之后触发的任务。
一个常见的用例是,发送心跳消息到远程节点,以检查连接是否仍然还活着。如果没有响应,你便知道可以关闭该Channel 了。
在接下来的几节中,我们将展示如何使用核心的Java API 和Netty 的EventLoop 来调度任务。
然后,...
2017-11-16 11:23:06 |
Netty
-
Netty-11-EventLoop 之接口 API
EventLoop 接口
运行任务来处理在连接的生命周期内发生的事件是任何网络框架的基本功能。
与之相应的编程上的构造通常被称为事件循环—一个 Netty 使用了 interface io.netty.channel.EventLoop 来适配的术语。
定义
Netty的EventLoop在继承了ScheduledExecutorService的同时,只定义了一个方法,parent(...
2017-11-16 11:23:06 |
Netty
-
Netty-10-资源管理
资源释放注意事项
需要释放的场景
ByteBuf 是Netty中主要用来数据byte[]的封装类,主要分为Heap ByteBuf 和 Direct ByteBuf。
为了减少内存的分配回收以及产生的内存碎片,Netty提供了PooledByteBufAllocator 用来分配可回收的ByteBuf,可以把PooledByteBufAllocator看做一个池子,需要的时候从里面获取...
2017-11-16 11:23:06 |
Netty
-
Netty-10-ChannelPipeline API
ChannelPipeline 接口
每一个新创建的Channel都将会被分配一个新的ChannelPipeline。这项关联是永久性的;Channel既不能附加另外一个ChannelPipeline,也不能分离当前的。
根据事件的起源,事件将会被ChannelInboundHandler或者ChannelOutboundHandler处理。随后,会调用ChannelHandlerCon...
2017-11-16 11:23:06 |
Netty