In de kop zagen we drie buzzwords:

  1. Microservices
  2. Netflix Eureka
  3. Discovery (Registry)

What Is a Microservice?

In eenvoudige bewoordingen zijn microservice(s) clusters van kleine applicaties die gecoördineerd samenwerken om een complete oplossing te bieden.

Wanneer we het hebben over een heleboel kleine applicaties die onafhankelijk van elkaar samenwerken, dan zullen ze allemaal hun eigen URL’s en poorten hebben. In dat scenario zou het erg omslachtig zijn om al deze microservices synchroon te laten lopen, en nog belangrijker, met monitoring. Dit probleem zal nog veel groter worden wanneer we load balancers gaan implementeren.

Om dit probleem op te lossen, hebben we een tool nodig die het register van alle microservices in het ecosysteem bewaakt en onderhoudt.

Wat is Netflix Eureka?

Dit is een tool die door Netflix wordt geleverd om een oplossing te bieden voor het bovenstaande probleem. Het bestaat uit de Eureka Server en Eureka clients. Eureka Server is op zichzelf een microservice waar alle andere microservices zich bij aanmelden. Eureka Clients zijn de onafhankelijke microservices. We zullen zien hoe we dit kunnen configureren in een microservice-ecosysteem.

Ik zal Spring Boot gebruiken om een paar microservices te maken die zullen fungeren als Eureka Clients en een Discovery Server die een Eureka Server zal zijn. Hier is de volledige projectstructuur:

microservice1

Let’s Discuss the Eureka Discovery Server

Dit is de Eureka Server, en daarvoor moeten we een Eureka-dependency in het project opnemen. Hieronder staat de pom.xml voor Eureka Discovery Server.

microService2

Ook moeten we het eigenschappenbestand voor dit project bijwerken om aan te geven dat het om een discovery server gaat en niet om een client.

eureka.instance.hostname=localhosteureka.client.register-with-eureka=falseeureka.client.fetch-registry=false

Om de discovery-toepassing aan een specifieke poort te binden en de toepassing een naam te geven, moeten we ook het volgende toevoegen:

server.port=8000spring.application.name=DiscoveryServer

microService3

Eén laatste ding dat we moeten doen, is de Spring Boot-toepassing annoteren om deze als een Eureka-server in te schakelen. Hiervoor moeten we @EnableEurekaServer .

microService4

Als we de applicatie opstarten, zullen we een UI zien die door Eureka wordt geleverd om een lijst weer te geven van alle servers die zijn geregistreerd. Maar op dit moment hebben we er nog geen!

microService5

Nu moeten we een paar microservices toevoegen aan het ecosysteem en deze registreren bij de zoekserver. Hiervoor moeten we ook de afhankelijkheden toevoegen die nodig zijn in elke service en ze registreren bij de server. We zullen zien hoe in de details hieronder.

Ik heb drie eenvoudige microservices (microservice1, microservice2, microservice3) gemaakt met Spring Boot en elk draait op zijn eigen poort (8002, 8003 en 8004).

microService6

Als client moet het zichzelf registreren bij de server, en dat gebeurt in het property-bestand, zoals hieronder.

microService7

De hoofdapplicatie wordt in elke microservice geannoteerd met @EnableEurekaClient.

microService8

Boot deze applicatie om te draaien op poort 8004 en deze zal zichzelf automatisch registreren bij de discovery server. Op vergelijkbare wijze heb ik nog twee microservices gemaakt en deze geregistreerd bij de discovery server.

microService9

We kunnen zien dat er drie servers in het ecosysteem draaien en we kunnen de status van deze servers ook monitoren.

Dit vergemakkelijkt het monitoren van alle servers en hun replica’s in het geval we een load balancer gebruiken.

Ik hoop dat dit u op weg helpt met het gebruik van Discovery Server en Clients met Eureka.

Geef een antwoord

Het e-mailadres wordt niet gepubliceerd.