Netty

作者: TylooChunxia | 来源:发表于2019-03-29 14:28 被阅读30次

    线程模型


    1.概述 主从Reactor模式 一个BossEventGroup默认含有一个EvnetLoop对应一个线程 通过selector获得客户端的注册事件后将获得的socketChannel注册到从WorkerEventGroup随机获取的一个EventLoop对应的selector上 由该EventLoop负责处理随后的IO事件

    组件


    1.Selector java的nio包提供 用于获取连接的socketChannel 可以支持一对多的情况 避免单线程IO阻塞的情况

    2.EventLoopGroup/EventLoop EventLoopGroup为EventLoop集合 EventLoop是线程的封装 内部持有一个selector实例用于管理多个socketChannel 一个TaskQueue和一个DelayedTaskQueue分别用于存放任务和延时任务

    3.ChannelPipeline 每个SocketChannel持有一个ChannelPipeline 在每个ChannelPipeline中持有一个ChannelHandler组成的链表 该链表有一个固定的head和tail节点进行特殊操作 自定义的ChannelHandler可实现ChannelInBoundHandler和ChannelOutBoundHandler用于在对应的SocketChannel收到/发送消息时对消息进行处理

    TCP粘包拆包


    1.概述 TCP协议根据缓冲区大小划分包上传至上层应用或者发送 因此将完整的包变得不完整

    2.解决方案 固定长度配合空格 特殊字符划分包 消息格式改为消息头和消息体其中消息头含有消息体的长度 Netty已经提供几个常见的粘包拆包器


    HashWheelTimer


    1.概述 底层结构基于DelayedQueue 原理每圈有固定长度和固定刻度 每过固定长度/固定刻度时间改变一次下标 对应下标任务执行

    相关文章

      网友评论

        本文标题:Netty

        本文链接:https://www.haomeiwen.com/subject/evjfuqtx.html