V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
uiosun
V2EX  ›  问与答

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

  •  
  •   uiosun · 2022-08-27 10:20:44 +08:00 · 2293 次点击
    这是一个创建于 579 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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

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

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

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

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

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

    2 )“网络 IO”这几个字很模糊,或者说范围大。或者问问面试官想要问什么?
    Jooooooooo
        18
    Jooooooooo  
       2022-08-27 17:28:15 +08:00
    redis 为什么是单线程的?
    akira
        19
    akira  
       2022-08-27 18:04:15 +08:00
    对 CRUD boy 确实没啥用。 一个公司里面 有那么 2 个人会就行了。
    大部分公司没人会也没啥事。。。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   971 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 20:22 · PVG 04:22 · LAX 13:22 · JFK 16:22
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.