从网络IO看高性能框架
前言: 我是一名golang后端开发工程师,不是Java,也不是拍黄片,对,就是那个号称原生支持高并发的“够浪!”。那为什么go能支持高并发?原生支持高并发又是何解?跟着我,一起探讨一下所谓的高并发是怎么回事… 阅读本文你将收获: 知道框架高性能的根本原因 了解进程,线程切换开销在哪里 熟悉阻塞与非阻塞IO,同步与异步调用的区别 大纲: 讨论一个高性能框架甚至语言的时候,我们在讨论什么? 三大网络模型 阻塞IO+多进程 阻塞IO+多线程 非阻塞IO+IO多路复用 五种网络IO简介 网络IO的本质 如何区分阻塞IO和非阻塞IO 如何区分同步和异步 个人整理的网络IO思维导图 1.讨论一个高性能框架甚至语言的时候,我们在讨论什么 我相信大家肯定听过什么阻塞/非阻塞IO,同步/异步调用,我也尝试过死记概念,结果大家应该都有体会,过一阵子就忘记了。知其然而不知其所以然~然并卵。 大家在选择一门语言或者一个框架的时候肯定优先看他的性能,也就是并发量,例如常用的测试手段,就是用该语言或者框架写个http server服务器,对于http请求返回一个“hello,world!”,利用wrk进行压测,看看每分钟请求量最高能到多少,在4核8G的Ubuntu服务器上跑该http服务,利用wrk压测,gin框架每分钟能处理的请求量接近300W!这是相当优秀的! 前一阵子在go meet