Netty01—NIO,本文四万字教程带你入门netty,肝!连载中

Posted 传智教育官方博客

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Netty01—NIO,本文四万字教程带你入门netty,肝!连载中相关的知识,希望对你有一定的参考价值。

Netty01—nio,本文四万字教程,其他笔记连载中~


一. NIO 基础

non-blocking io 非阻塞 IO

1. 三大组件

1.1 Channel & Buffer

channel 有一点类似于 stream,它就是读写数据的双向通道,可以从 channel 将数据读入 buffer,也可以将 buffer 的数据写入 channel,而之前的 stream 要么是输入,要么是输出,channel 比 stream 更为底层

channel
buffer

常见的 Channel 有

  • FileChannel
  • DatagramChannel
  • SocketChannel
  • ServerSocketChannel

buffer 则用来缓冲读写数据,常见的 buffer 有

  • ByteBuffer
    • MappedByteBuffer
    • DirectByteBuffer
    • HeapByteBuffer
  • ShortBuffer
  • IntBuffer
  • LongBuffer
  • FloatBuffer
  • DoubleBuffer
  • CharBuffer

1.2 Selector

selector 单从字面意思不好理解,需要结合服务器的设计演化来理解它的用途

多线程版设计

多线程版
socket1
thread
socket2
thread
socket3
thread

⚠️ 多线程版缺点

  • 内存占用高
  • 线程上下文切换成本高
  • 只适合连接数少的场景

线程池版设计

线程池版
socket1
thread
socket2
thread
socket3
socket4

⚠️ 线程池版缺点

  • 阻塞模式下,线程仅能处理一个 socket 连接
  • 仅适合短连接场景

selector 版设计

selector 的作用就是配合一个线程来管理多个 channel,获取这些 channel 上发生的事件,这些 channel 工作在非阻塞模式下,不会让线程吊死在一个 channel 上。适合连接数特别多,但流量低的场景(low traffic)

以上是关于Netty01—NIO,本文四万字教程带你入门netty,肝!连载中的主要内容,如果未能解决你的问题,请参考以下文章

Hive从入门到精通,HQL硬核整理四万字,全面总结,附详细解析,赶紧收藏吧!!

四万字32图,Kafka知识体系保姆级教程宝典

最强最全面的Hive SQL开发指南,超四万字全面解析

最强最全面的Hive SQL开发指南,超四万字全面解析

最强最全面的Hive SQL开发指南,超四万字全面解析

四万字32图,Kafka知识体系保姆级教程宝典