Il meccanismo di rilevamento dei servizi dei microservizi è un metodo per individuare dinamicamente le istanze del servizio per la comunicazione in un'architettura di microservizi.
Si basa principalmente sul centro di registrazione per implementare la registrazione del servizio, eseguire query e supportare il bilanciamento del carico, migliorando così la scalabilità e la flessibilità del sistema.
1. Concetti di base
La scoperta dei servizi si riferisce al processo di scoperta e identificazione automatica dei servizi disponibili in un sistema distribuito.
In un'architettura di microservizi, poiché i servizi sono suddivisi in più servizi piccoli e autonomi sparsi su server diversi, è necessario un meccanismo di rilevamento dei servizi per garantire una comunicazione efficace tra i servizi.
2. Passaggi principali
Registrazione del servizio:
Quando un'istanza di microservizio viene avviata, registrerà le informazioni sulla posizione di rete (come indirizzo IP e numero di porta) e l'identificazione del servizio nel centro di registrazione del servizio.
Questo processo di registrazione è solitamente automatico e non richiede l'intervento umano.
Il centro di registrazione è responsabile della gestione delle informazioni di registrazione di tutte le istanze del servizio e del supporto della registrazione dinamica e dell'annullamento della registrazione delle istanze del servizio.
Richiesta di servizio:
Quando un microservizio deve chiamare un altro microservizio, interroga il registro dei servizi per l'indirizzo di rete attualmente disponibile del servizio richiesto.
Il centro di registrazione restituisce l'elenco degli indirizzi delle istanze del servizio e il chiamante può selezionare un'istanza del servizio per la comunicazione in base alla policy di bilanciamento del carico.
3. Componenti chiave
Registro dei servizi:
È il componente principale del meccanismo di rilevamento dei servizi ed è responsabile della gestione e dell'archiviazione delle informazioni di registrazione di tutte le istanze del servizio.
Fornisce un'interfaccia API per le istanze del servizio per registrare e annullare le operazioni e supporta inoltre i consumatori del servizio per interrogare le informazioni di registrazione delle istanze del servizio.
Fornitore di servizi:
È un'istanza di microservizio che fornisce un servizio specifico.
Registrerà le proprie informazioni sul servizio nel registro dei servizi all'avvio e annullerà la registrazione delle proprie informazioni sul servizio alla chiusura.
Consumatore di servizi:
È un'istanza di microservizio che deve chiamare altri servizi.
Ottiene l'indirizzo di rete del servizio richiesto interrogando il registro dei servizi e stabilisce con esso la comunicazione.
4. Come implementare il meccanismo di rilevamento dei servizi
Il meccanismo di rilevamento del servizio può essere suddiviso in due tipologie: rilevamento del client e rilevamento del server in base al metodo di implementazione:
modalità di rilevamento del client:
Il client è responsabile di interrogare il centro di registrazione, ottenere un elenco di servizi disponibili e interagire direttamente con le istanze del servizio in base alla politica di bilanciamento del carico.
Il vantaggio è che il cliente può formulare in modo flessibile strategie di bilanciamento del carico, riducendo la dipendenza dal centro di registrazione del servizio.
Lo svantaggio è che il client deve implementare una logica di rilevamento complessa, che aumenta la complessità del codice e i costi di manutenzione.
Modalità di rilevamento del server:
Il client invia una richiesta al server (solitamente un gateway API o un proxy di servizio) e il server è responsabile di interrogare il centro di registrazione e inoltrare la richiesta all'effettiva istanza del servizio.
Il vantaggio è che semplifica l'implementazione del client e riduce la complessità del codice e i costi di manutenzione.
Lo svantaggio è che aumenta la latenza del sistema e i punti di errore, poiché tutte le richieste devono essere inoltrate tramite il server.
5. Vantaggi del meccanismo di rilevamento dei servizi
Ridurre l'accoppiamento tra i servizi:
I microservizi non hanno bisogno di conoscere direttamente gli indirizzi di rete degli altri, devono solo comunicare attraverso il centro di registrazione dei servizi.
Migliora la scalabilità e la flessibilità del sistema:
Poiché i servizi cambiano dinamicamente (ad esempio espansione, riduzione, migrazione e così via), il centro di registrazione del servizio può aggiornare le informazioni sull'istanza del servizio in tempo reale per garantire che la comunicazione tra i servizi non venga influenzata.
Supporta il bilanciamento del carico e il failover:
Il client può ottenere l'elenco di indirizzi di più istanze del servizio dal centro di registrazione del servizio e selezionarne una per la comunicazione in base alla policy di bilanciamento del carico. Quando un'istanza del servizio non è disponibile, il registro del servizio può contrassegnarla automaticamente come non integra ed evitare di inviarle richieste.
6. Strumenti comuni di rilevamento dei servizi
Eureka:
Uno strumento di rilevamento dei servizi sviluppato da Netflix, utilizzando la modalità di rilevamento del client. È molto leggero e facile da integrare e utilizzare.
Console:
Strumento del centro di rilevamento e configurazione dei servizi sviluppato da HashiCorp. Fornisce una soluzione relativamente completa che include il controllo dello stato del servizio e altre funzioni e supporta i protocolli HTTP e DNS.
Custode dello zoo:
Apache ZooKeeper è un servizio di coordinamento distribuito open source che può essere utilizzato anche per l'individuazione dei servizi. Fornisce blocchi distribuiti, servizi di denominazione e altre funzioni e supporta una varietà di librerie client.
Nell'architettura dei microservizi, il meccanismo di rilevamento dei servizi realizza le funzioni di registrazione dinamica e di query delle istanze del servizio attraverso il centro di registrazione, riducendo l'accoppiamento tra i servizi e migliorando la scalabilità e la flessibilità del sistema.