您的位置:首页 > 其它

web服务的并发技术以及解决方案

2014-09-04 11:10 239 查看
一个百万级用户的系统的web服务必须通过特殊的技术处理才能满足需求。

一个关键的词汇叫做“并发”,这样可以非阻塞的同时处理多个用户请求。对于初级处理这种多用户请求的程序员最先用到的方法就是来一个请求,开一个线程,处理完之后销毁现成。的确这种做法可以处理类似与同时为多用户提供服务的需求,但是这种做法的效率太低了。原因是新开一个线程需要去请求系统资源,处理完业务之后释放线程又需要很多时间,这样一来很可能时间大部分浪费到了非业务处理的部分。在这种情况下,出现了“池”的概念。可以预先开一些数量的线程放到池里,用的时候直接去池里取就可以了,用完了 也不用释放放回池里供其他请求继续使用。这种方式解决了上一做法的效率问题。那么,应该开多少线程放进去呢?简单来说,根据需求动态调整池中的线程数量是最合理的。具体策略就不再赘述。

“线程池”解决了多用户处理的问题,然而对于web请求来说,效率的瓶颈不在于cpu的处理速度。相信学过《计算机组成原理》的同学,对于以下的倒三角形一定有印象。



cpu的梳理速度是一级缓存的数倍,二级缓存的数十倍,内存的数百倍,硬盘的数千万倍,网络IO的数亿。

于是就产生一个问题叫做NIO问题,而处理这个问题有效的方法也就是非阻塞是IO。下面介绍一些此方面的技术。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐