## 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实现负载均衡)