高并发解决方案

mac2025-07-11  3

并发的解决

1、队列、缓冲区

队列是天然解决高并发的手段之一,通常我们叫buffer,作用是解耦、缓冲。 例如:queue模块的类Queue、LifoQueue、PriorityQuueue(小顶堆实现,优先队列)

queue默认是先进先出,但它的问题是后面的任务是否能等到前面的任务完成。

优先队列 PriorityQueue

对于自己写的程序,如果你有大量的请求需要自己来解决,用队列将这些请求装起来,但是用户会等不及。这是竞争带来的。这些问题在处理的时候就有优先的问题了,比如说收费业务,VIP用户与普通用户,业务紧着VIP用户,并且普通用户在业务上还有一些限制。

在你处理的请求队列中有紧急任务,这时候需要使用优先队列,给任务加权重。

2、争抢

争抢也是一种高并发的解决方案,但是这样可能不好,因为有可能有些任务长时间抢不到。

一个程序抢占了资源,就锁定了资源,其他程序就不能被其他程序抢占。这是一种锁机制。

锁会降低性能。

3、预处理

高并发的关键在于这个请求在短时间内能不能响应。把大量的数据放在内存中,访问速度就可以极快,这时候就不叫buffer,叫cache。 在高并发的解决办法里,预处理是非常重要的解决办法,而预处理往往使用cache,缓存使用,key-vlaue结构,快速定位,比如Redis。

如果数据压力很大&#x

最新回复(0)