闯荡Linux帝国:nginx的创业故事

软件发布|下载排行|最新软件

当前位置:首页IT学院IT技术

闯荡Linux帝国:nginx的创业故事

轩辕之风   2020-01-02 我要评论

前情回顾:

NextStep帝国推出的web服务,迅速风靡比特宇宙,各星系帝国均蠢蠢欲动,想在这一波浪潮中掘一桶金。

详情参见:万维网的诞生

 

初出茅庐

小马哥和他的小伙伴小黑、大黄来到陌生的Linux帝国,准备在这里闯出一片天地。

不久,他们成立了一家Web服务器公司,小黑负责网络接待,进来的客户交给大黄,大黄负责处理请求,读取HTML文件交给客户,小马哥当总管,开始了他们的创业之旅。
虽然人少,但大家分工合作,齐心协力,小公司也还是慢慢走上正轨。

 

fork分身术

公司的发展出乎他们的意料,浏览网页的请求越来越多,小黑开始抱怨大黄处理太慢。大黄也很无奈,明明自己已经很努力了。小黑催的紧,一着急数据处理错误,把整个进程都搞崩溃了。

晚上的总结会上,小黑表达了不满:大黄你还得加把劲啊,你看我这队列里都接待了这么多客户进来,他们都等着你办业务,你也太慢了。而且忙起来也不能乱啊,把进程搞崩溃,这不是连累大家嘛!

大黄心里委屈,可是今天确实因为自己把进程搞崩溃了,连累大家。面对小黑的数落,只好默不作声。

 

 

小马哥看在眼里,打破沉默:这事不能怪大黄,业务量大了,他一个人忙不过来。我听说Linux帝国有一个fork大法,大黄你从小黑那里拿到请求后就使用fork大法,去一个单独的进程的处理这个请求吧。

 

大黄抬起头来:fork不是叉子的意思吗,fork大法是什么?

小马哥:我也了解不太多,听说这叫分身术,执行fork可以把当前进程复制一份。

大黄听得迷迷糊糊:这么神奇?

小马哥:听行业巨头Apache公司的人说的,他们就是用的fork大法,你去研究下。

第三天,大家按照新的办法来运行,果然见效,小黑接进来的客户,大黄马上就拿过来执行fork,产生一个分身,在新的进程中处理。仿佛长了三头六臂,效率高了不少,即便偶尔还会处理出错,也只是把那个独立进程弄崩溃,主进程还是稳稳当当运转,不影响业务。

 

惊群效应

就这样过了一段时间,小马哥注意到大黄每次都要去磁盘读取网页文件,费时费力,于是召开公司会议,宣布了两项决定:

1、调小黑去成立新的缓存管理部门,原来小黑负责的网络接待工作交给大黄一起做。

2、提前执行fork,分身出几个进程准备着,而不在客户来临时才执行分身。

很快,大黄接过原来小黑的活,开始独挑大梁。

 

不过新的麻烦又来了!刚工作半天,大黄又来到小马哥办公室。

大黄:马哥,这网络接待这活不好干啊,以前是小黑一个人处理,接待完我来服务,没啥问题。但现在换我来接待,我有多个分身,每个分身都在执行accept函数等客户来,结果就是每来一个客户,所有分身都来接待,实际只有一个接待成功,其他几个分身白跑一趟,浪费表情!

 

小马哥:唉,你看我这脑袋,忘了叮嘱你了。前几天去Apache公司技术交流时提到过这事,这是Linux帝国的缺陷,叫惊群效应,已经有好几家公司联名向帝国反映了。目前没有什么好的办法,你在执行accept前加一把锁来同步你的多个分身进程吧!

大黄:嗯,也只好这样了,帝国要是出了新政修复这个问题,记得告诉我声哈!

多路复用

随着公司业务的快速发展,大黄的工作压力也越来越大,虽然fork多进程可以多派人手,但这一招也不是包治百病,毕竟帝国资源有限,进程多了以后频繁的线程切换,大量的时间花在线程调度上,大黄真正处理业务的时间反而变少了。

 

小马哥看到了大黄的窘迫,找到大黄说:你看,现在业务很多,你分身出来的这些进程,却有好多都是闲着的,这不浪费资源吗?

 

大黄:这没办法啊,这些进程接待上一个客户还没接待完呢,客户没有断开连接,只能继续等着,等他下一步的请求。

小马哥:这就是明显的人力浪费嘛,新的客户来了没办法接待,而你却还在干等着,这不行。

大黄:额,这个······

小马哥:我听隔壁Apache的员工说他们用一个叫select的多路复用技术,不用干等着,有消息会自动通知你们来处理,你们就可以腾出手来处理其他客户的请求了。

大黄:好的,我去研究下。

 

 

又过了几天后。。。

 

大黄:马哥,我研究了下那个select多路复用,确实不错,但是有个缺点,当我添加了多个需要关注的客户后,有消息来了的时候,select它不告诉我到底是哪个客户来请求了,我还得一个个检查,客户多了,浪费太多时间。

小马哥:那还是比你干等着不能接待其他客户强吧,先用起来,别挑了。

大黄:马哥别急,我还从Apache公司打听到,他们还在用一个叫epoll的多路复用技术,这个比select好多了,它不仅告诉我有消息来了,还告诉我哪些客户有消息,不用我去一个个检查,省事!

小马哥:你小子还给我藏一手,既然这么好,赶紧用起来。

 

很快,大黄用上了新的技术,处理起网络请求效率成倍提高,工作越发的得心应手。

公司的业务也是发展迅速,公司规模不断扩张,招了不少新人,连隔壁Apache公司都眼红了起来。

这天,小马哥召集大家开会,宣布了一项决定:公司发展迅猛,为了公司的品牌形象,决定起一个响亮的名字,我已经想好了,就叫nginx。


未完待续·······

 

彩蛋

一天,小马哥的办公司来了一位美女。

“马总你好,我叫小雪,是tomcat公司市场部的,现在动态网页技术这么火,贵司不考虑拓展下业务吗?”

“动态网页技术?这是什么东西”

欲知后事如何,请关注后续精彩......

 

精彩回顾:

我是一个explorer的线程

我是一个杀毒软件线程

我是一个IE浏览器线程

比特宇宙-TCP/IP的诞生

产品vs程序员:你知道www是怎么来的吗?

我是一个流氓软件线程

远去的传说:安全软件群雄混战史

一个HTTP数据包的奇幻之旅

Copyright 2022 版权所有 软件发布 访问手机版

声明:所有软件和文章来自软件开发商或者作者 如有异议 请与本站联系 联系我们