1

假设在一个 API 包中,我们有 3 个不同的流(例如,流 A、流 B 和流 C),它们都引用同一个名为 QuotaLimitPolicy 的配额策略。他们真的对给定的标识符使用单独的计数器吗?

 Flow A is executed -> QuotaLimitPolicy is executed.  Result: "A counter" = 1
 Flow B is executed -> QuotaLimitPolicy is executed.  Result: "B counter" = 1
 Flow A is executed -> QuotaLimitPolicy is executed.  Result: "A counter" = 1 +1 = 2
 Flow C is executed -> QuotaLimitPolicy is executed.  Result: "C counter" = 1
 Flow A is executed -> QuotaLimitPolicy is executed.  Result: "A counter" = 2 +1 = 3

更一般地说,除了标识符之外,是什么使配额计数器与众不同?

4

2 回答 2

2

例如,在下面的 1 个 API 包中的示例中,是否真的维护了 3 个单独的计数器?

Flow A is executed -> QuotaLimitPolicy is executed.  Result: "A counter" = 1
Flow B is executed -> QuotaLimitPolicy is executed.  Result: "B counter" = 1
Flow A is executed -> QuotaLimitPolicy is executed.  Result: "A counter" = 1 +1 = 2
Flow C is executed -> QuotaLimitPolicy is executed.  Result: "C counter" = 1
Flow A is executed -> QuotaLimitPolicy is executed.  Result: "A counter" = 2 +1 = 3

不,只保留 1 个。在一个包中,对同一策略的所有引用都使用相同的计数器。在上面的示例中,QuotaLimitPolicy 实际上是给定标识符的单个计数器。因此,对于单个标识符(例如,client_id = 10.10.10.10),上面的链将产生一个值为 5 的单个计数器,每次执行 QuotaLimitPolicy 一个计数器。

更一般地说,除了标识符之外,是什么使配额计数器与众不同?

区别在于每个 API 捆绑包的策略名称级别。如果要为同一个包中的各种流创建单独的计数器,则需要创建具有不同“name=”属性的单独策略。此外,我不相信我可以使用配额策略在给定环境的多个 API 捆绑包中共享单个配额计数器。

这些不是好事或坏事,而是我想引起人们的注意,以便在解决方案设计中考虑这些。

于 2014-02-06T22:38:14.133 回答
0

此外,我不相信我可以使用配额策略在给定环境的多个 API 捆绑包中共享单个配额计数器。

您应该能够通过将配额与 API 产品一起使用来跨 API 代理共享配额计数器。如果您将配额策略设置为从 API 产品导入设置,并且您在 API 产品中包含来自两个或多个 API 代理的 API 资源,那么计数器应该在这两个代理之间共享。

请参阅此处的“动态配额设置”:http: //apigee.com/docs/api-services/content/rate-limit-api-traffic-using-quota

不确定这是否正是您要寻找的,但希望对您有所帮助。

于 2014-02-07T14:24:10.470 回答