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
- Tecnologia de Pilha e de tempo de execução
- o que é o servidor Eureka Netflix e clientes?
- Eureka Service Registry Server
- criar o servidor Eureka
- Configuração do Servidor
- Test Eureka Server
- Eureka Client-Student Service
- Criar Eureka Projeto do Cliente
- Configuração de Cliente
- Add REST API
- Test Eureka Client
- Eureka Cliente – Escola de Serviço
- Criar Eureka Projeto do Cliente
- Configuração de Cliente
- adicione uma API de descanso que consuma a API de descanso do student service
- Demo of Service Discovery and Calling
- Coisas para verificar se diante de qualquer erro
- resumo
visão geral
vamos criar três microservices para este exemplo Eureka Netflix.
- 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.
- 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.
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.
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 SpringEurekaServerApplication
class 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.yml
src\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.
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. Actuator
Web
Rest Repositories
Eureka Discovery
. Dê outras coordenadas Maven GAV e baixe o projeto.
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.yml
src\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.
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
.
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. Actuator
Web
Rest Repositories
Eureka 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.yml
src\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.
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:
Coisas para verificar se diante de qualquer erro
- Notas
@EnableEurekaServer
e@EnableEurekaClient
são o coração do ecossistema de aplicativos. Sem essas duas coisas não vai funcionar. - 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.