Limitaciones del enrutamiento de solicitudes
Visión general
Este documento explica cómo funciona nuestro sistema de enrutamiento de solicitudes y las limitaciones que pueden afectar sus despliegues. Comprender estas restricciones le ayuda a diseñar sus aplicaciones de manera efectiva.
Cómo funciona el enrutamiento de solicitudes
Nuestro sistema de enrutamiento utiliza un enfoque de gestión de configuración basado en S3 donde las reglas de ingreso se almacenan como archivos JSON y se indexan automáticamente para búsquedas rápidas. Esto proporciona un enrutamiento fiable pero introduce consideraciones específicas de temporización y configuración.
Limitaciones del enrutamiento
Propagación de la configuración
Cronograma: Los cambios en la configuración de ingress normalmente se propagan dentro de 30-60 segundos, pero en casos raros pueden tardar hasta 2 minutos.
Impacto en los despliegues:
- Planifique este retraso al realizar cambios críticos de enrutamiento
- Despliegue su servicio antes de actualizar las reglas de ingreso
- Permita tiempo suficiente para que la configuración surta efecto antes de realizar pruebas
Restricciones en la ruta URI
Saneamiento de caracteres: Las rutas URI se sanean automáticamente para compatibilidad con S3:
- Se preservan caracteres alfanuméricos, guiones, guiones bajos y puntos
- Los caracteres especiales se convierten en guiones bajos
- Longitud máxima de la ruta: 1024 caracteres
Ejemplos:
/api/v1/users→_api_v1_users/api/v1/users?filter=active→_api_v1_users_filter_active/api/v1/users@domain→_api_v1_users_domain
Recomendación: Diseñe sus rutas de API para que sean compatibles con S3 desde el principio para evitar problemas inesperados de enrutamiento.
Descubrimiento de servicios
Búsqueda basada en índices: Nuestro sistema utiliza archivos de índice para mapear URIs a servicios, lo que proporciona:
- Decisiones de enrutamiento rápidas (< 10ms)
- Seguimiento de versiones para rollback
- Limpieza automática de configuraciones inválidas
Implicaciones:
- Los endpoints de servicio deben estar registrados antes de poder recibir tráfico
- Los servicios eliminados se quitan automáticamente del enrutamiento dentro de la ventana de propagación
- Los conflictos de configuración se resuelven en función de la actualización más reciente
Consideraciones de despliegue
1. Orden de despliegue del servicio
Al desplegar nuevos servicios:
- Despliegue su servicio primero y verifique que esté saludable
- Actualice la configuración de ingress después del despliegue del servicio
- Espere la propagación de la configuración (30-60 segundos)
- Pruebe el nuevo enrutamiento
2. Mejores prácticas de diseño de URI
- Use patrones URI RESTful y predecibles
- Evite caracteres especiales en las rutas
- Mantenga las rutas razonablemente cortas (< 200 caracteres)
- Use convenciones de nomenclatura coherentes
3. Monitoreo y pruebas
- Monitoree los endpoints de salud de su servicio
- Pruebe los cambios de enrutamiento en entornos de staging
- Permita tiempo suficiente para la propagación de la configuración
- Tenga un plan de rollback listo
Solución de problemas de enrutamiento
El servicio no recibe tráfico
- Verifique la salud del servicio: Asegúrese de que su servicio esté en ejecución y respondiendo
- Verifique la configuración de ingress: Confirme que la regla de ingress esté configurada correctamente
- Compruebe la ruta URI: Asegúrese de que la ruta coincida exactamente (sensible a mayúsculas)
- Espere la propagación: Permita hasta 2 minutos para los cambios de configuración
Fallas en la actualización de la configuración
- Valide el formato JSON: Verifique que su configuración sea un JSON válido
- Verifique los límites de caracteres: Asegúrese de que las rutas no excedan 1024 caracteres
- Revise los límites de dominio: Confirme que no haya excedido 100 reglas por dominio
Características de rendimiento
- Decisión de enrutamiento: < 10ms
- Actualización de configuración: 30-60 segundos
- Conmutación por error: Conmutación automática a instancias de servicio saludables