关于限流秒杀
压测工具
[httpd-tools ab]
yum -y install httpd-tools ab -V
nginx
限流设置
1.按连接数限速,即并发数(ngx_http_limit_conn_module)
2.按请求速率限速,按照ip限制单位时间内的请求数(ngx_http_limit_req_module)
限流配置
1.创建规则[在http模块里创建]
//根据用户的ip地址为key限流,限流的速度是1个请求每秒,对应的名字是mylimit,分配了10m内存
limit_req_zone $binary_remote_addr zone=mylimit:10m rate=1r/s;
2.应用规则[在location模块里应用]
limit_req zone = mylimit burst=1 nodelay;
burst参数是给rate限制预留空间,比如rate是1r/s,设置burst之后,会保留多出来的请求让用户排队
nodelay是不让用户排队,瞬间处理
限流算法
1.令牌桶算法--->均速生成请求,然后令牌桶依次处理请求,没有请求返回503
2.漏桶算法--->把请求放进类似队列的里面,然后匀速处理请求,请求满了返回503
3.计数器
cdn原理
客户端请求过来之后先到cdn服务器,如果cdn服务器里没有才会返回到源站【回源】
遇到攻击cdn服务器会有效分散流量,
会根据用户所处不同地域来选择较近的服务器返回
秒杀方案
并发请求->扣库存->创建订单->支付
订单有时效,时间内不支付取消订单,恢复扣的库存