Netty-基础概念篇

轻松快速的开发协议服务器和客户端网络应用程序的NIO 框架,

  • 它大大简化了TCP 或者UDP服务器的网络编程,
  • 但是你仍然可以访问和使用底层的API,
  • Netty 只是对其进行了高层的抽象。
  • Netty 的简易和快速开发
  • 并不意味着由它开发的程序将失去可维护性或者存在性能问题

EventLoopGroup

  • 本身是一个线程池
    • 其中包含了自定义个数的NioEventLoop,
    • 每个NioEventLoop 是一个线程,
    • 并且每个NioEventLoop 里面持有自己的selector 选择器
  • Netty 之所以能提供高性能网络通讯,
    • 其中一个原因是因为它使用Reactor 线程模型
  • Netty
    • 客户端持有一个EventLoopGroup 用来处理网络IO操作,
    • 在服务器端持有两个EventLoopGroup,
      • 其中boss组是专门用来接收客户端发来的TCP 链接请求的,
      • worker组是专门用来具体处理完成三次握手的链接套接字的网络IO 请求的。

Channel 与 EventLoop 的关系

  • 每个Channel 只会关联一个NioEventLoop
  • 当Channel 是服务端通道NioServerSocketChannel 时候,
    • NioServerSocketChannel本身
      • 会被注册到boss EventLoopGroup 里面的
      • 某一个NioEventLoop 管理的selector 选择器上,
    • 而完成三次握手的链接套接字
      • 是被注册到了worker EventLoopGroup 里面的
      • 某一个NioEventLoop 管理的selector 选择器上;
  • 多个Channel 可以注册到
    • 同一个NioEventLoop管理的selector 选择器上

ChannelPipeline

  • Netty 中的ChannelPipeline 类似于Tomcat 容器中的Filter链,
    • 属于设计模式中的责任链模式,
    • 其中链上的每个节点就是一个ChannelHandler
    • 在netty 中每个Channel 有属于自己的ChannelPipeline,
      • 对从Channel 中读取或者要写入Channel 中的数据进行依次处理,

Netty 客户端底层与Java NIO 对应关系

  •  

 

 

 

 

 

转载于:https://my.oschina.net/u/3847203/blog/3064699

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值