请教一下:理解网络 IO 有什么用?

2022-08-27 10:20:44 +08:00
 uiosun

面试有被问到网络 IO 的问题,这玩意儿到底有啥用处?(理解它的必要性、使用场景等)

网上的博客都在说细节,就把它当作八股文的一部分,我想知道一些实际的用途

2325 次点击
所在节点    问与答
19 条回复
kenneth104
2022-08-27 10:28:49 +08:00
网络 IO ,这话题感觉很大?
是特指 sockets 套接字么?
fengchen0vr
2022-08-27 10:29:00 +08:00
硬件方面,中断之类的会占用 cpu
软件方面,发包延时,队列
uiosun
2022-08-27 10:32:38 +08:00
@kenneth104 面试官就问我网络 IO ,没有特指……所以我也不知道到底是 socket 、eproll 或者啥了
documentzhangx66
2022-08-27 10:37:54 +08:00
既然面试官没特指,那你就给他上一课,从网络被发明时讲起嘛,然后讲到各种网络协议、现代网络结构、各种网络硬件与软件,等等。
kenneth104
2022-08-27 10:38:24 +08:00
是挺笼统的问题,尝试在你认知内回答就好。。感觉不用硬顶着回答
wellsc
2022-08-27 10:40:22 +08:00
有点反智了
ryd994
2022-08-27 10:53:04 +08:00
如果你不知道有啥用,那就没啥用。计算机是一门实践技术,要用什么学什么。
bigbyto
2022-08-27 11:11:47 +08:00
IO 是很多东西的基础,不理解的话也很难理解其他框架,容易人云亦云。

比如 tomcat 是如何操作 web request 的,你不理解 io 模型,就不理解为什么要那样设计。

还有 kafka 为什么性能那么高?就是因为 zero-copy 和顺序 io 以及充分利用了 page cache 等等。

这是个基础,别因为是八股文就排斥。之前写过一篇 io 的,自认为还可以,有兴趣可以参考一下。

https://wiyi.org/linux-io-model.html
bigbyto
2022-08-27 11:15:44 +08:00
再举个例子,tomcat 和 netty 一个是阻塞 io ,一个非阻塞(多路复用),让你去调整它们的线程池,不懂 io 的话,你就不知道怎么调,只能瞎蒙。
myd
2022-08-27 11:33:24 +08:00
线上系统偶尔会出现网络问题,不了解原理的话很难定位问题
darkengine
2022-08-27 11:59:22 +08:00
前端:大部分 UI 卡顿跟网络 IO 有关
后端:服务的并发、请求调度跟网络有关,随着分布式的发展,连存储都跟网络 IO 有关。

你说理解网络 IO 有啥用
Helsing
2022-08-27 12:05:35 +08:00
简单点说,网络 IO 设计的不好会影响网络吞吐量,进而影响访问速度,下游或用户就会发现服务访问慢,直接感受就是体验不好,最后就有可能导致用户流失。用户流失那钱就没了。
zzzkkk
2022-08-27 12:11:23 +08:00
@rd949
现在税后有 9 万刀吗
uiosun
2022-08-27 12:37:45 +08:00
@bigbyto 感谢,很专业很细节了!

排斥倒没有,因为我这个人属于兴趣导向型,如果觉得一个东西没用,就没啥动力去理解它的细节。
fkdtz
2022-08-27 12:44:20 +08:00
现如今的业务场景几乎没有只需要单机处理就能满足的,而且摩尔定律早已失效,提升单机性能已达极限,所以基本上都是分布式系统了。
网络 IO 之于分布式系统,就像文件 IO 之于单机系统。
利用 IO 的特点,发挥最佳性能,如果不理解 IO ,就没办法实现。
janus77
2022-08-27 12:51:50 +08:00
八股文确实是没用啊,不过是大部分基层工作没用,随着你技术的深入就会发现用处了。我也不知道他现在有什么用,但并不妨碍我继续学他
fox0001
2022-08-27 14:48:09 +08:00
1 )不知道你面试的什么工作和职位,很难判断。

2 )“网络 IO”这几个字很模糊,或者说范围大。或者问问面试官想要问什么?
Jooooooooo
2022-08-27 17:28:15 +08:00
redis 为什么是单线程的?
akira
2022-08-27 18:04:15 +08:00
对 CRUD boy 确实没啥用。 一个公司里面 有那么 2 个人会就行了。
大部分公司没人会也没啥事。。。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/875756

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX