高并发系统
![3f16df83b022390e21db29b81772713e.png](https://i-blog.csdnimg.cn/blog_migrate/b7a25c5b47687aa0b84cce8eaea39430.jpeg)
高并发 High Concurrency,指系统在同一时间需要处理很多请求。一般有一些常用的指标,对高并发进行量化。
- 响应时间(Response Time)
系统对请求做出响应的时间,例如系统处理一个DB的查询需要300ms,这个300ms就是系统的响应时间。
- 吞吐量(Throughput)
单位时间内系统可以处理的请求数量。
- 每秒查询率QPS(Query Per Second)
每秒可以响应的请求数量,对互联网系统来说,这个指标和吞吐量并没有明显的区分。
- 并发用户数
可以同时承载正常使用系统功能的用户数量。例如QQ聊天软件的同时在线量,一定程度上就代表了系统的并发用户数。
高并发的通用解决方案
举一个还算恰当的例子,高并发有点像洪水水患,在抵御洪水方面,我们的先人有三个不同的思路。
大禹治水:拓宽河道,让水流更加顺畅;
都江堰:用引流的方式,把水分流到各个支流中,以分担水流压力;
葛洲坝:通过建造水库将水先存储起来,然后再把水缓缓的排出去,提高下游的御洪能力
面对高并发系统的大流量时,也会像抵御洪水一样采取类似的方案,总结起来常规的通用解决方案有三个:
- 横向扩展
横向扩展是一种分而治之的设计方法,采用分布式的方式把系统请求量进行分开,让每一个服务节点都可以承担一部分并发和流量。
- 缓存
当应用需要支撑更多的并发量时,意味着应用服务器或数据库服务器所做的计算也越来越多。缓存可以提高系统的性能,每个环节的请求可以从缓存中直接获取目标数据并返回,减少计算量,有效提升响应速度。
- 异步
异步可以让某些场景下,未处理完成的请求先返回,在数据准备好之后再通知请求方,这样可以在同样的时间内处理更多的请求。