Sfruttando il Console come Service Discovery, Health Checking e Key Value (KV) Store in Go Microservices

Prima di approfondire i nostri argomenti principali, voglio che tu sappia cos’è il Console . Console è un sistema distribuito e altamente disponibile. In generale, Console offre quattro funzionalità, che sono:

In questo post tratterò solo tre caratteristiche principali da quelle che ho menzionato sopra; Service Discovery , Health Checking e Key Value (KV) Store . Di recente, ho scoperto che quelle cose possono essere utili funzionalità in grado di risolvere diversi casi nel sistema che adottano il microservizio come architettura. Cominciamo dalla prima e dalla seconda funzione.

Rilevamento del servizio e controllo dello stato

Service Discovery parla di come scopriamo l’indirizzo dei servizi a cui comunicheremo. In una moderna architettura di microservizi basata su cloud, questo sarà un problema serio perché le istanze del servizio hanno assegnato in modo dinamico il percorso di rete. Dobbiamo possedere questa funzione per automatizzarla. Esistono due modelli di rilevamento del servizio:

  • Scoperta del servizio lato client
  • Individuazione del servizio lato server

Individuazione del servizio lato client , il client ha determinato la posizione di rete delle istanze di servizio disponibili ed effettua una richiesta attraverso di esse. Innanzitutto, il client ottiene i dati sulla posizione della rete eseguendo una query al registro di servizio ed esegue la richiesta di bilanciamento del carico per scegliere il servizio disponibile per effettuare una richiesta. La seguente figura seguente descrive il funzionamento del rilevamento del servizio lato client:

Individuazione del servizio lato server , il client effettua una richiesta tramite route o un bilanciamento del carico, quindi il bilanciamento del carico eseguirà una query al registro di servizio e sceglierà il servizio disponibile per instradare la richiesta, questa figura seguente descrive il funzionamento del modello di rilevamento lato server:

Dai due schemi sopra, vediamo una parte che non abbiamo mai menzionato prima, che è Service Registry . È la parte più importante nel sistema di rilevamento dei servizi, perché tutte le transazioni come la registrazione e la cancellazione verranno archiviate al suo interno. Quindi facciamolo nel codice Go.

Innanzitutto, supponiamo che i nostri microservizi siano ancora in fase iniziale, abbiamo solo due servizi principali, che sono il servizio utente e il servizio prodotto. Iniziamo con la registrazione di ciascun servizio al console del registro di servizio.

Key Value (KV) Store

Come il suo nome, ci saranno chiave e valore che compongono i dati. Questa funzionalità di solito viene utilizzata per archiviare la configurazione, poiché non è necessario riavviare il nostro servizio Go per leggere la configurazione, poiché è centralizzata e come API. Di solito ho usato l’oggetto JSON per memorizzare la configurazione, e sì, il supporto di Console per convalidare la nostra configurazione JSON è un oggetto JSON valido o no, è fantastico.

Possiamo creare il nostro negozio KV o la nostra configurazione centralizzata nella dashboard di Console. Ecco come appare la configurazione:

Nell’immagine sopra, possiamo vedere che creiamo una configurazione con la configurazione del prodotto denominata , ed è un oggetto JSON, e abbiamo appena spuntato la casella di controllo JSON di convalida, la nostra configurazione verrà convalidata come oggetto JSON da Consul, e sì, è davvero interessante. E ora, chiamiamo l’API di configurazione del prodotto all’interno di product-service. Realizzeremo un’API chiamata product-configuration che chiama la configurazione del prodotto e la restituisce come JSON.

Sì, l’abbiamo fatto, ottenendo con successo la configurazione del prodotto che creiamo nella dashboard di Consul. Possiamo cambiarlo come vogliamo e il servizio prodotti lo visualizzerà come desideri.

Può essere così, la cosa semplice che ho imparato dal Console. Puoi dare un’occhiata alle risorse complete sul mio Github. Grazie.

risorse:

Console di HashiCorp
Service Discovery in un’architettura di microservizi – NGINX
Modello di microservizi: modello di rilevamento del servizio sul lato server
Service Discovery in un’architettura di microservizi – DZone Microservices