首页
下载应用
提交文章
关于我们
🔥 热搜 🔥
1
1
2
百度
3
习近平
4
1'"
5
今日热点
6
上海
7
@诉说趣闻
8
x博士
9
百度傻逼
10
@纽约时间
分类
社会
娱乐
国际
人权
科技
经济
其它
首页
下载应用
提交文章
关于我们
🔥
热搜
🔥
1
1
2
百度
3
习近平
4
1'"
5
今日热点
6
上海
7
@诉说趣闻
8
x博士
9
百度傻逼
10
@纽约时间
分类
社会
娱乐
国际
人权
科技
经济
其它
故意按摩让女生“产生欲望”后发生关系,算性侵吗?
炸大瓜!君子固穷豪刷阿哲,锤“姓氏哥”!VIC哥凌晨豪刷俊雅!
抖音兜底?阿哲爆瓜违约金!晒大量流量卡,回应官方推流!
舞帝一哥被封!谁也没面子!阿哲回应外界舆论,放话:真金白银谁敢干!
吃仇恨票?小天天甩脸,秒挂舞帝!阿哲太权威了,仙洋KS喊话!白冰0人抢福袋遭群嘲!
生成图片,分享到微信朋友圈
查看原文
其他
被一位粉丝嫌弃了
Original
码农翻身刘欣
码农翻身
2022-10-21
最近有个小伙伴问我:“刘哥,以你的技术能力,能写出一个Nginx吗?”
我笑了笑:“不能!”
他说:“Nginx的原理你不都知道了吗?网上那么多文章和书把源码也扒了个底朝天,我觉得我都能写出来,你怎么不能?”
我说:“你这是假设Nginx已经出现多年,Nginx的底层原理已经成为大路货,它的架构设计已经成为后端程序员津津乐道的话题,成为面试的必备项。”
“更关键的是,” 我补充道,“有现成的架构和源码作为参考,最难的部分已经迈过去了!”
“如果Nginx还没有出现呢?”
“假设你穿越到2002年,在俄罗斯的大型互联网公司Rambler工作,主要做Apache服务器的系统管理。
网站的流量很大,无论你如何折腾Apache,在蜂拥而至的请求面前,Apache都撑不住。
它那种使用一个进程来处理一个请求的方式根本无法解决C10K问题(处理至少10000个并发连接)。
你去Google搜索,但是网上也没有任何解决方案。
你可以向领导报告说这不可能,就此放弃,这也可能是绝大部分人的做法。
你也可以自己写个软件来解决C10K问题,这需要在黑暗中苦苦摸索,因为没有人知道方向,没有人可以给你指导。
解决方案行不行?这条路是不是死胡同?
能不能达到预想的扩展性?性能到底怎么样?稳定性怎么样?
一切都是未知数!
你觉得你能像Ngnix的作者Igor Sysoev那样实现Ngnix吗?”
小伙伴暂时不理我了,可能是嫌我啰嗦吧。
我想到了一个哥伦布的故事,给他发了过去。
“哥伦布发现了美洲大陆,回国后成为英雄,国内的贵族瞧不起他:这有什么稀罕的,只要坐船出海,谁都能发现那块儿地方。
在一次宴会上,又有人讥笑他了,哥伦布拿出一个生鸡蛋,问这个人:你能把这个鸡蛋立起来吗?
这个人试了很久也立不起来,沮丧地说这是不可能的事情。
哥伦布拿起鸡蛋的一头,在桌子上一磕,蛋壳破了,鸡蛋也立了起来。
那个人目瞪口呆,哑口无言了。”
小伙伴回复说:“你这从哪儿找到的野史啊..... 不过你想表达的意思我明白了,就是一个东西,看过别人怎么做,知道了底层原理和设计思路 vs 自己从零开始做,没人指导,不知道方向,不知道是不是死胡同,这是完全不同的。”
“对啊,如果说前者的难度是1, 后者的难度就是10 ,甚至100,1000。
你看到了Nginx的实现,觉得底层不就是epoll吗?
看到了Docker的实现,觉得不就是对namespace,cgroup之类的封装吗?有什么大不了的?
但是把你放在这些软件诞生之前,你大概率是想不到这些实现方式的。”
“嗯,有道理。” 小伙伴说。
我已经感觉到小伙伴已经开始敷衍我了,但是我好为人师的毛病已经让我刹不住车了!
“更有可能的是,你可能连它们要解决的问题都发现不了。 发现一个特定问题是一个分水岭。用创造性的,漂亮的方案解决这个问题是另外一个分水岭。”
“我们大部分人都在第一个分水岭前倒下了,发现不了问题,或者发现了问题而安于现状,最多到网上喷几句。”
“所以,Igor Sysoev是个非常了不起的程序员,他没有进行营销活动,但Ngnix还是凭借闪电般的速度,超强的稳定性,丰富的扩展性获得了全世界用户的青睐,它靠着口碑在互联网界扶摇直上,超越Apache成为新霸主。”
“有一次Igor Sysoev在一个会议上发表演讲,他刚说了一句:大家好,我是Nginx的作者,台下便爆发出如雷的掌声,经久不息。程序员活到这份上,真是值了。”
“哦,对了,不得不说,Nginx的成功也有一定的运气成分,Igor Sysoev正好在恰当的时间发现并解决这个问题,晚了就被别人抢先了......”
“Hello,还在吗 ......”
(完)
点击下方图片,查看更多精彩
您可能也对以下帖子感兴趣
{{{title}}}
文章有问题?点此查看未经处理的缓存