你好,我是yes。
之前看到一个提问:
多路复用一样会阻塞用户线程,那它和同步阻塞有什么区别?
我来简短的回答一下:
确实,对于监听用户请求的线程来说都会阻塞等待,不过成本不一样,同步阻塞模型是一个线程对一个用户,多路复用模型是一个线程对多个用户。
那之所以提出多路复用 IO 模型这个优化其实主要是利于服务端这边,服务本身需要考虑自身的承载压力、性能以及成本,它的目标就是用尽可能低的服务器成本 hold 住尽可能多的用户。
所以用一个线程 hold 住更多的用户,就是节省了服务端的成本。
如果把服务端比作一家公司,以前公司不出名,用户少,这时候招待客户都是专员VIP服务,一个专员对接一个用户,随叫随到。
这个专员就是监听的用户请求的线程,一直阻塞等待用户的请求。
而之后公司出名了,用户用来越多,如果还是保持专员VIP服务,那此时公司需要招更多的专员,这成本就大了(同时在线的线程就多了),并且这个专员的服务利用率也很低,因为好多用户一天没几个请求,让专员就这样等着,还要全额工资供着,极大的浪费,不利于企业的发展。
所以呢就想着搞了个多路复用,让一个专员服务多个用户,这样专员的利用率也高了,老板这工资给的也舒服了,用户呢其实感知不会很大,毕竟规划好的话,专员处理的效率还是很高的。
所以有什么区别?区别在于使得服务器资源充分利用,低成本以应对更多的用户。
因此还是老板舒服了。

我觉得公众号比较适合这样简短的文章,之后我打算挑一些小问题,避免长篇大论,来个简短回答系列。
我是yes,从一点点到亿点点,我们下篇见。
继续阅读
阅读原文