Einschränkungen der Request-Routing
Überblick
Dieses Dokument erklärt, wie unser Request-Routing-System funktioniert und welche Einschränkungen Ihre Deployments beeinflussen können. Das Verständnis dieser Beschränkungen hilft Ihnen, Ihre Anwendungen effektiv zu gestalten.
Wie das Request-Routing funktioniert
Unser Routing-System verwendet einen S3-basierten Ansatz für das Konfigurationsmanagement, bei dem Ingress-Regeln als JSON-Dateien gespeichert und automatisch für schnelle Nachschlagen indexiert werden. Dies gewährleistet zuverlässiges Routing, bringt jedoch spezifische Zeit- und Konfigurationsüberlegungen mit sich.
Routing-Einschränkungen
Konfigurationsverbreitung
Zeitrahmen: Änderungen 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:
- Planen Sie diese Verzögerung bei kritischen Routing-Änderungen ein
- Stellen Sie Ihren Service vor der Aktualisierung der Ingress-Regeln bereit
- Ermöglichen Sie ausreichend Zeit, damit die Konfiguration wirksam wird, bevor Sie testen
URI-Pfad-Beschränkungen
Zeichen-Säuberung: 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: Gestalten Sie Ihre API-Pfade von Anfang an S3-freundlich, um unerwartete Routing-Probleme zu vermeiden.
Service Discovery
Index-basiertes Nachschlagen: Unser System verwendet Indexdateien, um URIs auf Services abzubilden, was folgende Vorteile bietet:
- Schnelle Routing-Entscheidungen (< 10 ms)
- Versionsverfolgung für Rollbacks
- Automatische Bereinigung ungültiger Konfigurationen
Folgen:
- Service-Endpunkte müssen registriert sein, bevor sie Traffic empfangen können
- Gelöschte Services werden innerhalb des Verbreitungszeitraums automatisch aus dem Routing entfernt
- Konfigurationskonflikte werden basierend auf dem zuletzt erfolgten Update aufgelöst
Deployment-Überlegungen
1. Reihenfolge der Service-Bereitstellung
Beim Bereitstellen neuer Services:
- Stellen Sie Ihren Service zuerst bereit und überprüfen Sie seine Gesundheit
- Aktualisieren Sie die Ingress-Konfiguration nach der Service-Bereitstellung
- Warten Sie auf die Konfigurationsverbreitung (30-60 Sekunden)
- Testen Sie das neue Routing
2. Beste Praktiken für das URI-Design
- Verwenden Sie RESTful, vorhersehbare URI-Muster
- Vermeiden Sie Sonderzeichen in Pfaden
- Halten Sie Pfade vernünftig kurz (< 200 Zeichen)
- Nutzen Sie konsistente Namenskonventionen
3. Überwachung und Tests
- Überwachen Sie die Gesundheitsendpunkte Ihres Services
- Testen Sie Routing-Änderungen in Staging-Umgebungen
- Ermöglichen Sie ausreichend Zeit für die Konfigurationsverbreitung
- Halten 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 überprüfen: Vergewissern Sie sich, dass die Ingress-Regel korrekt konfiguriert ist
- URI-Pfad kontrollieren: Stellen Sie sicher, dass der Pfad exakt übereinstimmt (Groß-/Kleinschreibung beachten)
- Auf Verbreitung warten: Geben Sie bis zu 2 Minuten Zeit für die Konfigurationsänderungen
Fehler bei Konfigurations-Updates
- JSON-Format validieren: Überprüfen Sie, ob Ihre Konfiguration gültiges JSON ist
- Zeichenbeschränkungen prüfen: Stellen Sie sicher, dass Pfade nicht länger als 1024 Zeichen sind
- Domain-Limits überprüfen: Vergewissern Sie sich, dass nicht mehr als 100 Regeln pro Domain verwendet werden
Leistungsmerkmale
- Routing-Entscheidung: < 10 ms
- Konfigurationsaktualisierung: 30-60 Sekunden
- Failover: Automatisches Failover zu gesunden Service-Instanzen