软件巨头卧谈会

深夜时分,忙碌了一天的机房里逐渐安静下来,几个软件巨头nginx, Tomcat, Redis, Node.js又开始夜谈了。 

nginx伸了一个懒腰:哎哟,今天可累死我了,高峰期我居然维持了上万个连接,人类可真会压榨我啊,就给我这么一台破机器! 

Tomcat :得了吧老弟,我知道你用的epoll很厉害, 但是你只是“维持”了连接而已,通过这些连接发过来的数据请求,你一个都不管,都分给我们Tomcat集群了,我们才是真苦逼啊!

Tomcat :唉,我也没法管啊,他们俩停下里休息,还不是遇到了耗时的操作住了!不等着怎么办啊, 我的机器CPU只有4个核心,同一时刻只能有4个线程仆人能执行,操作系统老大要对他们做轮换, 总得有人歇着, 要是有100个CPU核心就好了。 

Redis :别做梦了,怎么可能有100个核心 !  Tomcat 兄, 你看看我这里只有一个线程仆人在处理对缓存的读写请求,不也干得好好的, 你瞧瞧我这个仆人是怎么干活的,多勤快!

Tomcat :看到了吧,0x7954还得歇着喝茶。本质就是任务太耗时,阻塞住了, 还得用多个线程来处理!

Node.js 半天没吭声,这时候跳了出来 :Tomcat兄,此言差矣, 任务太耗时,也可以用单线程啊!你把它搞成异步的不就行了! 

Tomcat : 异步异步超级线程0x7954遇到了访问数据库的任务,很耗时,他不歇着还能怎么办bsp;

Node.js:简单啊,执行下一个任务!但是,在执行之前,要给0x7954安插一个回调函数,等到数据库返回数据了,通知0x7954执行这个回调函数,处理返回数据不就行了!

Tomcat :听起来不错啊,一个线程就把所有的事情做完了,还不用歇着 ! 

Node.js:是啊是啊,我一直就是这么干的,这就叫“单线程,非阻塞IO,事件循环”

Tomcat很羡慕这种方式,他又思考了一会儿,发现了问题。

Tomcat : 不对啊,如果想用单线程,那所有的I/O操作都必须是非阻塞的,如果有一个不是,那我唯一的仆人就没法去干别的事情了。

Node.js:嘿嘿,Tomcat兄台还是挺厉害的嘛,我会尽最大的努力使用非阻塞的方式来处理所有的I/O ,对于那些实在搞不定的 ,比如Linux文件I/O,DNS,CPU密集型的任务如加密,压缩等,嘿嘿,我就用个线程池! 

宇宙第一IDE到底是谁p>

Node.js :我只需要一个店小二

HTTP Server :一个差生的逆袭

我要穿越,干翻“烂语言”JavaScript

如何降低程序员的工资p>

程序员,你得选准跑路的时间!

两年,我学会了所有的编程语言!

一直CRUD,一直996,我烦透了,我要转型

字节码万岁!

上帝托梦给我说:一切皆文件

Javascript: 一个屌丝的逆袭

我是一个线程

TCP/IP之大明邮差

一个故事讲完Https

CPU 阿甘

软件巨头卧谈会

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2020年5月6日
下一篇 2020年5月6日

相关推荐