浅析并发与并行

并发和并行从宏观上来讲都是同时处理多路请求的概念。(同一时间点开始的)

并行与并发的区别:

1. 并行是指两个或者多个事件在同一时刻发生  并发是指两个或多个事件在同一时间间隔内发生。

2. 并行是在不同实体上的多个事件             并发是在同一实体上的多个事件。

3. 在一台处理器上“同时”处理多个任务             在多台处理器上同时处理多个任务(hadoop分布式集群)

 

并发的优点(最主要的目的):

并发可以将CPU的计算能力发挥到极致,性能得到提升

        因为并发是在同一实体(比如一个CPU)上,那么如果他串行(单线程)处理任务,当有多个任务向CPU请求执行时,CPU只能执行一个,这样CPU就会等待这个任务结束才会处理其他任务,利用率很低;而开启多线程并发执行时,多个线程就会进行切换去抢占CPU,CPU的空闲时间就会减少,从而提高处理性能。

 

并发的缺点:

并发程序之间有相互制约关系:

1.直接制约体现为一个程序需要另一个程序的计算结果;

         几个栗子:求平均值:

                  先求和,然后再算平均值两个任务,当求和这一项没有被执行的时候,即使cpu切换到求平均值这个进程上,也无法               执行这个进程,因为他现在需要,求和的进程执行的结果才可以进行运算执行。  

2.间接制约体现为多个程序竞争某一资源,如处理机、缓冲区等。

3.并发程序在执行中是走走停停,断续推进的。

       从并发的有点与缺点上就可以看出,并发解决了多个事件同时处理时效率低,性能低的问题;但如果只需要处理一个事件的时候,他的效率和性能并没有提高,也就没必要使用并发;那么如何提高对处理一个事件的效率和性能呢-----------并行。

     并行的提出解决了对一件事情的处理效率和性能低的问题:

并行以hadoop分布式集群的栗子来说明:

首先复习下这个:jar包提交运行在yarn上的执行流程:

1.用户提交jar包,向resourcemanager请求提交任务

2.resourcemanager接受任务,并随机选择一台nodemanager启动appmaster

3.appmaster向resourcemanager请求资源

4.resourcemanager分配资源,并将资源分配信息返回给appmaster

5.appmaster联系nodemanager启动相关Task

6.运行的task时刻向appmaster汇报进度

7.reduce task将执行结果返回给appmaster

8.appmaster将结果返回给resourcemanager,并注销自己

·

·

·

·

·

·

·

·

·

(不考虑数据倾斜,每台机器都会运行map和reduce,这样可以达到多台机器同时对一件事进行处理大大提高效率和性能)。

 

并行:

同一时刻可以处理多个任务 ;两个并行执行的任务如下图:

并发:

同一时刻只能处理一个任务,但一个时间段内可以对多个任务交替处理 ;两个并发执行的任务如下图 :

几个栗子

并行:相当于两个人给两个地方搬砖,因为他们是同时进行的。

并发:相当于一个人给两个地方搬砖,轮流给两个地方搬砖,因为他是交替进行的。

 

总结:

并发是两个任务可以在重叠的时间段内启动,运行和完成。

并行是任务在同一时间运行,例如,在多核处理器上。

并发是独立执行过程的组合,而并行是同时执行(可能相关的)计算。

并发是一次处理很多事情,并行是同时做很多事情。

猜你喜欢

转载自blog.csdn.net/superme_yong/article/details/83044138
今日推荐