Python学习之路——进程与线程(1)——并行和并发、并发的解决方案

1.并发与并行的概念

(1)并行(parallel)

同时做某些事,可以互不干扰的同时做几件事

并行是解决并发的一种手段

举例:

高速公路的车道,双向4车道,所有车辆(数据)可以互不干扰地在自己车道上奔跑(传输)。

在同一时刻,几个车道上有车辆同时在跑,这就是并行

(2)并发(concurrency)

也是同时做某些事,但是强调一个时间段内有事情要处理

举例:

乡村公路一条车道,半幅路面出现个坑,交警指挥交通,众多车辆要在这段时间通过路面的时间,这就是并发

2.并发的解决方案

Python学习之路——进程与线程(1)——并行和并发、并发的解决方案

(同一时刻有很多数据涌向服务器)

(1)队列、缓冲区

Python学习之路——进程与线程(1)——并行和并发、并发的解决方案

(2)争抢

Python学习之路——进程与线程(1)——并行和并发、并发的解决方案

在操作系统中,内核的实现有时候是争抢式的

(3)预处理

Python学习之路——进程与线程(1)——并行和并发、并发的解决方案

搞清楚并发产生的原因

缓存是一种解决高并发的非常好的手段,这就是为什么大量使用缓存服务器的原因,但是缓存有它的问题:

雪崩效应:一个缓存服务器垮了,一大片缓存服务器垮了,正常服务器也会跨

(4)并行

Python学习之路——进程与线程(1)——并行和并发、并发的解决方案

并行一样需要队列,水平上并行,垂直上串行(队列)

并行并不一定能解决得很好,比如在一队上仍然排有很多数据

并行解决不了所有问题,到一定场景下,就得等待着谁,当用到一定程度的时候,并行就会变成串行

(5)提速

Python学习之路——进程与线程(1)——并行和并发、并发的解决方案

垂直提升有天花板

(6)消息中间件

Python学习之路——进程与线程(1)——并行和并发、并发的解决方案

在数据到达一定规模,消息中间件是一定要上的

在外面排队进行缓冲,在外面也可以并行

Python学习之路——进程与线程(1)——并行和并发、并发的解决方案

这个就近还不行,可以采用CDN(内容分发网络),推到宿舍门口,访问更快

用户怎么知道附近有服务,通过DNS调度