Limitazioni del Routing delle Richieste

Overview

Questo documento spiega come funziona il nostro sistema di routing delle richieste e le limitazioni che possono influenzare le vostre distribuzioni. Comprendere questi vincoli vi aiuta a progettare efficacemente le vostre applicazioni.

How Request Routing Works

Il nostro sistema di routing utilizza un approccio di gestione della configurazione basato su S3, dove le regole di ingress sono memorizzate come file JSON e indicizzate automaticamente per ricerche veloci. Questo fornisce un routing affidabile ma introduce considerazioni specifiche sui tempi e sulla configurazione.

Routing Limitations

Configuration Propagation

Timeline: Le modifiche alla configurazione di ingress si propagano tipicamente entro 30-60 secondi, ma possono richiedere fino a 2 minuti in casi rari.

Impact on Deployments:

  • Pianificate questo ritardo quando effettuate modifiche critiche al routing
  • Distribuite il vostro servizio prima di aggiornare le regole di ingress
  • Lasciate un tempo sufficiente affinché la configurazione abbia effetto prima di testare

URI Path Constraints

Character Sanitization: I percorsi URI sono automaticamente sanitizzati per la compatibilità con S3:

  • I caratteri alfanumerici, trattini, underscore e punti sono preservati
  • I caratteri speciali sono convertiti in underscore
  • Lunghezza massima del percorso: 1024 caratteri

Examples:

  • /api/v1/users_api_v1_users
  • /api/v1/users?filter=active_api_v1_users_filter_active
  • /api/v1/users@domain_api_v1_users_domain

Recommendation: Progettate i percorsi della vostra API fin dall’inizio per essere compatibili con S3, per evitare problemi di routing imprevisti.

Service Discovery

Index-Based Lookup: Il nostro sistema usa file di indice per mappare gli URI ai servizi, che fornisce:

  • Decisioni di routing rapide (< 10ms)
  • Tracciamento delle versioni per rollback
  • Pulizia automatica delle configurazioni non valide

Implications:

  • Gli endpoint dei servizi devono essere registrati prima di poter ricevere traffico
  • I servizi cancellati vengono rimossi automaticamente dal routing entro la finestra di propagazione
  • I conflitti di configurazione sono risolti basandosi sull’aggiornamento più recente

Deployment Considerations

1. Service Deployment Order

Quando distribuite nuovi servizi:

  1. Distribuite prima il vostro servizio e verificate che sia sano
  2. Aggiornate la configurazione di ingress dopo la distribuzione del servizio
  3. Attendete la propagazione della configurazione (30-60 secondi)
  4. Testate il nuovo routing

2. URI Design Best Practices

  • Usate pattern URI RESTful e prevedibili
  • Evitate caratteri speciali nei percorsi
  • Tenete i percorsi ragionevolmente corti (< 200 caratteri)
  • Usate convenzioni di denominazione coerenti

3. Monitoring and Testing

  • Monitorate gli endpoint di salute del vostro servizio
  • Testate le modifiche di routing negli ambienti di staging
  • Lasciate un tempo sufficiente per la propagazione della configurazione
  • Preparate un piano di rollback

Troubleshooting Routing Issues

Service Not Receiving Traffic

  1. Check Service Health: Assicuratevi che il vostro servizio sia attivo e risponda
  2. Verify Ingress Configuration: Confermate che la regola di ingress sia configurata correttamente
  3. Check URI Path: Assicuratevi che il percorso corrisponda esattamente (case-sensitive)
  4. Wait for Propagation: Attendete fino a 2 minuti per le modifiche di configurazione

Configuration Update Failures

  1. Validate JSON Format: Verificate che la configurazione sia un JSON valido
  2. Check Character Limits: Assicuratevi che i percorsi non superino 1024 caratteri
  3. Review Domain Limits: Confermate di non aver superato 100 regole per dominio

Performance Characteristics

  • Routing Decision: < 10ms
  • Configuration Update: 30-60 secondi
  • Failover: Failover automatico alle istanze di servizio sane