- nginx里有limit_conn和limit_req模块.
- laravel框架里有限流中间件 throttle.
- 还可以自己写算法实现.
- 其它各种限流方式
这些有什么区别吗? 怎样选用呢?
这些有什么区别吗? 怎样选用呢?
越前沿的方案,越有效,可以最大限度的减少服务器开支,但是缺点就是距离业务太远,以至于无法由业务来进行调配。
比如,通过 Nginx 进行限制,那么就会在 Nginx 层对流量进行限制,不会把请求交给 fpm ,节约了 fpm 资源。
而通过 php 代码去限制,这时候请求已经是交给 fpm 处理了,也更加贴近任务,可由业务去自由调配限度等,但是这里还是浪费了资源。
当然,大部分情况下这种限流的主要目的都是为 数据库 减轻压力。
生产环境下一般用nginx对每个IP每分钟或者每秒做个统一限流,防止恶意请求,此外,部分接口可以使用PHP来针对性限流
15 回答8.4k 阅读
1 回答4k 阅读✓ 已解决
3 回答1.8k 阅读✓ 已解决
2 回答2.2k 阅读✓ 已解决
2 回答2.4k 阅读✓ 已解决
1 回答1.8k 阅读✓ 已解决
1 回答1.4k 阅读✓ 已解决
限流方式很多,不同公司有不同的做法。
1.在网关做,利用布隆过滤器实现
2.在 nginx 层做,利用nginx limit_conn和limit_req模块,或者nginx +实现
3.代码层做,比如php 本身实现限流
如果在代码层做,其实流量已经进来了,服务器压力还是有的,但是它可以自定义对某些接口自由配置限流,现在一般在Nginx 层或者网关做的会比较多