## 1、高并发架构的相关概念
高并发概念:并发,高并发,通常是指并发访问。也就是在某个时间点,有多少个访问同时到来。
## 2、高并发的问题,我们集体该关心什么?
* qps:每秒钟请求或查询的数量,在互联网领域,指每秒响应请求数(http请求)
* 吞吐量:单位时间内处理的请求数量(通常由QPS与并发数决定)
* 响应时间,从请求发出到收到响应应花费的时间,列如系统处理一个http请求需要100ms,这个100ms激素hi系统的响应时间
* pv:综合浏览量,即页面浏览量或者是点击量,一个访客在24小时之内访问的页面的数量
* 同一个人浏览你的网站的同一页面,只记作一次pv
* uv:独立访客,即一定的时间范围内相同访客多次浏览网站,只计算为1个独立访客
* 带宽:计算带宽大小需要关注两个指标,峰值流量和页面的平均大小
* 日网站的带宽=pv/统计时间(换算为秒)*平均页面大小(单位kb)*8
* qps不等于并发连接数
* qps是每秒http请求数量,并发连接数是系统同时处理的请求数量
* 峰值每秒请求数(qps)=(总pv数*80%)/(6小时秒数*20%)
* 压力测试:测试能承受的最大的并发数,测试最大承受的qps值
* 测试工具:ab,wrk,http\_load
* ab:可以创建多个并发线程,模拟多个访问者同时对某一url地址进行访问。它的测试目标是基于url的,因此,它即可以用来测试apache的负载压力,耶可以测试
## 3、ab工具使用的时候的注意事项
* 测试机器与被测试的机器要分开
* 不要对线上的服务做压力测试
* 观察测试工具ab所在的机器以及被测试的前端机的cpu,内存,网络等都不超过最高限度的75%
## 4、不同qps下的解决方案
优化实例:
### a、qps达到100
假设关系型数据库的每次请求在0.01秒内完成
假设单页面只有一个sql查询,那么1000ps意味着1s内完成100次请求,但是此时我们并不能保证数据库查询能完成100次
方案:数据库缓存层,数据库的负载均衡
### qps达到800
假设我们使用百兆带宽,意味着网站出口的实际带宽是8M左右
假设每个页面只有10k,在这个并发条件下,百兆带宽已经吃完
方案:cdn加速,负载均衡
### qps达到1000
静态html缓存
qps达到2000
这个级别下。文件系统访问锁都成了灾难,
方案:做业务分离,分布式存储
## 5、高并发解决方案案列
流量优化:防盗链处理
前端优化:减少http请求,添加异步请求,启用浏览器缓存,文件压缩,cdn加速,建立独立的图片服务器
服务端优化:页面静态化,并发处理,队列处理
数据库优化:数据库缓存,分库分表,分区操作(可以使用工具完成),读写分离,负载均衡
web服务器优化:负载均衡(利用反向代理,lvs实现负载均衡)
- 一、cookie 和 session
- 二、版本控制软件
- 三、正则表达式
- 四、外部文件的导入
- 五、魔术方法
- 六、设计模式
- 七、高并发和大流量解决方案
- 八、empty、 isset、is_null的区别
- 九、如何进行防SQL注入
- 十、redis使用场景
- 十一、memcache和redis的区别
- 十二、MHA架构
- 十三、数据库外键约束
- 十四、负载均衡
- 十五、php常用函数
- 十六、Get和Post
- 十七、数组内置的排序方法
- 十八、CAP定理
- 十九、ip直连解决方案以及注册中心
- 二十、布隆过滤器
- 二十一、常用的消息队列
- 二十二、微服务
- 二十三、MySQL集群模式
- 二十四、轻松理解redis做缓存的流程
- 二十五、保证mysql和redis的双写一致性
- 二十六、redis
- 二十七、mysql基础
- 二十八、MySQL数据库优化
- 二十九、MySQL语句优化
- 三十、MySQL索引优化
- 三十一、MySQL查询优化
- 三十二、Mysql分区大全及讲解
- 三十三、MySQL数据库管理与应用
- 三十四、MySQL索引
- 三十五、php文件系统处理
- 三十六、Linux的常用命令和日常操作
- 三十七、Linux命令大全
- 其他
- 其它知识点
- 1、PHP写出显示客户端信息的代码
- 2、更多文章
- 3、雪花算法
- 4、令牌桶算法和漏桶算法