请教各位一个问题,求解答:在php高并发中, 应该在什么地方做限流处理?

nginx里有limit_conn和limit_req模块.
laravel框架里有限流中间件throttle.
还可以自己写算法实现.
其它各种限流方式
这些有什么区别吗?怎样选用呢?
波斯汪
浏览 400回答 2
2回答

守候你守候我

限流方式很多,不同公司有不同的做法。1.在网关做,利用布隆过滤器实现2.在nginx层做,利用nginxlimit_conn和limit_req模块,或者nginx+实现3.代码层做,比如php本身实现限流如果在代码层做,其实流量已经进来了,服务器压力还是有的,但是它可以自定义对某些接口自由配置限流,现在一般在Nginx层或者网关做的会比较多

HUWWW

越前沿的方案,越有效,可以最大限度的减少服务器开支,但是缺点就是距离业务太远,以至于无法由业务来进行调配。比如,通过Nginx进行限制,那么就会在Nginx层对流量进行限制,不会把请求交给fpm,节约了fpm资源。而通过php代码去限制,这时候请求已经是交给fpm处理了,也更加贴近任务,可由业务去自由调配限度等,但是这里还是浪费了资源。当然,大部分情况下这种限流的主要目的都是为数据库减轻压力。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript