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:

  1. Deployen Sie Ihren Service zuerst und verifizieren Sie, dass er gesund ist
  2. Aktualisieren Sie die Ingress-Konfiguration nach dem Service-Deployment
  3. Warten Sie auf die Konfigurationsverbreitung (30–60 Sekunden)
  4. 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

  1. Service-Gesundheit prüfen: Stellen Sie sicher, dass Ihr Service läuft und antwortet
  2. Ingress-Konfiguration verifizieren: Bestätigen Sie, dass die Ingress-Regel korrekt konfiguriert ist
  3. URI-Pfad prüfen: Stellen Sie sicher, dass der Pfad genau übereinstimmt (case-sensitive)
  4. Auf Verbreitung warten: Lassen Sie bis zu 2 Minuten für Konfigurationsänderungen zu

Fehler bei Konfigurationsaktualisierungen

  1. JSON-Format validieren: Prüfen Sie, ob Ihre Konfiguration gültiges JSON ist
  2. Zeichenlimits prüfen: Stellen Sie sicher, dass Pfade 1024 Zeichen nicht überschreiten
  3. 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