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:

  1. Stellen Sie Ihren Service zuerst bereit und überprüfen Sie seine Gesundheit
  2. Aktualisieren Sie die Ingress-Konfiguration nach der Service-Bereitstellung
  3. Warten Sie auf die Konfigurationsverbreitung (30-60 Sekunden)
  4. 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

  1. Service-Gesundheit prüfen: Stellen Sie sicher, dass Ihr Service läuft und antwortet
  2. Ingress-Konfiguration überprüfen: Vergewissern Sie sich, dass die Ingress-Regel korrekt konfiguriert ist
  3. URI-Pfad kontrollieren: Stellen Sie sicher, dass der Pfad exakt übereinstimmt (Groß-/Kleinschreibung beachten)
  4. Auf Verbreitung warten: Geben Sie bis zu 2 Minuten Zeit für die Konfigurationsänderungen

Fehler bei Konfigurations-Updates

  1. JSON-Format validieren: Überprüfen Sie, ob Ihre Konfiguration gültiges JSON ist
  2. Zeichenbeschränkungen prüfen: Stellen Sie sicher, dass Pfade nicht länger als 1024 Zeichen sind
  3. 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