Estás consultando la documentación de Apigee y Apigee Hybrid.
Consulta la documentación de
Apigee Edge.
Apigee te permite configurar el número de solicitudes que se permiten en un proxy de API durante un periodo específico mediante la política de cuotas.
Antipatrón
Una solicitud del proxy de API se puede servir a través de uno o varios componentes de Apigee distribuidos, que se conocen como procesadores de mensajes. Si has configurado varios procesadores de mensajes para servir solicitudes a la API, es probable que acabes superando la cuota, ya que cada uno tiene su propio "recuento" de las solicitudes que procesa.
A continuación, explicaremos su funcionamiento con la ayuda de un ejemplo. En este caso, tendremos en cuenta la siguiente política de cuota del proxy de API:
<!-- /antipatterns/examples/1-6.xml --> <Quota name="CheckTrafficQuota"> <Interval>1</Interval> <TimeUnit>hour</TimeUnit> <Allow count="100"/> </Quota>
En teoría, la configuración anterior debería permitir un total de 100 solicitudes por hora.
No obstante, en la práctica, cuando varios procesadores de mensajes sirven las solicitudes a la API, ocurre lo siguiente:
En la ilustración anterior, vemos que:
- La política de cuotas se ha configurado de forma que se permitan 100 solicitudes por hora.
- Hay dos procesadores de mensajes que sirven las solicitudes al proxy de API.
- Cada procesador de mensajes cuenta con su propia variable de número de cuota,
quota_count_mp1
yquota_count_mp2
, para hacer un seguimiento del número de solicitudes que están procesando. - Por lo tanto, cada uno permite 100 solicitudes a la API por separado. El efecto neto es que se procesan 200 solicitudes en total, en lugar de 100.
Impacto
Esta situación anula el propósito de la configuración de la cuota y puede afectar negativamente a los servidores de backend que sirven las solicitudes.
Los efectos en los servidores de backend pueden ser los siguientes:
- Tener demasiada actividad debido a que el tráfico entrante es más alto de lo esperado.
- No responder a las solicitudes a la API más recientes, lo que puede generar errores 503.
Práctica recomendada
Te recomendamos que asignes el elemento <Distributed>
a true
en la política de cuotas para asegurarte de que se usa un contador común para hacer un seguimiento de las solicitudes a la API en todos los procesadores de mensajes.
El elemento <Distributed>
se puede definir tal y 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>