Python学习之路——进程与线程(1)——并行和并发、并发的解决方案
1.并发与并行的概念
(1)并行(parallel)
同时做某些事,可以互不干扰的同时做几件事
并行是解决并发的一种手段
举例:
高速公路的车道,双向4车道,所有车辆(数据)可以互不干扰地在自己车道上奔跑(传输)。
在同一时刻,几个车道上有车辆同时在跑,这就是并行
(2)并发(concurrency)
也是同时做某些事,但是强调一个时间段内有事情要处理
举例:
乡村公路一条车道,半幅路面出现个坑,交警指挥交通,众多车辆要在这段时间通过路面的时间,这就是并发
2.并发的解决方案
(同一时刻有很多数据涌向服务器)
(1)队列、缓冲区
(2)争抢
在操作系统中,内核的实现有时候是争抢式的
(3)预处理
搞清楚并发产生的原因
缓存是一种解决高并发的非常好的手段,这就是为什么大量使用缓存服务器的原因,但是缓存有它的问题:
雪崩效应:一个缓存服务器垮了,一大片缓存服务器垮了,正常服务器也会跨
(4)并行
并行一样需要队列,水平上并行,垂直上串行(队列)
并行并不一定能解决得很好,比如在一队上仍然排有很多数据
并行解决不了所有问题,到一定场景下,就得等待着谁,当用到一定程度的时候,并行就会变成串行
(5)提速
垂直提升有天花板
(6)消息中间件
在数据到达一定规模,消息中间件是一定要上的
在外面排队进行缓冲,在外面也可以并行
这个就近还不行,可以采用CDN(内容分发网络),推到宿舍门口,访问更快
用户怎么知道附近有服务,通过DNS调度