网络IO 的发展演变过程

惊脉互联网求职
2025-01-10

在互联网中提起网络,我们都会避免不了讨论高并发、百万连接。而此处的百万连接的实现,脱离不了网络IO的选择,因此惊脉互联网求职为大家进行记录一下整个网络IO的发展演变过程。

网络 IO(输入 / 输出)在计算机网络的发展历程中经历了显著的演变。


一、早期,在计算机网络初步形成阶段,网络 IO 主要基于简单的阻塞式 IO 模型


在这种模型下,程序在进行 IO 操作(如读取网络数据)时会被阻塞,即暂停执行直到 IO 操作完成。这就像一个人在等待信件,必须一直守在邮箱旁边,直到信到来才能做其他事。这种方式简单直接,但效率很低,因为在等待 IO 的过程中,CPU 资源被闲置浪费。


二、随着网络应用的复杂程度增加,非阻塞式 IO 应运而生


它允许程序在发起 IO 操作后,不必等待操作完成就可以继续执行其他任务。就好像可以一边做别的事,一边偶尔查看一下邮箱有没有信件。不过,这需要程序不断地轮询检查 IO 操作是否完成,增加了程序的复杂性。


三、为了进一步提高效率,IO 多路复用模型出现了


它可以同时监视多个 IO 通道,比如一个服务器能够同时监听多个客户端连接的读写事件。这就好比一个邮递员可以同时查看多个邮箱,当有信件到达时能及时处理,大大提高了资源利用率和处理能力。像 select、poll 和 epoll(在 Linux 系统下)这些机制就是典型代表,其中 epoll 在处理大量并发连接时性能优势明显。

网络IO 的发展演变过程



四、异步 IO 模型将 IO 操作完全交给操作系统


IO 操作完成后,操作系统会通知应用程序这如同请了一个专业的秘书帮忙收信,收到后再通知自己,让程序能够更加专注于业务逻辑的处理,是网络 IO 发展的一个高级阶段,能够高效地处理高并发的网络任务。

分享
下一篇:这是最后一篇
上一篇:这是第一篇