Netty—— 概念剖析(NIO vs BIO)

Posted 小志的博客

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Netty—— 概念剖析(NIO vs BIO)相关的知识,希望对你有一定的参考价值。

目录

一、tream 与 channel

  • stream 不会自动缓冲数据,channel 会利用系统提供的发送缓冲区、接收缓冲区(更为底层)。
  • stream 仅支持阻塞 API,channel 同时支持阻塞、非阻塞 API,网络 channel 可配合 selector 实现多路复用。
  • 二者均为全双工,即读写可以同时进行。
  • 当调用一次 channel.read 或 stream.read 后,会切换至操作系统内核态来完成真正数据读取,而读取又分为两个阶段,分别为:
    (1)、等待数据阶段
    (2)、复制数据阶段

二、 IO 模型

2.1、五种IO 模型

  • 同步阻塞。
  • 同步非阻塞。
  • 同步多路复用。
  • 异步阻塞。
  • 异步非阻塞。

2.2、同步与异步

  • 同步:线程自己去获取结果(一个线程)。
  • 异步:线程自己不去获取结果,而是由其它线程送结果(至少两个线程)。

2.3、IO 模型图解

  • 阻塞 IO

  • 非阻塞 IO

  • 多路复用

  • 异步 IO

  • 阻塞 IO vs 多路复用

以上是关于Netty—— 概念剖析(NIO vs BIO)的主要内容,如果未能解决你的问题,请参考以下文章

NIO高级编程与Netty入门

Netty—— 概念剖析(零拷贝)

Netty—— 概念剖析(零拷贝)

即时通讯开发之Netty入门长文:基本介绍环境搭建

BIO/NIO 线程模型以及高性能通讯框架 Netty Reactor 模型初探

Netty系列:基础篇 BIO-NIO-AIO