Antipatrón: Configura cuotas no distribuidas

Estás viendo la documentación de Apigee Edge.
Ve a la Documentación de Apigee X.
información

Apigee Edge permite configurar la cantidad de solicitudes permitidas a un proxy de API para un período específico con la política de cuotas

Antipatrón

Uno o más componentes de Edge distribuidos llamados solicitudes de proxy de API pueden entregar Procesadores de mensajes. Si hay varios Message Processor configurados para la API de entrega solicitudes, es probable que se supere la cuota, ya que cada Message Processor mantiene su "recuento" de las solicitudes que procesa.

Explicaremos esto con un ejemplo. Considera la siguiente política de cuotas para un proxy de API:

<!-- /antipatterns/examples/1-6.xml -->
<Quota name="CheckTrafficQuota">
  <Interval>1</Interval>
  <TimeUnit>hour</TimeUnit>
  <Allow count="100"/>
</Quota>

La configuración anterior permite una cantidad total de 100 solicitudes por hora.

Sin embargo, en la práctica, cuando varios Message Processor entregan las solicitudes a la API, sucede lo siguiente:

En la ilustración anterior se muestra lo siguiente:

  • La política de cuotas se configuró para permitir 100 solicitudes por hora.
  • Las solicitudes al proxy de API las entregan dos Message Processor.
  • Cada Message Processor mantiene su propia variable de recuento de cuota, quota_count_mp1 y quota_count_mp2, a fin de llevar un registro de la cantidad de solicitudes que procesan.
  • Por lo tanto, cada uno de los Message Processor permite 100 solicitudes a la API de forma independiente. El efecto neto es que se procesa un total de 200 solicitudes en vez de 100.

Impacto

Esta situación interrumpe el propósito de la configuración de la cuota y puede tener efectos perjudiciales en los servidores de backend que entregan las solicitudes.

Lo siguiente puede sucederles a los servidores de backend:

  • Estar sobrecargados debido a un tráfico entrante más alto que el esperado
  • No responder a solicitudes a la API más recientes, lo que causa errores 503

Práctica recomendada

Considera configurar el elemento <Distributed> en true en la política de cuotas, a fin de garantizar que se use un contador común para llevar el registro de las solicitudes a la API en todos los Message Processor. El elemento <Distributed> se puede configurar como se muestra en el siguiente fragmento de código:

<!-- /antipatterns/examples/1-7.xml -->
<Quota name="CheckTrafficQuota">
  <Interval>1</Interval>
  <TimeUnit>hour</TimeUnit>
  <Distributed>true</Distributed>
  <Allow count="100"/>
</Quota>