Netty学习
文章平均质量分 73
vonzhou
这个作者很懒,什么都没留下…
展开
-
ChannelHandler原理
1.创建ChannelPipeline的方法是实现接口 ChannelPipelineFactory 中的那个 getPipeline() 方法,然后根据自己的业务需要加入相应的 ChannelHandler。 2. 接口 ChannelHandlerContext 提供的功能是统一管理这些ChannelHandler,使其能够和这个ChannelPipelin原创 2014-06-24 10:28:25 · 2966 阅读 · 0 评论 -
Netty3 源码分析 - ChannelUpstreamHandler
Netty3 源码分析 - ChannelUpstreamHandlerChannelUpstreamHandler处理上行的通道事件,并且在流水线中传送事件。这个接口最常用的场景是拦截IO工作现场产生的事件,传输消息或者执行相关的业务逻辑。在大部分情况下,我们是使用SimpleChannelUpstreamHandler 来实现一个具体的upstream ha原创 2014-09-13 21:37:39 · 5218 阅读 · 0 评论 -
Netty3 源码分析 - ChannelFuture
Netty3 源码分析 - ChannelFutureChannelFuture抽象的是Channel中异步IO操作的结果。在Netty中,所有的IO操作是异步的,意味着任何IO调用会立刻返回,而不是等到操作真正的执行完成。相反,会返回一个ChannelFuture 对象,在IO完成之后通过其得到结果状态。ChannelFuture 要么完成要么未完成,当IO操作开始执行会创建一个新的原创 2014-09-13 20:30:49 · 2373 阅读 · 0 评论 -
Netty3 源码分析 - 套接字绑定实现原理
前面关注的地方都是Netty采用的流水线处理方式的组织方式,ChannelHandler如何管理,通道状态,通道事件等这些上层的架构设计,那么Netty中如何实现诸如套接字绑定,连接,关闭等这些底层的操作呢?不能只顾着套用API写程序,却对细节不求甚解。这里大致追踪下OIO模式下Channel中套接字绑定的实现,(NIO以后分析)其实逻辑都是一样的,只是在线程模型的地方时不同的。大致过程如下(原创 2014-09-12 16:38:15 · 1800 阅读 · 0 评论 -
Netty3 源码分析 - ChannelPipeline
ChannelPipeline的作用就是组织一系列的ChannelHandlers 为某一个Channel服务,处理各种事件。实现了拦截过滤器模式的高级形式(an advanced form of the Intercepting Filter pattern),进而有效控制如何处理一个事件以及ChannelHandlers之间如何交互。类型结构图为:流水线的创建:对于原创 2014-09-12 11:00:19 · 2075 阅读 · 0 评论 -
Netty3 源码分析 - OioClientSocketChannelFactory
是一个ClientSocketChannelFactory 的实现,基于SocketChannel的阻塞方式的客户端通道。使用的是传统的阻塞IO API,特点是能得到好的吞吐量和低延迟,当需要服务的连接数少的时候。(联系NIO和OIO的区别) 在OioClientSocketChannelFactory中只有一种线程类型,worker threads。每个连接的通道有一个专用的原创 2014-09-11 14:15:37 · 1916 阅读 · 0 评论 -
Netty3 源码分析 - ClientBootstrap
Bootstrap是通道初始化辅助类 提供了初始化通道或子通道所需要的数据结构,那么ClientBootstrap就是客户端的,而且会执行连接操作。配置通道,就是把相应的键值对选项传递给底层: ClientBootstrap b = ...; // Options for a new channel b.setOption("remoteAddress", new Inet原创 2014-09-11 18:59:14 · 4296 阅读 · 0 评论 -
Netty3 源码分析 - ChannelStateEvent
Netty3 源码分析 - ChannelStateEventChannelStateEvent是ChannelEvent的子接口,可以代表改变的通知或者是请求,取决于它是上行还是下行事件。UpstreamChannelStateEvent是默认的上行通道状态事件实现类。结合ChannelState中的表很容易看懂源码。DownstreamChannelStateEve原创 2014-09-10 16:56:31 · 1654 阅读 · 0 评论 -
Netty3 源码分析 - ChannelHandler
Netty3 源码分析 - ChannelHandler每个通道关联一个Pipeline,在流水线中拦截处理各种事件的对象就是ChannelHandler,它处理ChannelEvent而后进行传递。接口ChannelHandler没有提供任何方法,有两个子接口分别用来规范处理上行和下行的通道事件。ChannelHandler是随ChannelHandl原创 2014-09-10 10:17:06 · 3129 阅读 · 0 评论 -
Netty3 源码分析 - ChannelState
Netty3 源码分析 - ChannelState枚举类ChannelState代表的是这个Channel的状态集,状态的解读和ChannelStateEvent中的value值以及事件的方向息息相关,下面这个表可以从宏观上把握。DirectionStateValueMeaningUpst原创 2014-09-10 16:06:40 · 1263 阅读 · 0 评论 -
Netty3 源码分析 - ChannelEvent
Netty3 源码分析 - ChannelEvent ChannelEvent是和这个Channel相关的IO事件和请求,会由各个ChannelHandler来处理。 事件分为上行和下行两种。当服务器从客户端收到一个消息,那么与之相关的就是一个上行事件(upstream event),流水线中的UpstreamChannelHandler会处理它;如果服务要回应这个原创 2014-09-10 15:47:24 · 2191 阅读 · 0 评论 -
Netty3 源码分析 - Channel
Netty3 源码分析 - Channel何为通道(Channel)?代表的是一个网络套接字的连接点(nexus)。一个通道抽象的内容包括:1)当前通道状态,是否打开,是否绑定等;2)通道的配置参数信息,如套接字缓冲区大小;3)通道支持的IO操作;4)处理和这个Channel相关的IO事件和请求的ChannelPipeline。在Netty中所有的IO操原创 2014-09-09 15:58:16 · 2373 阅读 · 0 评论 -
Netty3 源码分析 - AbstractChannel
Netty3 源码分析 - AbstractChannelAbstractChannel 是Channel的部分实现,维护了一个通道相关的资源,如channel id, pipeline等;而且实现了对该套接字的IO操作,以及设置interestOps;这里还没有牵扯到底层的细节,只是这个框架的结构。(Channels中的具体实现有待分析)源码能说明一切:/原创 2014-09-09 18:27:57 · 1541 阅读 · 0 评论 -
Netty3 源码分析 - NIO server接受连接请求过程分析
Netty3 源码分析 - NIO server接受连接请求过程分析 当服务器端的server Channel绑定某个端口之后,就可以处理来自客户端的连接请求,而且在构建 NioServerSocketChannelFactory 的时候已经生成了对应的 BossPool 和 WorkerPool,前者管理的 NioServerBoss 就是专门用来接受客户端连接的Sele原创 2014-09-19 15:43:01 · 2583 阅读 · 0 评论 -
Netty实现时间服务示例
相关知识点:[1] ChannelGroup是一个容纳打开的通道实例的线程安全的集合,方便我们统一施加操作。所以在使用的过程中可以将一些相关的Channel归类为一个有意义的集合,关闭的通道会自动从集合中移除,而且一个Channel可以属于多个ChannelGroup。常见的应用场景是 向一组通道广播消息;简化一组通道的关闭流程。[2] 因为在Channel中流通的是Channel原创 2014-06-20 15:13:10 · 2706 阅读 · 0 评论 -
Netty入门实例及分析
1.客户端细节分析ChannelFactory是创建一个通道(和一次具体的通信实体关联如网络套接字)的主要接口,比如NioServerSocketChannelFactory 会创建一个Channel,有基于NIO的服务套接字作为底层的通信实体。一旦一个新的通道创建,那么对应的ChannelPipeline就会开始处理相关的ChannelEvents。 NioC原创 2014-06-19 10:21:11 · 5781 阅读 · 0 评论 -
Netty3 源码分析 - NIO server绑定过程分析
Netty3 源码分析 - NIO server绑定过程分析 一个框架封装的越好,越利于我们快速的coding,但是却掩盖了很多的细节和原理,但是源码能够揭示一切。服务器端代码在指定好ChannelFactory,设定好选项,而后Bootstrap.bind操作就会开启server,接受对端的连接。所以有必要对这后面的过程分析清楚,下图是关键流程。先是构建一个默认的Pipe原创 2014-09-17 19:57:32 · 1680 阅读 · 2 评论