Einschränkungen des Request-Routings
Übersicht
Dieses Dokument erklärt, wie unser Request-Routing-System funktioniert und welche Einschränkungen Ihre Deployments beeinflussen können. Das Verständnis dieser Rahmenbedingungen hilft Ihnen, Ihre Anwendungen effektiv zu gestalten.
Wie das Request-Routing funktioniert
Unser Routing-System verwendet einen S3-basierten Ansatz zur Konfigurationsverwaltung, bei dem Ingress-Regeln als JSON-Dateien gespeichert und automatisch für schnelle Nachschlagen indexiert werden. Das bietet zuverlässiges Routing, bringt jedoch spezifische zeitliche und konfigurationsbezogene Aspekte mit sich.
Routing-Einschränkungen
Konfigurationsverbreitung
Zeitrahmen: Änderungen an der Ingress-Konfiguration werden typischerweise innerhalb von 30–60 Sekunden übertragen, können in seltenen Fällen jedoch bis zu 2 Minuten dauern.
Auswirkungen auf Deployments:
- Berücksichtigen Sie diese Verzögerung bei kritischen Routing-Änderungen
- Deployen Sie Ihren Service, bevor Sie Ingress-Regeln aktualisieren
- Lassen Sie genügend Zeit verstreichen, bis die Konfiguration wirksam ist, bevor Sie testen
Einschränkungen von URI-Pfaden
Zeichenbereinigung: URI-Pfade werden automatisch für S3-Kompatibilität bereinigt:
- Alphanumerische Zeichen, Bindestriche, Unterstriche und Punkte bleiben erhalten
- Sonderzeichen werden in Unterstriche umgewandelt
- Maximale Pfadlänge: 1024 Zeichen
Beispiele:
/api/v1/users→_api_v1_users/api/v1/users?filter=active→_api_v1_users_filter_active/api/v1/users@domain→_api_v1_users_domain
Empfehlung: Entwerfen Sie Ihre API-Pfade von Anfang an S3-freundlich, um unerwartete Routing-Probleme zu vermeiden.
Service Discovery
Indexbasierte Suche: Unser System verwendet Indexdateien, um URIs Services zuzuordnen, was bietet:
- Schnelle Routing-Entscheidungen (< 10ms)
- Versionsverfolgung für Rollbacks
- Automatische Bereinigung ungültiger Konfigurationen
Auswirkungen:
- Service-Endpunkte müssen registriert sein, bevor sie Traffic empfangen können
- Gelöschte Services werden innerhalb des Propagationsfensters automatisch aus dem Routing entfernt
- Konfigurationskonflikte werden basierend auf dem neuesten Update aufgelöst
Überlegungen bei Deployments
1. Reihenfolge der Service-Deployment
Beim Deployen neuer Services:
- Deployen Sie Ihren Service zuerst und verifizieren Sie, dass er gesund ist
- Aktualisieren Sie die Ingress-Konfiguration nach dem Service-Deployment
- Warten Sie auf die Konfigurationsverbreitung (30–60 Sekunden)
- Testen Sie das neue Routing
2. Best Practices für URI-Design
- Verwenden Sie RESTful, vorhersehbare URI-Muster
- Vermeiden Sie Sonderzeichen in Pfaden
- Halten Sie Pfade einigermaßen kurz (< 200 Zeichen)
- Verwenden Sie konsistente Namenskonventionen
3. Monitoring und Tests
- Überwachen Sie die Health-Endpunkte Ihrer Services
- Testen Sie Routing-Änderungen in Staging-Umgebungen
- Lassen Sie ausreichend Zeit für die Konfigurationsverbreitung
- Haben Sie einen Rollback-Plan bereit
Fehlerbehebung bei Routing-Problemen
Service erhält keinen Traffic
- Service-Gesundheit prüfen: Stellen Sie sicher, dass Ihr Service läuft und antwortet
- Ingress-Konfiguration verifizieren: Bestätigen Sie, dass die Ingress-Regel korrekt konfiguriert ist
- URI-Pfad prüfen: Stellen Sie sicher, dass der Pfad genau übereinstimmt (case-sensitive)
- Auf Verbreitung warten: Lassen Sie bis zu 2 Minuten für Konfigurationsänderungen zu
Fehler bei Konfigurationsaktualisierungen
- JSON-Format validieren: Prüfen Sie, ob Ihre Konfiguration gültiges JSON ist
- Zeichenlimits prüfen: Stellen Sie sicher, dass Pfade 1024 Zeichen nicht überschreiten
- Domänenlimits prüfen: Bestätigen Sie, dass Sie nicht mehr als 100 Regeln pro Domain überschritten haben
Leistungsmerkmale
- Routing-Entscheidung: < 10ms
- Konfigurationsaktualisierung: 30–60 Sekunden
- Failover: Automatisches Failover zu gesunden Service-Instanzen