我们正计划为我们的基于休息的框架实施速率限制器。但是我对于实现哪一个以及哪一个在并发性和速率限制之间更重要有些困惑。我发现在大多数地方,例如apache骆驼人已经实现了速率限制而不是并发。 但对我来说,似乎速率限制实际上没有什么意义,相反,并发是我们总是需要面向多个并发请求的服务? 请让我知道你的想法。并发与速率限制
并发与速率限制
回答
您当然希望尽可能多地默认为并发请求服务。但是,高于某些请求率,您的服务性能可能会大幅下降。如果发生这种情况,每个客户都会受到影响,而且您不再提供更多请求,而是越来越少,直到您的服务对任何人都无法使用。速率限制允许您不要让新请求以超过某个速率进入系统,因此不会降低性能。您看起来对某些客户而言,但至少有一些客户得到了服务,而且您仍然可以在开始时对您的系统进行操作。过度的交换或垃圾收集,甚至无法连接到SSH时,可以有效地将整个服务器与它连接起来。
特定客户端的速率限制(基于IP例如)可以减轻每个时间单元发出太多请求的“坏”客户端的影响,或尝试拒绝您。
请记住,通过将您的服务置于某种逆向代理(如nginx)后可以调整请求率; it can保持请求等待并且不会进入系统一段时间(并且nginx可以容纳很多这些等待没有性能下降),它可以完全放弃它们,它可以限制基于IP的请求等。
好吧,我会举一个例子,让我们说java spring框架。现在在这个框架中,在框架级别,请求速率限制或并发功能会更有利吗?与请求速率限制一样,它可能会再次发生,之前的请求没有提供,或者仍在进行处理,并且允许新的请求,从而导致服务整体失效所以,您不认为单独的速率限制不会真的没有帮助达到目的?相反,保持一些并发值可以说100,并不提供进一步的请求,这不是更好的服务目的? –
“不提供更多请求”是什么意思?他们会被拒绝吗?那么它只是限速。处理线程是否会等待它们被处理?那么你将浪费内存和上下文切换,并且会有很多客户端断开连接。只有当你正在异步处理请求时,你的模型才会起作用。在这种情况下,它似乎工作正常。 – starikoff
- 1. 使用NGINX速率限制与标记
- 2. 速率限制算法限制请求
- 3. 速率限制如何限制API
- 4. 限制Python线程的并发性和速率
- 5. Dailymotion API的速率限制
- 6. Nginx:动态速率限制
- 7. 速率限制注册API
- 8. Twitter的速率限制?
- 9. java速率限制逻辑
- 10. 超出速率限制
- 11. OkHttp API速率限制
- 12. Soundcloud和api速率限制
- 13. Flask无Redis速率限制
- 14. Twitter API速率限制
- 15. Ggmap“dsk”速率限制
- 16. Twitter的速率限制
- 17. Pinterest的API速率限制
- 18. 摆动速率限制
- 19. 轨道控制器的速率限制
- 20. node.js:具有时间间隔的货币限制并行执行(速率限制)
- 21. 播放WS API:限制请求速率
- 22. 速率限制可观察到的
- 23. Python旋风速率限制AsyncHttpClient获取
- 24. Twitter速率限制检查和缓存
- 25. 使用ASP.NET和global.asax限制速率
- 26. Django:简单的速率限制
- 27. 速率限制类视图瓶
- 28. 通过IP的API速率限制
- 29. 速率限制超过Foursquare API
- 30. 速率限制,以防止ExpressJS
您的意思是并发性和单个客户端的速率限制? – starikoff
我的意思是要为服务外部请求服务的并发性和速率限制 –
因此,您是否想限制一个客户端或整个服务请求的请求率?如果一个客户的请求影响另一个客户的请求? – starikoff