0
  1. nginx里有limit_conn和limit_req模块.
  2. laravel框架里有限流中间件 throttle.
  3. 还可以自己写算法实现.
  4. 其它各种限流方式

这些有什么区别吗? 怎样选用呢?

jinz 62
2019-09-11 提问
4 个回答
2

越前沿的方案,越有效,可以最大限度的减少服务器开支,但是缺点就是距离业务太远,以至于无法由业务来进行调配。

比如,通过 Nginx 进行限制,那么就会在 Nginx 层对流量进行限制,不会把请求交给 fpm ,节约了 fpm 资源。

而通过 php 代码去限制,这时候请求已经是交给 fpm 处理了,也更加贴近任务,可由业务去自由调配限度等,但是这里还是浪费了资源。

当然,大部分情况下这种限流的主要目的都是为 数据库 减轻压力。

2
  1. nginx是协议级别的限流,优点是配置简单,不需要编码,效果最好,缺点是无法根据业务来处理,但是
  2. 进入到PHP代码级别后可以基于业务限流,优点是可定制型强,缺点么,压力已经到PHP上面了。

生产环境下一般用nginx对每个IP每分钟或者每秒做个统一限流,防止恶意请求,此外,部分接口可以使用PHP来针对性限流

0

现在高并发场景基本不做限流了,上了防火墙拦截攻击后,所有流量都收。
负载均衡,CDN,分布式搞起来还怕带不动吗?

0

限流方式很多,不同公司有不同的做法。
1.在网关做,利用布隆过滤器实现
2.在 nginx 层做,利用nginx limit_conn和limit_req模块,或者nginx +实现
3.代码层做,比如php 本身实现限流

如果在代码层做,其实流量已经进来了,服务器压力还是有的,但是它可以自定义对某些接口自由配置限流,现在一般在Nginx 层或者网关做的会比较多

撰写答案

推广链接