并发和并行从宏观上来讲都是同时处理多路请求的概念。但并发和并行又有区别,并行是指两个或者多个事件在同一时刻发生;而并发是指两个或多个事件在同一时间间隔内发生。

在操作系统中,并发是指一个时间段中有几个程序都处于已启动运行到运行完毕之间,且这几个程序都是在同一个处理机上运行,但任一个时刻点上只有一个程序在处理机上运行。

①程序与计算不再一一对应,一个程序副本可以有多个计算
②并发程序之间有相互制约关系,直接制约体现为一个程序需要另一个程序的计算结果,间接制约体现为多个程序竞争某一资源,如处理机、缓冲区等。
③并发程序在执行中是走走停停,断续推进的。

在网络服务器上,并发是指同一时刻能处理的连接数,比如,服务器能建立1000个TCP连接,即服务器同时维护了1000个socket,这个服务器的并发量就是1000,但是服务器可能只有单核或者8核,16核等,总之对这1000个socket连接的处理也是分时来做的。每个socket服务器处理的时间如果是1s,那么该服务器1s内可以处理完1000个请求,如果每个socket处理100ms的话,那么该服务器1s内可以处理10000个请求。



在这里我们先抛出一些概念,如果这些概念都弄清楚了,并发和并行基本就清楚了。

会话:在我们用电脑工作时,打开的一个窗口或一个Web页面,我们可以把它叫做一个“会话”,扩展到web服务器上,要维护很多个用户的web页面访问,我们可以认为服务器管理了多个“会话”。

并发连接数:网站有时候报错:“HTTP Error 503. The service is unavailable”。但刷一两下又正常,估计很可能是超过网站的最大并发连接数了。并发连接指网络流量管理设备或代理服务器对其业务信息流的处理能力,是能够同时处理的点对点连接的最大数目,它反映出设备对多个连接的访问控制能力和连接状态跟踪能力,这个参数的大小直接影响到设备所能支持的最大信息点数。

并发可以理解为服务器最多维护多少个会话数,并行则不一样,它关系的是有多少个会话是在同时进行,假如有两台服务器(进程),可能并行的数量是2,而并发的数量是1000。