Limitations du Routage des Requêtes
Aperçu
Ce document explique le fonctionnement de 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.
Fonctionnement du Routage des Requêtes
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 automatiquement indexées pour des recherches rapides. Cela offre un routage fiable mais introduit des considérations spécifiques en termes de temporisation et de configuration.
Limitations du Routage
Propagation de la Configuration
Délais : 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 sur les Déploiements :
- Prévoir ce délai lors de modifications critiques de routage
- Déployer votre service avant de mettre à jour les règles d’ingress
- Laisser suffisamment de temps pour que la configuration prenne effet avant de tester
Contraintes sur les Chemins URI
Assainissement des Caractères : Les chemins URI sont automatiquement assainis pour compatibilité avec S3 :
- Les caractères alphanumériques, tirets, soulignés et points sont préservés
- Les caractères spéciaux sont convertis en underscores
- Longueur maximale du chemin : 1024 caractères
Exemples :
/api/v1/users
→_api_v1_users
/api/v1/users?filter=active
→_api_v1_users_filter_active
/api/v1/users@domain
→_api_v1_users_domain
Recommandation : Concevez vos chemins d’API dès le départ compatibles avec S3 pour éviter des problèmes de routage inattendus.
Découverte de Service
Recherche basée sur un index : Notre système utilise des fichiers d’index pour mapper les URI aux services, ce qui offre :
- Des décisions de routage rapides (< 10 ms)
- 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 dans la fenêtre de propagation
- Les conflits de configuration sont résolus selon la mise à jour la plus récente
Considérations pour le Déploiement
1. Ordre de Déploiement des Services
Lors du déploiement de nouveaux services :
- Déployez d’abord votre service et vérifiez qu’il est sain
- 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. Bonnes Pratiques de Conception des URI
- Utilisez des schémas URI RESTful et prévisibles
- Évitez les caractères spéciaux dans les chemins
- Gardez les chemins raisonnablement courts (< 200 caractères)
- Utilisez des conventions de nommage cohérentes
3. Surveillance et Tests
- Surveillez les points de terminaison de santé de votre service
- Testez les modifications de routage dans des environnements de préproduction
- Laissez le temps nécessaire à la propagation de la configuration
- Préparez un plan de retour en arrière
Résolution des Problèmes de Routage
Service ne Reçoit Pas de Trafic
- Vérifiez la Santé du Service : Assurez-vous que votre service fonctionne et répond
- Vérifiez la Configuration d’Ingress : Confirmez que la règle d’ingress est correctement configurée
- Vérifiez le Chemin URI : Assurez-vous que le chemin correspond exactement (sensible à la casse)
- Attendez la Propagation : Laissez jusqu’à 2 minutes pour les modifications de configuration
Échecs des Mises à Jour de Configuration
- Validez le Format JSON : Vérifiez que votre configuration est un JSON valide
- Vérifiez les Limites de Caractères : Assurez-vous que les chemins ne dépassent pas 1024 caractères
- Vérifiez les Limites de Domaine : Confirmez que vous n’avez pas dépassé 100 règles par domaine
Caractéristiques de Performance
- Décision de Routage : < 10 ms
- Mise à Jour de Configuration : 30-60 secondes
- Basculement : Basculement automatique vers des instances de service saines