netty学习笔记(初步)

建议:netty大部分的理解问题都可以通过查询相应类的javadoc文档查到。netty的javadoc文档写的是图文并茂啊:-)

学习netty,需要搞清楚几个概念:

channel

channelpipeline

upstream,downstream

future

upstream,downstream:可以用下图帮助理解:

stream in channel

【引用于

Netty Tutorial Part 1: Introduction to Netty

by nickman

upstream event由channelUpstreamHandler处理,downstream event由channelDownstreamHandler处理,一般UpstreamHandler或DownstreamHandler的处理顺序由其加入channelPipeline的顺序决定,UpstreamHandler的加入不影响DownstreamHandler的加入顺序,如(从左至右依次加入channelPipeline):

UpstreamHandler0,DownstreamHandler0,UpstreamHandler1,DownstreamHandler1

Upstream event处理顺序:UpstreamHandler0,UpstreamHandler1

Downstream event处理顺序:DownstreamHandler1,DownstreamHandler0

之后应用时最好理解FrameDecoder和ReplayingDecoder,直接参考javadoc就足够了。

FrameDecoder可以通过不断重新调用decode方法解析需要的数据帧

而ReplayingDecoder则巧妙的使用exception返回的方式,简化问题,使得我们可以通过直接调用buffer的相应读取方法进行帧的解析。同时为了弥补性能上的损失,提供了状态转换的方式提高帧解析的效率。

---------------------------------------------------------------------------------------------------------------------------------

multichannel client解决方法:one channelFactory, many ClientBootstraps

只是用一个ChannelFactory进行资源的分配和管理,然后每个Channel的特殊配置则由ClientBootstrap确定。

相当于实现了connect(inetaddress,channelPipeline[特定的])这样的组合!!

ps:解决方案是直接在javadoc中的注释中看到的!!看来所有的问题都可以通过javadoc解决!

猜你喜欢

转载自x-goder.iteye.com/blog/1709628