Nel titolo, abbiamo visto tre parole d’ordine:
- Microservices
- Netflix Eureka
- Discovery (Registry)
Che cos’è un microservice?
In parole semplici, i microservizi sono cluster di piccole applicazioni che lavorano insieme in coordinamento per fornire una soluzione completa.
Quando diciamo tante piccole applicazioni che funzionano insieme in modo indipendente, allora avranno tutte i loro URL e porte. In questo scenario, sarebbe molto ingombrante mantenere tutti questi microservizi in esecuzione in sincronia e, soprattutto, con il monitoraggio. Questo problema aumenterà notevolmente quando inizieremo a implementare i bilanciatori di carico.
Per risolvere questo problema, abbiamo bisogno di uno strumento che monitorizzi e mantenga il registro di tutti i microservizi nell’ecosistema.
Che cos’è Netflix Eureka?
È uno strumento fornito da Netflix per fornire una soluzione al problema di cui sopra. È composto dal server Eureka e dai client Eureka. Eureka Server è di per sé un microservizio a cui tutti gli altri microservizi si registrano. Gli Eureka Client sono i microservizi indipendenti. Vedremo come configurare questo in un ecosistema di microservizi.
Io userò Spring Boot per creare alcuni microservizi che agiranno come Eureka Clients e un Discovery Server che sarà un Eureka Server. Ecco la struttura completa del progetto:
Discutiamo l’Eureka Discovery Server
Questo è l’Eureka Server, e per questo, dobbiamo includere una dipendenza Eureka nel progetto. Di seguito il pom.xml per Eureka Discovery Server.
Inoltre, dobbiamo aggiornare il file delle proprietà di questo progetto per indicare che è un discovery server e non un client.
eureka.instance.hostname=localhosteureka.client.register-with-eureka=falseeureka.client.fetch-registry=false
Per vincolare l’applicazione di scoperta a una porta specifica e dare un nome all’applicazione, dobbiamo aggiungere anche quanto segue:
server.port=8000spring.application.name=DiscoveryServer
Un’ultima cosa da fare è annotare l’applicazione Spring Boot per abilitarla come server Eureka. Per farlo, dobbiamo aggiungere @EnableEurekaServer
.
Avviando l’applicazione vedremo una UI fornita da Eureka per elencare tutti i server che vengono registrati. Ma, a questo punto, non ne abbiamo nessuno!
Ora, aggiungiamo qualche microservizio all’ecosistema e registriamolo al discovery server. Per questo, dobbiamo anche aggiungere le dipendenze richieste in ogni servizio e registrarle al server. Vedremo come nei dettagli qui sotto.
Ho creato tre semplici microservizi (microservice1, microservice2, microservice3) con Spring Boot e ognuno in esecuzione sulla propria porta (8002, 8003 e 8004).
Come client, dovrebbe registrarsi al server, e questo avviene nel file delle proprietà, come sotto.
L’applicazione principale sarà annotata con @EnableEurekaClient
in ogni microservizio.
Avvia questa applicazione per farla girare sulla porta 8004 e si registrerà automaticamente al discovery server. In modo simile, ho creato altri due microservizi e li ho registrati sul discovery server.
Possiamo vedere che tre server sono in esecuzione nell’ecosistema e possiamo monitorare lo stato anche di questi server.
Questo facilita il monitoraggio di tutti i server e delle loro repliche nel caso in cui stiamo usando un bilanciatore di carico.
Spero che questo vi aiuti ad iniziare ad usare Discovery Server e i client usando Eureka.