Apigee Throttling场景

时间:2014-04-30 09:05:21

标签: api backend apigee throttling

我们的组织正在迁移到Apigee。

我们想要实现的是以下场景。你能告诉我怎么做吗? 也许一起使用SpikeArrest,Quota和ConcurrentRatelimit?

我想请求代理的实际示例配置,作为指导如何链接策略以实现所需结果。

我一直在阅读文档,它有点撇去并且有差距,关于什么是分发,什么不是等等。

http://apigee.com/docs/api-services/content/shield-apis-using-spikearrest
http://apigee.com/docs/api-services/content/rate-limit-api-traffic-using-quota#identifying-apps
http://apigee.com/docs/api-services/content/throttle-backend-connections-using-concurrentratelimit

示例差距是我之前关于SpikeArrest的问题,由于在文档中没有指定SpikeArrests未分发,因此配置SpikeArrest并且没有获得预期的行为。 Apigee SpikeArrest Sync Across MessageProcessors (MPs)

这些人也被同样的情况所困扰: Apigee - SpikeArrest behavior

情景和所需结果:

在我们的组织中,我们有 6个MessageProcessors(MP),我认为他们正在以严格的循环方式工作。

我们有以下后端Api - Api-1

Api-1 让我们组织内的消费者与其Apigee消费者一起消费。 我们希望阻止我们的 Api-1 受到重创和挫折。 让我们说它已被加载测试,最多每秒 50个请求。 我们已经计算出通过Apigee我们希望每秒最多限制30个请求,因为其他每秒20个请求容量来自我们组织内的用户(主要是我们自己的其他产品)不要经过Apigee。

从使用 Api-1 到Apigee的开发者应用程序的数量,我们已经确定了4个应用程序/客户端,它们的消费峰值最高。 在分配给Apigee的 30ps 费率中,我们希望能够为这些 4高消费中的每一个分配 5ps DevApps /客户端,其他DevApps /客户端共享其余 10ps 费率。

我在TargetEndpoint上遇到的主要问题是这里描述的问题,因为SpikeArrest策略没有分布在MessageProcessors上:Apigee SpikeArrest Sync Across MessageProcessors (MPs)

我们如何绕过它并实现所需的方案?

以下是我尝试尝试实现所需行为的示例:

代理的TargetEndpoint:

ConcurrentRatelimit:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ConcurrentRatelimit async="true" continueOnError="false" enabled="true" name="Concurrent-Rate-Limit-1">
    <DisplayName>Concurrent Rate Limit 1</DisplayName>
    <AllowConnections count="1" ttl="5"/>
    <Distributed>true</Distributed>
    <TargetIdentifier name="default"></TargetIdentifier>
</ConcurrentRatelimit>

SpikeArrest:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<SpikeArrest async="true" continueOnError="false" enabled="true" name="Spike-Arrest-2">
    <DisplayName>Spike Arrest 2</DisplayName>
    <FaultRules/>
    <Properties/>
    <Identifier ref="request.header.some-header-name"/>
    <MessageWeight ref="request.header.weight"/>
    <Rate>30ps</Rate>
</SpikeArrest>

如果组织在我不知情的情况下添加或删除MP,会发生什么情况,这会完全扰乱限制?

非常感谢!

谢谢!

1 个答案:

答案 0 :(得分:0)

在MP上同步尖峰停止的问题是你已经处于严重负载下(理论上)并且在高负载下MP之间产生额外的喋喋不休可能会对你用来保护高负载的工具产生影响。

因此,每秒限制的唯一选择是进行数学运算并除以MP。对于分钟及以上,您可以执行不带标识符的配额策略,并启用分布式和同步。