Limitations du Routage des Requêtes
Overview
Ce document explique comment fonctionne notre système de routage des requêtes et les limitations qui peuvent affecter vos déploiements. Comprendre ces contraintes vous aide à concevoir efficacement vos applications.
How Request Routing Works
Notre système de routage utilise une approche de gestion de configuration basée sur S3 où les règles d’ingress sont stockées sous forme de fichiers JSON et indexées automatiquement pour des recherches rapides. Cela offre un routage fiable mais introduit des considérations spécifiques de synchronisation et de configuration.
Routing Limitations
Configuration Propagation
Timeline : Les modifications de configuration d’ingress se propagent généralement en 30-60 secondes, mais peuvent prendre jusqu’à 2 minutes dans de rares cas.
Impact on Deployments :
- Prévoyez ce délai lors de modifications critiques du routage
- Déployez votre service avant de mettre à jour les règles d’ingress
- Laissez suffisamment de temps à la configuration pour prendre effet avant les tests
URI Path Constraints
Character Sanitization : Les chemins URI sont automatiquement nettoyés pour compatibilité avec S3 :
- Les caractères alphanumériques, traits d’union, underscores et points sont conservés
- Les caractères spéciaux sont convertis en underscores
- Longueur maximale du chemin : 1024 caractères
Examples :
/api/v1/users→_api_v1_users/api/v1/users?filter=active→_api_v1_users_filter_active/api/v1/users@domain→_api_v1_users_domain
Recommendation : Concevez vos chemins d’API pour qu’ils soient compatibles avec S3 dès le départ afin d’éviter des problèmes de routage inattendus.
Service Discovery
Index-Based Lookup : Notre système utilise des fichiers index pour faire correspondre les URI aux services, ce qui offre :
- Des décisions de routage rapides (< 10ms)
- Un suivi des versions pour les retours en arrière
- Un nettoyage automatique des configurations invalides
Implications :
- Les points de terminaison des services doivent être enregistrés avant de pouvoir recevoir du trafic
- Les services supprimés sont automatiquement retirés du routage pendant la fenêtre de propagation
- Les conflits de configuration sont résolus selon la mise à jour la plus récente
Deployment Considerations
1. Service Deployment Order
Lors du déploiement de nouveaux services :
- Déployez d’abord votre service et vérifiez sa santé
- Mettez à jour la configuration d’ingress après le déploiement du service
- Attendez la propagation de la configuration (30-60 secondes)
- Testez le nouveau routage
2. URI Design Best Practices
- Utilisez des motifs URI RESTful et prévisibles
- Évitez les caractères spéciaux dans les chemins
- Gardez les chemins raisonnablement courts (< 200 caractères)
- Adoptez des conventions de nommage cohérentes
3. Monitoring and Testing
- Surveillez les points de terminaison de santé de vos services
- Testez les changements de routage en environnements de staging
- Laissez suffisamment de temps à la propagation de la configuration
- Ayez un plan de retour en arrière prêt
Troubleshooting Routing Issues
Service Not Receiving Traffic
- Check Service Health : Assurez-vous que votre service fonctionne et répond
- Verify Ingress Configuration : Confirmez que la règle ingress est correctement configurée
- Check URI Path : Vérifiez que le chemin correspond exactement (sensible à la casse)
- Wait for Propagation : Attendez jusqu’à 2 minutes pour les changements de configuration
Configuration Update Failures
- Validate JSON Format : Vérifiez que votre configuration est un JSON valide
- Check Character Limits : Assurez-vous que les chemins ne dépassent pas 1024 caractères
- Review Domain Limits : Confirmez que vous n’avez pas dépassé 100 règles par domaine
Performance Characteristics
- Routing Decision : < 10ms
- Configuration Update : 30-60 secondes
- Failover : Basculement automatique vers des instances de service saines