04-分布式之Netty编码解码框架解析-荀彧 netty-解答_第1页
04-分布式之Netty编码解码框架解析-荀彧 netty-解答_第2页
04-分布式之Netty编码解码框架解析-荀彧 netty-解答_第3页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1. (K32)如果客户端发送的数据不能修改(不带分隔符不带长度信息),而且多个数据源的长度也不一样,怎么办?可以使用LengthFieldPrepender添加一个长度字段(不需要改变客户端数据),然后使用LengthFieldBasedFrameDecoder拆包即可。2.一个serverbootstrap能否开启多个不同的NioServerSocketChannel(Handler不一样)不能够,一般一个ServerBootstrap上就注册一个NioServerSocketChannel。3、(L26)A:见上图;handler里面添加的是什么,bossgroup里面的handler照理说不是只有accept吗,这个也是要自己添加吗BossGroup注册的是NioServerSocketChannel,它也有一个自己的ChannelPipeline,里面可以添加不同的Handler,例如常见的日志处理Handler。另外,Netty框架会默认在该ChannelPipeline的最后添加一个BootstrapAcceptor Handler。B:见上图;childhandler里面比如要处理encode, decode, compute,是统一在ServerBootstrap里配置嘛?所有逻辑都实现为Handler,这些Handler都是在ServerBootstrap配置的。每个workgroup里面的NioSocketChannel里面都有encode、decode、compute,然后判断客户端请求过来的请求是什么类型的,而不是encode 的handler对应一个NioSocketChannel,decode的handler对应一个NioSocketChannel。NioSocketChannel表示一个TCP连接,从他上面接收数据,然后进行处理(encode, decode, compute)。可以比喻为,对每条水管里的水都进行处理(encode, decode, compute);而不是对第一条水管中的数据encode,对另一条水管中的数据decode。5、Selector发生空轮训之后,就会一直空轮训了吗,不能再处理队列里面的请求了吗(死循环?)? 重启为什么可以暂时解决这个问题。在NIO的selector中,即使是关注的select轮询事件的key为0的话,NIO照样不断的从select本应该阻塞的情况中wake up出来。它会导致Selector空轮询,最终导致CPU 100%。官方声称在JDK1.6版本的update18修复了该问题,但是直到JDK1.7版本该问题仍旧存在,只不过该BUG发生概率降低了一些而已。/bugdatabase/view_bug.do?bug_id=2147719重启为什么可以暂时解决这个问题。:Bug本身决定的,一般取换一个新Selector后,在一段时间内不会发生6、 答:共用一个Eventloop可以降低线程上下文切换开销。

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论