我的代码中有一个像这样的端点:
[HttpPost]
public ActionResult<Result> myEndpoint()
{
...
}
代码将托管在多个服务器上,我需要实时统计所有服务器上调用它的次数。
最初我认为使用 Redis 的分布式缓存可能很有用,但如果多个服务器从缓存中获取相同的数字并同时对其进行操作,我可能会遇到问题。如果发生这种情况,数字就会消失。
有没有一种好方法来保持任何给定端点的实时计数?
.NET 7 中有更好的方法。您可以使用 RateLimmiting 中间件来为您做到这一点。
文档:https://learn.microsoft.com/en-us/aspnet/core/performance/rate-limit?view=aspnetcore-7.0
它将允许您控制每个端点的速率限制。您可以为不同的端点指定多种限制类型和不同的限制/逻辑。