【发布时间】:2014-06-09 16:01:38
【问题描述】:
我是 Apigee 新手。
我正在尝试了解 Spike Arrest 政策。
我正在查看此文档:
http://apigee.com/docs/api-services/content/shield-apis-using-spikearrest
http://apigee.com/docs/api-services/content/policy-attachment-and-enforcement
我无法确定的一件事是,当 Spike Arrest Policy 应用于 ApiProxy 时,速率限制是针对每个密钥/客户端开发应用程序应用,还是在所有密钥/客户端开发应用程序之间共享?
例如,如果我们有以下配置:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<SpikeArrest async="false" continueOnError="false" enabled="true" name="spikearrest-1">
<DisplayName>SpikeArrest-1</DisplayName>
<FaultRules/>
<Properties/>
<Identifier ref="request.header.some-header-name"/>
<MessageWeight ref="request.header.weight"/>
<Rate>50ps</Rate>
</SpikeArrest>
和客户端开发应用程序:1. DevApp12. DevApp2
DevApp1 和 DevApp2 之间共享 50ps 速率限制,还是 DevApp1 和 DevApp2 各自获得 50ps 速率限制?
谢谢,
【问题讨论】:
-
根据下面的链接,每个 API 包、每个策略名称都维护计数。这意味着即使标识符相同,也不会跨包共享计数。请查看此答案以获取更多详细信息。 stackoverflow.com/questions/21614059/…。所以,你下面的场景应该不是问题,因为 count 是独立的。
-
感谢@Diego!我目前有这个问题:stackoverflow.com/questions/21912316/… 在我们的组织中,我们有 6 个 MessageProcessors(MP),我假设它们在严格的循环中工作。如果我的速率为下午 3 点,这意味着每 20 秒命中 1 次,而不是每 20 秒成功命中 1 次,我在 20 秒范围内得到 6 次成功命中,然后是尖峰制动错误,这意味着每个 MP 命中一次。这意味着我每 20 秒得到 6 个而不是 1 个。有没有办法在 MP 之间同步尖峰逮捕? ConcurrentRatelimit 似乎没有帮助。
标签: api backend apigee throttling