异步编程技术

如何提高Web服务端并发效率的异步编程技术

*爱你&永不变心* 提交于 2019-12-02 19:23:47
作为一名 web 工程师都希望自己做的 web 应用能被越来越多的人使用,如果我们所做的 web 应用随着用户的增多而宕机了,那么越来越多的人就会变得越来越少了,为了让我们的 web 应用能有更多人使用,我们就得提升 web 应用服务端的并发能力。那么我们如何做到这点了,根据现有的并发技术我们会有如下选择: 第一个做法:为每个客户端发送给服务端的请求都开启一个线程,等请求处理完毕后该线程就被销毁掉,这种做法很直观,但是在现代的 web 服务器里这种做法已经很少使用了,原因是新建一个线程,销毁一个线程的开销 (开销是指占用计算机系统资源例如: cpu 、内存等 )是很大的,它时常会大于实际处理请求本身的开销,因此这种方式不能充分利用计算机资源,提升并发的效率是有效的,要是还碰到线程安全的问题,使用到线程的锁机制,数据同步技术,并发提升就会受到更大的限制;除此之外,来一个请求就开启一个线程,对线程数量没有任何控制,这就会很容易导致计算机资源被用尽,对于 web 服务端的稳定性产生很大的威胁。 第二个做法:鉴于上面的问题,我们就产生了第二种提高服务端并发量的方法,首先我们不再是一个客户端请求过来就开启一个新线程,请求处理完毕就销毁线程,而是使用线程池技术。 线程池技术就是事先创建一批线程,这批线程被放入到一个池子里,在没有请求到达服务端时候,这些线程都是处于待命状态,当请求到达时候