Articles

Spring Cloud Service Discovery with Netflix Eureka

Learn to create microservice, based on Spring cloud, on Netflix Eureka registry server and how other microservices (Eureka clients) use it to register and discover services to call their APIs.

usaremos a API da nuvem de Primavera baseada no arranque. Usaremos o servidor Netflix Eureka para construir o servidor de registro de serviços e clientes Eureka que se registrarão e descobrirão outros serviços para chamar de APIs REST.

visão geral

vamos criar três microservices para este exemplo Eureka Netflix.

  1. Eureka Service Registry Server-this microservice will provide the service registry and discovery server.serviço de microsserviço de estudante – que dará alguma funcionalidade baseada na Entidade Estudantil. Trata-se de um serviço baseado no descanso e, mais importante ainda, de um serviço de cliente eureka, que falará com o serviço eureka para se inscrever no registo de serviços.
  2. serviço de escola-o mesmo tipo de serviço de estudante – característica adicional é que ele vai invocar o serviço de estudante com o mecanismo de pesquisa de serviço. Não usaremos URL absoluto do serviço estudantil para interagir com esse serviço.

Aqui está o diagrama de interacção entre os três serviços acima listados.

Componente de Interacção com os outros

Tecnologia de Pilha e de tempo de execução

  • Java 1.8
  • Eclipse IDE
  • Spring cloud
  • Spring boot
  • Spring Rest
  • Maven

Table of ContentsWhat is Netflix Eureka Server and Clients?Eureka Service Registry ServerEureka Client - Student ServiceEureka Client - School ServiceDemo of Service Discovery and CallingThings to check if facing any errorSummary

o que é o servidor Eureka Netflix e clientes?

como sabemos hoje em dia, há um grande momento em torno Dos micro-serviços. A transição da arquitetura monolítica para a baseada em microsserviços dá muitos benefícios para o futuro em termos de manutenção, escalabilidade, alta disponibilidade, etc. No entanto, ao mesmo tempo, há muitos desafios também ao fazer esta migração. Uma delas é manter endereços de micro-serviços individuais. Esta tarefa pode ser extremamente complexa, dependendo do número de serviços e da sua natureza dinâmica. Se toda a infra-estrutura é distribuída e há alguma replicação também, então a manutenção desses endereços de serviço torna-se mais difícil.

para resolver isso, na computação distribuída existe um conceito chamado “registro de Serviço e descoberta” onde um Servidor Dedicado é responsável por manter o registro de todo o Microservice que foi implantado e removido. Isto agirá como uma lista telefónica de todas as outras aplicações/micro-serviços.

pense nisto como um serviço de pesquisa onde os micro-serviços (clientes) podem se registrar e descobrir outros micro-serviços registrados. Quando um cliente se registra com Eureka, ele fornece metadados como host, port e indicador de saúde, permitindo assim que outros microservices o descubram. O servidor discovery espera uma mensagem de batimento cardíaco regular de cada instância de microservice. Se uma instância começa a falhar consistentemente em enviar um batimento cardíaco, o servidor discovery irá remover a instância de seu registro. Desta forma teremos um ecossistema muito estável de micro-serviços colaborando entre si, e além disso não temos que manter manualmente o endereço de outros Micro-Serviços, o que é uma tarefa quase impossível se a escala acima/abaixo é muito frequente, a pedido e usamos host virtual para hospedar os Serviços especialmente no ambiente de nuvem.

Eureka Service Registry Server

Follow these steps to create and run Eureka server.

criar o servidor Eureka

criar um projecto de arranque de primavera a partir do Portal inicializador de Arranque De Primavera com duas dependências. Eureka server and Actuator. Dê outras coordenadas Maven GAV e baixe o projeto.

Eureka Serviço de Servidor de Projeto de Geração

Descompacte e importar o projeto no Eclipse como existente projeto maven. Neste passo, todas as dependências necessárias serão baixadas do repositório maven.

now open SpringEurekaServerApplicationclass that spring already has generated in the downloaded project and add the@EnableEurekaServer annotation on the class.

package com.example.howtodoinjava.springeurekaserver; import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer; @EnableEurekaServer@SpringBootApplicationpublic class SpringEurekaServerApplication { public static void main(String args) { SpringApplication.run(SpringEurekaServerApplication.class, args); }}

construir o projeto mais uma vez. Com esta anotação, este artefacto vai agir como um registro de microservice e servidor de descoberta.

Configuração do Servidor

Criar um arquivo chamado application.ymlsrc\main\resources diretório. Adicione estas propriedades –

server: port: ${PORT:8761} # Indicate the default PORT where this service will be startedeureka: client: registerWithEureka: false#telling the server not to register himself in the service registry fetchRegistry: false server: waitTimeInMsWhenSyncEmpty: 0#wait time for subsequent sync

crie outro ficheiro chamado bootstrap.yml no src\main\resources directory. Adicionar estas propriedades –

spring: application: name: eureka cloud: config: uri: ${CONFIG_SERVER_URL:http://localhost:8888}

Test Eureka Server

iniciar a aplicação como aplicação de arranque de mola. Abrir o navegador e ir para , deverá ver a página inicial do servidor eureka que se parece em baixo.

Eureka Console, Sem Qualquer Cliente

por Favor, note que neste ponto não existe nenhum serviço está registrado aqui que é esperado e, uma vez que o jogo vai rodar até os serviços de cliente, este servidor será atualizado automaticamente com os detalhes dos serviços do cliente.

Eureka Client-Student Service

siga estes passos para criar e executar Eureka client running student service.

Criar Eureka Projeto do Cliente

Criar uma Mola de arranque do projecto do inicializador portal com quatro dependências i.e. ActuatorWebRest RepositoriesEureka Discovery. Dê outras coordenadas Maven GAV e baixe o projeto.

Cliente de Geração de projetos –
Aluno Microservice

Descompacte e importar o projeto no Eclipse como existente projeto maven.

Agora adicione o@EnableEurekaClient anotação na classe de aplicação de arranque de molas presente emsrc pasta. Com esta anotação, este artefacto irá agir como um cliente spring discovery e irá registar-se no servidor eureka anexado a este serviço.

package com.example.howtodoinjava.springeurekaclientstudentservice; import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.cloud.netflix.eureka.EnableEurekaClient; @SpringBootApplication@EnableEurekaClientpublic class SpringEurekaClientStudentServiceApplication { public static void main(String args) { SpringApplication.run(SpringEurekaClientStudentServiceApplication.class, args); }}

Configuração de Cliente

Criar um arquivo chamado application.ymlsrc\main\resources diretório e adicionar linhas abaixo.

server: port: 8098#default port where the service will be startedeureka:#tells about the Eureka server details and its refresh time instance: leaseRenewalIntervalInSeconds: 1 leaseExpirationDurationInSeconds: 2 client: serviceUrl: defaultZone: http://127.0.0.1:8761/eureka/ healthcheck: enabled: true lease: duration: 5spring: application: name: student-service #current service name to be used by the eureka server management: security: enabled: false#disable the spring security on the management endpoints like /env, /refresh etc. logging: level: com.example.howtodoinjava: DEBUG

Add REST API

now add one RestController and expose one rest endpoint for getting all the student details for a particular school. Aqui estamos expondo /getStudentDetailsForSchool/{schoolname} endpoint para servir o propósito de Negócio. Para simplificar, estamos codificando os detalhes do aluno.

Student classe é um POJO simples.

Test Eureka Client

iniciar este projecto como aplicação de arranque de primavera. Agora verifique se este serviço foi registrado no servidor Eureka automaticamente. Vá à consola de Serviços Eureka e refresque a página. Agora, se tudo correr bem, veremos uma entrada para o serviço estudantil na consola de serviços eureka. Isto indica que tanto o servidor Eureka quanto o cliente estão cientes um do outro.

Eureka console com a Estudante de serviço registrado

Vamos agora verificar que o /getStudentDetailsForSchool/{schoolname} ponto de extremidade é instalado e funcionando. Go to browser and go to , it will give the Student details for a particular school abcschool.

Estudante de resposta do Serviço

Eureka Cliente – Escola de Serviço

Agora vamos criar a escola de serviço que irá registrar com eureka servidor – e vai descobrir e invocar estudante de serviço sem codificado caminho de URL.

siga os passos exatos para criar o serviço estudantil, para criar e executar o cliente Eureka executando o serviço escolar também.

Criar Eureka Projeto do Cliente

Criar uma Mola de arranque do projecto do inicializador portal com quatro dependências i.e. ActuatorWebRest RepositoriesEureka Discovery. Dê outras coordenadas Maven GAV e baixe o projeto.

Unzip e importar o projecto para o Eclipse como projecto maven existente.

Agora adicione o@EnableEurekaClient anotação na classe de aplicação de arranque de molas presente emsrc pasta. Com esta anotação, este artefacto irá agir como um cliente spring discovery e irá registar-se no servidor eureka anexado a este serviço.

package com.example.howtodoinjava.springeurekaclientschoolservice;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.cloud.netflix.eureka.EnableEurekaClient;@SpringBootApplication@EnableEurekaClientpublic class SpringEurekaClientSchoolServiceApplication {public static void main(String args) {SpringApplication.run(SpringEurekaClientSchoolServiceApplication.class, args);}}

Configuração de Cliente

Criar um arquivo chamado application.ymlsrc\main\resources diretório e adicionar linhas abaixo. Estas configurações são muito semelhantes ao serviço de estudantes, exceto número de porta e nome de serviço.

adicione uma API de descanso que consuma a API de descanso do student service

Agora adicione uma RestController e exponha um endpoint de descanso para obter detalhes escolares. Este endpoint irá usar o URL do estilo de Descoberta do serviço usando o nome da aplicação, em vez de URL completo com a porta Máquina:. deste modo, podemos livrar-nos da configuração específica do serviço e podemos dar ao serviço a responsabilidade de procurar o servidor eureka e o modelo de descanso fornecido aqui. Nós também podemos aplicar balanceamento de carga (veja @LoadBalanced anotação) aqui se as múltiplas instâncias estão correndo para o mesmo serviço.

o URL que temos usado é . Claramente estamos usando apenas o nome de serviço student-service no lugar de host:port. Isto será tratado internamente pelo spring framework, eureka server e rest template em conjunto.

Demo of Service Discovery and Calling

Now start the school service as well. Os três serviços foram iniciados. Verifica a consola do servidor eureka. Tanto os Serviços de estudantes como os serviços escolares devem estar aí registados.

Eureka console com ambos os serviços cadastrados

Vá ao navegador e vá para o http://localhost:9098//getSchoolDetails/abcschool, ele irá dar a escola por uma escola particular abcschool detalhes. Nós invocamos o serviço de estudantes internamente. A resposta será a aparência do navegador:

a Escola do Serviço de Resposta

Coisas para verificar se diante de qualquer erro

  1. Notas @EnableEurekaServer e @EnableEurekaClient são o coração do ecossistema de aplicativos. Sem essas duas coisas não vai funcionar.
  2. certifique-se de que, no momento de iniciar o serviço cliente de configuração, o serviço Servidor eureka já está em execução, caso contrário pode levar algum tempo para registrar, o que pode criar confusão durante o teste.

resumo

vimos a facilidade com que se pode implantar o registro de serviço e o servidor de descoberta, bem como os clientes de forma eficiente. A mola está mantendo muitas coisas internamente. Aqui estamos apenas usando algumas anotações e configuração muito mínima para alcançar todas as coisas rapidamente.