Pode -se dizer que a governança de serviço é o módulo mais central e básico da arquitetura de microsserviços. É usado principalmente para realizar o registro automatizado e a descoberta de várias instâncias de microsserviço.
O Spring Cloud Eureka faz parte do pacote de microsserviços Netflix da Spring Cloud, que é o principal responsável por concluir as funções de governança de serviço na arquitetura de microsserviços.
Este artigo usa pequenos exemplos simples para compartilhar como gerenciar o serviço através da Eureka:
=============== Eu sou a linda linha divisória ===================================
1. Construa um centro de registro de serviço
Primeira lista a estrutura completa do diretório:
O processo de construção é o seguinte:
1. Crie um projeto Maven: Eureka (implementação específica omitida)
2. Modifique o arquivo POM e introduza dependências
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd "> <ModelVersion> 4.0.0 </modelversion> <voundid> com.sam </groupid> <stifactId> eureka </stifactid> <versunha> 0,0.1-SNAPSHOT </versão> <PuerpId> org.springframework.boot </frugiD> <TRATIFACTID> Spring-boot-Starter-Parent </ArtifactId> <Versão> 1.5.1.release </sipers> </parentings> <! <PuerpId> org.springframework.cloud </frupiD> <ArtifactId> Dependências de mola-cloud </ArtifactId> <versão> Camden.sr6 </versão </type> pom </type> <scope> importação </cope> </ipendency> </dependency> </dependenceManagement-Sendências> <ependências> </SCOPE> <! <GrupidId> org.springframework.cloud </frupid> <TRATIFACTID> Spring-cloud-starter-eureka-severver </artifactId> </dependency> </dependency> </dependências> </ject>
3. Crie uma aula de inicialização
/** * * @EnableEurekaServer * The service registration center used to specify that the project is Eureka*/@EnableEurekaServer@SpringBootApplicationpublic class EurekaApp { public static void main(String[] args) { SpringApplication.run(EurekaApp.class, args); }} 4. Configure o arquivo Application.Properties
#Set o número da porta de serviço do tomcat servidor.port = 1111#Defina o nome do serviço Spring.Application.Name = Eureka-Serviceeureka.instance.hostname = localhost#Centro de registro não precisa se registrar o serviço de serviço. Leureka.client.serviceurl.DefaultZone = http: // $ {eureka.instance.hostname}: $ {server.port}/eureka 5. Inicie o serviço e acesse -o, e veremos uma foto como esta:
2. Registre um provedor de serviços
Primeira lista a estrutura completa do diretório:
O processo de construção é o seguinte:
1. Crie um projeto Maven: Hello-Service (implementação específica omitida)
2. Modifique o arquivo POM e introduza dependências
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd "> <ModelVersion> 4.0.0 </modelVersion> <voupId> com.sam </groupid> <stifactId> hello-service </artifactId> <versão> 0,0.1-snapshot </versão> <PuerpId> org.springframework.boot </foupiid> <TRAFACTID> Spring-Boot-Starter-Parent </ArtifactId> <Versão> 1.5.1.reLease </sipers> </parenti> <pendepergies> <navaversion> 1.8 </javaversion> </Properties> <idependencies> <GroupId> org.springframework.cloud </frupiD> <ArtifactId> Dependências de mola-cloud </ArtifactId> <Version> Camden.sr6 </versão </type> pom </type> <ctope> import </scope> </dependência> </dependency> </dependenceManagement-Sencens> <nemence> <! <GrupidId> org.springframework.cloud </frupiD> <ArtifactId> Spring-Cloud-Starter-eureka </storkactid> </pendendency> </dependency> </dependências> </jecty>
3. Crie uma aula de inicialização
/***** @Enablediscoveryclient* Deixe o serviço usar o servidor Eureka* para implementar o registro e a descoberta do serviço**/@EnablediscSoveryclient@SpringboOtapplicationPublic Classe helloapp {public static void main (string [] args) {springApplication.run (helloapp.class, args); }}4. Crie um controlador
@RestControllerPublic Classe Hellocontroller {Logger Logger = LoggerFactory.getLogger (hellocontroller.class); @Autowired Discoveryclient Discoveryclient; @RequestMapping ("/hello") public String hello () {ServiceInstance Instância = Discoveryclient.getLocalServiceInstance (); // ID do serviço de impressão logger.info ("*********" + instance.getServiceId ()); Retornar "Olá, isso é Hello-Service"; }} 5. Configure o arquivo Application.Properties
Server.port = 9090#Defina o nome do serviço Spring.Application.Name = Hello-Service#Defina o URL do Centro de Registro de Serviço. Este serviço deve se registrar no Centro de Registro de Serviço Eureka.client.serviceurl.defaultZone = http: // localhost: 1111/eureka
6. Início e teste
1.) Após o início, o console da Hello-Service terá esta palavra (xxx representa o nome do seu PC)
Copie o código da seguinte
As seguintes palavras serão impressas no console Eureka (xxx representa o nome do seu PC)
Copie o código da seguinte
2.) Visite localhost: 1111 novamente e você descobrirá que existem serviços registrados no Centro de Registro
3. Descoberta e consumo de serviço
A estrutura completa do diretório é a seguinte:
Processo de construção:
1. Crie um projeto Maven (implementação específica omitida)
2. Modifique o arquivo POM e introduza dependências
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd "> <ModelVersion> 4.0.0 </modelVersion> <voundid> com.sam </foupid> <stifactId> hello-consumer </artifactId> <Versão> 0,0.1-snapshot </versão> <PuerpId> org.springframework.boot </foupiid> <TRAFACTID> Spring-Boot-Starter-Parent </ArtifactId> <Versão> 1.5.1.reLease </sipers> </parenti> <pendepergies> <navaversion> 1.8 </javaversion> </Properties> <idependencies> <PupidId> org.springframework.cloud </frupiD> <ArtifactId> Dependências de mola-cloud </ArtifactId> <versão> Camden.sr6 </versão </type> pom </type> scope> import </scope> </dependency> </dependency> </dependenceGerManagem-Sergente> <ependências> <! <GrupidId> org.springframework.cloud </frupiD> <ArtifactId> Spring-Cloud-Starter-eureka </stutifactId> </dependency> <!-Introduce dependência de fita é usada para obter o balanceamento de carga. Estamos apenas usando aqui, para que não o apresentemos em outro lugar-> <Depence> <Puperid> org.springframework.cloud </frupiD> <stifactId> Spring-Cloud-Starter-Ribbon </stutifactId> </dependency> </dependências> </project>
Existem mais dependências de fita do que provedores de serviços de serviço da Hello-Service aqui
3. Crie uma aula de inicialização
@Enablediscoveryclient@SpringboOTApplicationPublic Classe ConsumerApp {//@Bean é aplicado no método e usado para definir o valor de retorno do método para ser bean @bean @loadbalanced //@loadBalanced para obter o balanceamento de carga Public Resttemplate Resttemplate () {return Resttemplate (); } public static void main (string [] args) {springapplication.run (consumerApp.class, args); }}@Enablediscoveryclient também deve ser usado aqui para deixar o serviço usar o servidor Eureka para realizar o registro e descoberta de serviços
4. Crie um controlador
@RestControllerPublic Classe ConsumerController {// O RestTemplate injetado aqui é uma instância configurada via @Bean em com.sam.consumerApp @autowired resttemplate resttemplate; @RequestMapping ("/hello-consumer") public string helloconsumer () {// chamando o serviço Hello-Service, observe que o nome do serviço é usado aqui, não o IP+Port Resttemplate.getFject específico (http: // hello -service/hello, string.class); Retornar "Hello Consumer Acabar !!!"; }}5. Configure o arquivo Application.Properties
server.port = 9999spring.application.name = hello-consumereureka.client.serviceurl.DefaultZone = http: // localhost: 1111/eureka#o projeto de configuração aqui é o mesmo que o provedor de serviços hellowerice
6. Iniciar, teste 1.) Iniciar Eureka. Para mostrar o efeito de ser responsável pelo equilíbrio, nosso Hello-Service inicia dois serviços. As etapas específicas para iniciar dois serviços são os seguintes
O exposto acima é a etapa de inicialização do Hello-Service1, com a porta número 9090; O mesmo método está definido como Hello-Service2, com o número da porta 9091 (a implementação específica é omitida).
2.) Inicie o Hello-Consumer
3.) Visite http: // localhost: 1111/novamente e você descobrirá que existem 2 Serviços de Serviço de Hello (os números da porta são 9090 e 9091) e 1 serviço de consumo da Hello-Consume
4.) Depois de visitar http: // localhost: 9999/Hello-Consumer várias vezes, você descobrirá que o Hello-Service1 e o Hello-Service2 serão chamados por sua vez (responsável pelo equilíbrio foi alcançado) e você pode confirmar o conteúdo através do console de ambos (lembre-se de que temos um loggerLogger.info ("******* Sim, esta é a impressão)
4. Resumo
Os exemplos acima percebem a governança básica de serviço:
PS: Deixe -me explicar aqui que o IDE que eu uso é o Spring Tool Suite, que é a versão personalizada do Spring Eclipse, que é conveniente para usarmos a Spring for Development. Amigos interessados podem aprender sobre isso no Baidu.
O exposto acima é todo o conteúdo deste artigo. Espero que seja útil para o aprendizado de todos e espero que todos apoiem mais o wulin.com.