高并发解决方案

高并发解决方案案例

  流量优化:防盗链处理

  前端优化:减少HTTP请求,合并css或js,添加异步请求,启用浏览器缓存和文件压缩,CDN加速,建立独立图片服务器,

  服务端优化:页面静态化,并发处理,队列处理

  数据库优化:数据库缓存,分库分表,分区操作,读写分离,负载均衡

  web服务器优化:负载均衡,nginx反向代理,7,4层LVS软件

1. 硬件选型。

部署什么服务

磁盘选型: 阿里云   选什么磁盘IOPS 磁盘响应速度  ESSD autoPL > ssd > essd > 高效云盘

内存和cpu比例选型,普通1:2,缓存1:4

 

 

 CPU从32位提升为64位

• 内存从64GB提升为256GB(比如缓存服务器);

• 磁盘从HDD(Hard Disk Drive)提升为SSD(固态硬盘(Solid State Drives)),有大量读写的应用

• 磁盘扩容,1TB扩展到2TB,比如文件系统

• 千兆网卡提升为万兆网卡

但是不管怎么提升硬件性能,硬件性能的提升不可能永无止尽,所以最终还是要靠分布式解决。

硬件机房:

raid  0  1  10  5

 

2. CDN 分散本地业务压力。

 

2. 负载均衡

均衡负载(如:nginx  优化,阿里云SLB)

 squid

2. 缓存

数据库缓存   redis 缓存  redis集群

keyspace_misses/keyspace_hits这两个指标用来统计缓存的命令率,keyspace_misses指未命中次数,keyspace_hits表示命中次数。keyspace_hits/(keyspace_hits+keyspace_misses)就是缓存命中率。视情况而定,建议0.9以上,即缓存命中率要超过90%。如果缓存命中率过低,那么要排查对缓存的用法是否有问题!
 
3. 消息队列MQ  KAFKA 
 队列数量
 
 
4. 业务拆分  微服务。
系统拆分,将一个系统拆分为多个子系统。然后每个系统连一个数据库,这样本来就一个库,现在多个数据库,这样就可以抗高并发。

在面对调用链路中不稳定的资源如何保证高可用?在微服务中一个服务通常会调用其他的模块,可能是服务内的某个应用也有可能是另外的一个远程服务,数据库或者其他API调用。比如我们在支付的时候会调用(某付宝、某信、某联)提供的API,在查询订单我们会调用数据库连接,这些依赖的服务有可能会存在系统不稳定的情况,如果依赖的服务出现了不稳定的情况,请求响应时间过长,线程资源产生堆积,可能最终会耗尽服务的资源,导致服务变的不可用,这个时候 熔断降级 是保证服务高可用的重要措施之一。

 

 

 服务动态扩容:HPA     和 VPA
 
5. 数据库: 慢日志监控
主从分离,集群  
分库分表
DBA 表优化,索引优化,等
慢日志关注。
 
 

  对之前生产中使用过的MySQL数据库监控指标做个小结。

 指标分类 指标名称 指标说明
性能类指标 QPS 数据库每秒处理的请求数量
TPS 数据库每秒处理的事务数量
并发数 数据库实例当前并行处理的会话数量
连接数 连接到数据库会话的数量
缓存命中率 查询命中缓存的比例
高可用指标 可用性 数据库是否可以正常对外服务
阻塞 当前阻塞的会话数
慢查询 慢查询情况
主从延迟 主从延迟时间
主从状态 主从链路是否正常
死锁 查看死锁信息

 

posted @   滴滴滴  阅读(257)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性
历史上的今天:
2018-08-10 linux实现防止恶意扫描 PortSentry
2018-08-10 yarn 用户导致的被挖矿 启用Kerberos认证功能,禁止匿名访问修改8088端口
点击右上角即可分享
微信分享提示