最近不少小伙伴们都在问我:高并发专题我学了不少文章了,但是如何设计一个高并发的系统我还是一脸懵逼!这个问题怎么解决呢?其实,相信不只是问我的这些小伙伴有这个困惑,就连工作(入坑)了好几年的开发人员也都有这样的困惑:我学习了很多的高并发课程,也看了不少的高大上的文章,可就是不知道怎么去设计一个支撑高并发大流量的系统。针对小伙伴们的疑惑,这里,我就把一些设计高并发大流量的常规思路分享给大家,不一定完全正确,设计高并发大流量系统本来就是一个仁者见仁、智者见智的事情,只要是符合自身业务场景的架构思路,都是好的架构思路,架构本身来说就是没有一个完全正确的架构,而是尽量符合当时自身的业务场景,并且能够良好的支撑业务的负载。
高并发架构相关概念
什么是并发?
并发是指并发的访问,也就是某个时间点,有多少个访问同时到来;
通常如果一个系统的日PV在千万以上,有可能是一个高并发的系统,这里需要注意的是:只是有可能是一个高并发的系统,不一定是一个高并发的系统。
并发数和QPS是不同的概念,一般说QPS会说多少并发用户下QPS,当QPS相同时,并发用户数越大,网站并发处理能力越好。当并发用户数过大时,会造成进程(线程)频繁切换,反正真正用于处理请求的时间变少,每秒能够处理的请求数反而变少,同时用户的请求等待时间也会变大。找到最佳线程数能够让web系统更稳定,效率更高。
并发数 = QPS*平均响应时间
高并发具体关心什么?
QPS: 每秒请求或查询的数量,在互联网领域,指每秒响应请求数;
吞吐量: 单位时间内处理的请求量(通常由QPS与并发数决定);
响应时间: 从请求发出到收到响应花费的时间,例如一个系统处理一个HTTP请求需要100ms,这个100ms就是系统的响应时间;
PV: 综合浏览量,即页面浏览量或者点击量,一个访客在24小时内访问的页面数量;
UV: 独立访客 ,即一定时间范围内相同访客多次访问网站,只计算为一个独立的访客;
带宽: 计算带宽大小需要关注两个指标,峰值流量和页面的平均大小 ;
日网站带宽可以使用下面的公式来粗略计算:
- 日网站带宽=pv/统计时间(换算到秒)*平均页面大小(单位kB)*8
