No cabeçalho, vimos três buzzwords:
- Microservices
- Netflix Eureka
- Discovery (Registry)
O que é um Microservice?
Em palavras simples, microservice(s) são clusters de pequenas aplicações que trabalham juntas em coordenação para fornecer uma solução completa.
Quando dizemos que muitas pequenas aplicações rodam juntas de forma independente, então todas elas terão suas próprias URLs e portas. Nesse cenário, seria muito trabalhoso manter todos esses microserviços rodando em sincronização, e mais importante, com monitoramento. Este problema aumentará muito quando começarmos a implementar balanceadores de carga.
Para resolver este problema, precisamos de uma ferramenta que monitorize e mantenha o registo de todos os microserviços no ecossistema.
O que é Netflix Eureka?
Esta é uma ferramenta fornecida pela Netflix para fornecer uma solução para o problema acima mencionado. Ela consiste no servidor Eureka e nos clientes Eureka. O Servidor Eureka é em si mesmo um microserviço para o qual todos os outros microserviços se registram. Os clientes Eureka são os microserviços independentes. Veremos como configurar isso em um ecossistema de microserviços.
I estará usando Spring Boot para criar alguns microserviços que atuarão como Clientes Eureka e um Servidor Discovery que será um Servidor Eureka. Aqui está a estrutura completa do projeto:
Discuta o Servidor Eureka Discovery
Este é o Servidor Eureka, e para isso, temos que incluir uma dependência Eureka no projeto. Abaixo está o pom.xml para o Eureka Discovery Server.
Além disso, precisamos atualizar o arquivo de propriedades para este projeto para indicar que é um servidor de descoberta e não um cliente.
eureka.instance.hostname=localhosteureka.client.register-with-eureka=falseeureka.client.fetch-registry=false
Para ligar a aplicação de descoberta a uma porta específica e nomear a aplicação, precisamos adicionar o seguinte:
server.port=8000spring.application.name=DiscoveryServer
Uma última coisa a fazer é anotar a aplicação Spring Boot para habilitá-la como um Eureka Server. Para fazer isso, precisamos adicionar @EnableEurekaServer
.
Bootar a aplicação vamos ver uma IU fornecida pelo Eureka para listar todos os servidores que se registram. Mas, neste ponto, não temos nenhum!
Agora, vamos adicionar alguns microserviços ao ecossistema e registrá-los no servidor de descoberta. Para isso, precisamos também adicionar as dependências necessárias em cada serviço e registrá-las no servidor. Veremos como nos detalhes abaixo.
Criei três microservices simples (microservice1, microservice2, microservice3) com Spring Boot e cada um rodando em sua própria porta (8002, 8003 e 8004).
Como cliente, ele deve se registrar no servidor, e isso acontece no arquivo de propriedade, como abaixo.
A aplicação principal será anotada com @EnableEurekaClient
em cada microservice.
Bootar esta aplicação para rodar na porta 8004 e ela se registrará automaticamente no servidor de descoberta. De forma semelhante, criei mais dois microserviços e os registrei no servidor de descoberta.
Vemos que três servidores estão rodando no ecossistema e podemos monitorar o estado desses servidores também.
Isso facilita o monitoramento de todos os servidores e suas réplicas caso estejamos usando um balanceador de carga.
Espero que isso ajude você a começar a usar o Discovery Server e os Clientes usando Eureka.