Home Hardware Networking Programmazione Software Domanda Sistemi
Conoscenza del computer >> hardware >> Servers >> .

In che modo la richiesta HTTP dal client ha instradato per correggere il servizio in esecuzione sul server?

Il routing di una richiesta HTTP da un client al servizio corretto su un server comporta diversi passaggi e dipende fortemente dall'architettura del server. Ecco una rottura degli approcci comuni:

1. Bilanciatore del carico (spesso la prima fermata):

* Molti sistemi utilizzano un bilanciamento del carico come punto di ingresso. Questo è un server dedicato che distribuisce richieste in arrivo su più server back -end (i servizi effettivi). Il bilanciamento del carico decide quale server inoltri la richiesta in base a fattori come il carico del server, i controlli di salute e potenzialmente anche le caratteristiche della richiesta (ad esempio, utilizzando una tecnica chiamata routing consapevole del contenuto).

* Il bilanciamento del carico funziona in genere sul livello di rete (livello 4) o sul livello dell'applicazione (livello 7). I bilanciatori di carico di livello 4 guardano cose come indirizzi IP e porte, mentre i bilanciatori del carico di livello 7 ispezionano la stessa richiesta HTTP (intestazioni, URL, ecc.) Prima di prendere una decisione di routing.

2. Proxy inverso (spesso dopo il bilanciamento del carico):

* Un proxy inverso si trova davanti a uno o più server back -end. Riceve richieste dal bilanciamento del carico (o direttamente dai clienti se non esiste un bilanciamento del carico) e le inoltra al servizio appropriato.

* I proxy inversi gestiscono spesso attività come la memorizzazione nella cache, la terminazione SSL (decritting traffico HTTPS) e la richiesta di modifica prima di passare la richiesta al backend.

* Nginx e Apache sono esempi popolari di proxy inversi.

3. Routing lato server (all'interno dell'applicazione):

* Una volta che la richiesta raggiunge il server (dopo aver potenzialmente passato un bilanciamento del carico e un proxy inverso), il server stesso deve determinare quale servizio o applicazione specifico dovrebbe gestirlo. Questo viene in genere fatto usando uno dei seguenti metodi:

* percorso URL: Il metodo più comune. Il server esamina il componente del percorso dell'URL (la parte dopo il nome di dominio). Ad esempio, `/Users/123` potrebbe essere instradato a un servizio utente, mentre`/Products/Search` potrebbe andare a un servizio di catalogo del prodotto. Framework come Express.js (node.js), stivale a molla (Java) e django (Python) forniscono meccanismi per la definizione di percorsi basati sui percorsi URL.

* Nome host/dominio: Servizi diversi possono essere distribuiti su diversi sottodomi o nomi host (ad esempio, `utenti.example.com` vs.` Products.example.com`). Il server può utilizzare il nome host per determinare il servizio appropriato.

* Routing basato sull'intestazione: La richiesta potrebbe includere intestazioni contenenti informazioni sul servizio previsto. Il server può controllare queste intestazioni per instradare la richiesta di conseguenza.

* Contenuto di richiesta: In alcuni casi, il contenuto dell'organismo di richiesta stesso potrebbe determinare quale servizio dovrebbe gestirlo. Ciò è meno comune perché richiede più elaborazione e può essere meno efficiente.

4. Service Discovery (per architetture di microservizi):

* Nelle architetture di microservizi, i servizi sono spesso distribuiti e ridimensionati dinamicamente. I meccanismi di scoperta del servizio, come il console, etcd o Kubernetes, aiutano a individuare le istanze attuali di ciascun servizio. Quando arriva una richiesta, il meccanismo di routing (ad esempio, un proxy inverso o un gateway API) interroga il sistema di rilevamento del servizio per trovare l'indirizzo dell'istanza di servizio appropriata e inoltra la richiesta.

In sintesi: Il processo è una catena di componenti potenzialmente multipli. Una richiesta in genere scorre come questa:

Client -> (caricamento bilanciatore) -> (proxy inverso) -> server -> (rilevamento del servizio, se applicabile) -> servizio specifico

L'implementazione esatta dipende fortemente dalla complessità del sistema e dalle tecnologie specifiche utilizzate. Le applicazioni semplici potrebbero coinvolgere solo il percorso del percorso URL su un singolo server, mentre i sistemi su larga scala utilizzano una combinazione di bilanciatori del carico, proxy inversi, scoperta di servizi e sofisticate regole di routing.

 

hardware © www.354353.com