一丶服务器压测工具:
①:ab压测工具 测试业务代码
②:sysbench mysql压测
③:redis-benchmark redis压测工具
redis-benchmark -h 127.0.0.1 -p 6379-c50 10000 -t get
redis-benchmark -h 127.0.0.1 -p 6379-c50 10000 -t set
redis-benchmark -h 127.0.0.1 -p 6379-c50 10000 -t -p
二丶服务器限流:
①:php+redis 数据库限流
$key = ‘qianzhui’.time(); //用时间戳作为键名 判断一秒内的请求量
g
e
t
=
C
a
c
h
e
:
:
i
n
c
(
get = Cache::inc(
get=Cache::inc(key); //相同键名的数据 值自增默认第一次为1
if($get<=500){
//执行数据库业务代码
}else{
return 0;
}
②:redis+lua+nginx
强烈推荐使用openresty,官网网址为:http://openresty.org/cn/ 手册:https://www.kancloud.cn/allanyu/openresty-best-practices/82569
三丶降级熔断
当访问量暴增的时候一些非核心功能代码会影响服务器性能。可以通过降级手段来缓解服务器压力
①人工降级:停用此功能或者静态化固定数据
②自动降级:微服务架构中需要服务与服务之间互相调用,此时利用中间件,让curl调用前先通过中间件(ufc),利用中间件注册中心设置并判断此服务超时次数 来实现自动熔断/降级
四丶抢购
策略:负载均衡丶消息队列丶页面静态化丶mysql集群丶redis集群丶kafka集群丶限流丶降级熔断丶系统评估 页面静态化或半静态化: ①用ajax请求库存api进行回显,其他页面静态化 ②nginx+lua+nginx 获取redis值 模板渲染在页面
抢购流程:请求抢购api->使用redis进行减库存->减一条就将一条放入队列/库存不足返回失败->队列来处理MYsql