Azure API管理入站规则从基础继承

问题描述 投票:0回答:2

设置速率限制时,我应用于所有操作,它是否将所有端点呼叫加在一起,或者是每个端点的速率限制?在计算最大nr个呼叫的基线时,这是至关重要的信息,但我担心我无法在Azure中找到有关其工作原理的任何信息......

以下是我要添加到所有操作的策略:

<rate-limit-by-key />

然后在我的端点我想通过添加继承:

<base />
azure azure-api-management rate-limiting
2个回答
1
投票

在请求处理期间,顺序执行策略。较低级别策略上的标记定义何时执行上级策略。每个提供的密钥值保持一个计数器与其放置位置无关,因此按键速率限制工作。如果此计数器超出限制,则会阻止策略请求中指定的限制。

换句话说,放置在不同范围内的两个按比例限制的限价政策将共享计数器值,但不限制。


1
投票

现在,所有操作下的调用都汇总在一个队列中。因此,速率限制计数器不适用于单个端点,即使它直接应用于单个端点,其原因是密钥不是该端点唯一的。

因此,例如,在同一入站规则下从一个IP地址到不同端点的呼叫将使用相同的密钥(在这种情况下为IP地址)更新所有端点的计数器。

为了避免这种情况,我通过将IP地址和操作名称链接在一起形成每个端点的队列并将<rate-limit-by-key>添加到我的端点而不是<base />来使我的密钥唯一

我的端点上的完成示例入站规则:

<rate-limit-by-key calls="xx" renewal-period="xx" counter-key="@(string.Join("-", context.Request.IpAddress, context.Operation.Id))" />
© www.soinside.com 2019 - 2024. All rights reserved.