从网络IO看高性能框架

本文通过探讨高性能框架背后的网络IO模型,揭示了不同IO模型如阻塞IO+多进程、非阻塞IO+IO多路复用在性能上的差异。文章深入浅出地讲解了网络IO的本质,区分了阻塞IO与非阻塞IO、同步与异步调用,并提供了个人整理的网络IO思维导图,帮助读者深入理解网络编程的关键概念。
摘要由CSDN通过智能技术生成

前言: 我是一名golang后端开发工程师,不是Java,也不是拍黄片,对,就是那个号称原生支持高并发的“够浪!”。那为什么go能支持高并发?原生支持高并发又是何解?跟着我,一起探讨一下所谓的高并发是怎么回事…

阅读本文你将收获:

  • 知道框架高性能的根本原因
  • 了解进程,线程切换开销在哪里
  • 熟悉阻塞与非阻塞IO,同步与异步调用的区别

大纲:

  1. 讨论一个高性能框架甚至语言的时候,我们在讨论什么?
  2. 三大网络模型
    • 阻塞IO+多进程
    • 阻塞IO+多线程
    • 非阻塞IO+IO多路复用
  3. 五种网络IO简介
  4. 网络IO的本质
  5. 如何区分阻塞IO和非阻塞IO
  6. 如何区分同步和异步
  7. 个人整理的网络IO思维导图

1.讨论一个高性能框架甚至语言的时候,我们在讨论什么

我相信大家肯定听过什么阻塞/非阻塞IO,同步/异步调用,我也尝试过死记概念,结果大家应该都有体会,过一阵子就忘记了。知其然而不知其所以然~然并卵。

大家在选择一门语言或者一个框架的时候肯定优先看他的性能,也就是并发量,例如常用的测试手段,就是用该语言或者框架写个http server服务器,对于http请求返回一个“hello,world!”,利用wrk进行压测,看看每分钟请求量最高能到多少,在4核8G的Ubuntu服务器上跑该http服务,利用wrk压测,gin框架每分钟能处理的请求量接近300W!这是相当优秀的!

前一阵子在go meet up深圳讨论语言性能的时候,有位老哥说同等业务与机器,PHP每秒请求量大概在300多,处理三万并发量的服务程序,go需要一台服务器,而PHP需要一百台。我当时非常震惊,为什么语言之间的差别这么大,是什么原因造成这个巨大的差别呢?我问Boss Lee(meet up讲师,一位技术大佬),他跟我说因为PHP是一个请求开一个进程处理,注意是进程而不是线程!

那为什么用进程处理请求会造成性能差别这么大,甚至到了一百台服务器的差别呢?(一百台服务器一年得上百万吧~)

经过我查阅资料,得出了是网络IO模

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值