一、什么是高并发
image.png高并发是互联网系统所面临的普通问题,也是系统架构时考虑的重要因素之一。
【并发与负载】是相对的两个词。
想实现高并发,就要提高系统负载能力。系统负载能力强了,自然可以处理高并发请求。
所以,实现高并发,本质就是提高系统的负载能力。
一般对于系统负载能力的评估参数有:响应时间 、吞吐量、每秒请求数QPS、并发用户数。
响应时间:系统对请求做出响应的时间。例如系统处理一个HTTP请求需要200ms,这个200ms就是系统的响应时间。
吞吐量:单位时间内处理的请求数量。
QPS:每秒响应请求数,与吞吐量概念类似。
并发用户数:同时使用系统功能的用户数量。
二、如何提高并发处理能力(并发数)
需要说明的是:以下内容不考虑【带宽】和【硬件配置】这两个因素。
很显然,带宽高、硬件配置高,系统负载能力就强,能处理的并发用户数就多。
那么如何提高并发处理能力呢?
答案就是:通过优化系统架构来提高并发处理能力。
并且系统架构设计是一个复杂的过程,不仅涉及到技术层面,还包括业务层面。
三、通过业务拆分提高并发处理能力(微服务架构)
image.png将一个系统拆分为多个子系统,每个子系统负责一个单独的服务,这就是常说的【服务治理】
拆分为多个子系统后,每个子系统(服务)独立运行,每个服务之间通过REST/RPC方式调用,用户也可以直接调用这些服务接口。
这种设计将大化小,这种架构也称为【微服务架构】。
举例:商城系统中,可拆分为【订单服务】【用户服务】【产品服务】等多个服务接口。
四、通过水平扩展提高并发处理能力
这一块要分开来讲。
-
前端部分
image.png
使用nginx反向代理软件提高并发处理量
nginx进行水平扩展:DNS轮询等 -
应用服务器部分
image.png
java中常见的应用服务器tomcat为例,它可以实现集群和负载均衡。集群配置成功后,相当于提供了一个“服务器池”,如果想要再提高处理能力,只需要向“池”中继续添加应用服务器即可。另外,集群也实现了系统高可用。
-
数据库层面
常见的分库分表,读写分离都是解决数据库压力大的方法之一。
数据库瓶颈是系统在运行中最先碰到、最常碰到的问题之一。
经常见到的问题就是磁盘IO高,导致处理缓慢。
刚才所说方法都可以解决这一问题。
常见的分表原则有:按范围分,按哈希值分。 -
缓存层面
image.png
在系统中添加缓存是当前必选的方案。
添加缓存的主要目标是减少磁盘IO。
可以缓存的内容很多,例如缓存页面内容(HTML,CSS,图片),缓存应用服务器中数据对象等。
通过设计多级缓存,实现数据的快速获取、请求的快速响应。
在分布式架构中,还要注意分布式缓存的更新一致性问题。(不再详述)
五、最后
其实很多系统的并发数都不到百万级,只有少量头部网站才会有,例如淘宝。
但我们之所以研究如何解决百万级并发架构,是从中学会和掌握【系统架构演变过程】。
系统架构设计的原则是:适合的就是最好的。不能刚开始架构就要满足百万级,因为这样设计会提高成本,造成资源浪费。
所以,我们要明白:系统架构是演进的。
转载自https://blog.csdn.net/daocaokafei/article/details/115410761
网友评论