O que é Spring Cloud Eureka
Spring Cloud Eureka é um componente na nuvem de primavera. É encapsulado secundário com base na Netflix Eureka, que é principalmente responsável por concluir as funções de governança do serviço na estrutura do microsserviço. O Spring Cloud adiciona configuração de automação no estilo de inicialização do Spring ao Eureka. Precisamos apenas de dependências e anotações de referência simples para permitir que a Spring Boot integre facilmente aplicativos de microsserviço ao Sistema de Governança de Serviços Eureka.
Governança de serviço
A governança de serviço é o módulo mais central e básico da estrutura de microsserviço. É usado principalmente para realizar o registro automatizado e a descoberta de várias instâncias de microsserviço.
No início, não havia muitos serviços de sistema de microsserviço que pudessem ser construídos e podemos concluir a chamada do serviço por meio de alguma configuração estática. Por exemplo, existem dois serviços A e B. Quando o Serviço A precisa chamar o Serviço B para concluir uma operação comercial, a fim de obter alta disponibilidade do Serviço B, independentemente de usarmos o equilíbrio complexo no servidor ou o balanceamento de carga no cliente, precisamos manter manualmente uma lista de instâncias B. No entanto, com o desenvolvimento dos negócios, as funções do sistema se tornam cada vez mais complexas, e os microsserviços correspondentes estão se tornando cada vez mais difíceis.
Para resolver esse problema, um grande número de estruturas e produtos de governança de serviço foram gerados. Essas estruturas realmente giram em torno de mecanismos de registro e descoberta de serviços para concluir o gerenciamento automatizado de instâncias de aplicativos de microsserviço.
Registro de serviço
Na estrutura de governança de serviço, um centro de registro de serviço geralmente é construído. Cada unidade de instância de serviço registra seus próprios serviços no Centro de Registro e informa ao Centro de Registro uma série de informações adicionais, como a localização do host da instância, o número da porta, o número da versão, o protocolo de comunicação etc. e o Centro de Registro organiza a lista de serviços de acordo com o nome de serviço.
Descoberta de serviço
Como operar sob a estrutura de governança de serviço, a comunicação e as chamadas entre os serviços não são mais implementadas especificando endereços de instância específicos, mas iniciando as chamadas de solicitação para o nome do serviço. Portanto, quando o chamador de serviço chama a interface do provedor de serviços, ele não conhece o local específico da instância do serviço. Portanto, é necessário iniciar primeiro uma solicitação de consulta ao registro e obter uma lista de instâncias para obter acesso a instâncias de serviço específicas.
Build Eureka Registration Center Service
Construir um único centro eureka
Todos os nossos desenvolvimentos subsequentes serão baseados na versão acima. Deve -se notar que o SRing Cloud usa a versão instantânea, portanto, você precisa especificar o endereço do repositório no arquivo POM.
Primeiro, criamos um novo projeto de inicialização da primavera, chamado: Spring-Cloud-Eureka e adicionamos as dependências necessárias ao POM. O arquivo POM específico é o seguinte:
<? xml versão = "1.0" coding = "utf-8"?> <Projeto xmlns = "http://maven.apache.org/pom/4.0.0" xmlns: xsi = "http://www.ww3.org/2001/xmlschaMance xsi: schemalocation = "http://maven.apache.org/pom/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <lodelversion> 4.0.0 </modelVersion> <proupid> com.sages <TrAtifactId> Spring-cloud-eureka </starifactId> <Version> 0.0.1-Snapshot </siers> <batyaging> jar </acheging> <name> spring-cloud-eureka </name> <stifactId> spring-BOOTTER <Versão> 2.0.2.Release </sistery> <RelityPath/> <!-Lookup Parent from Repository-> </parent> <Perts> <Project.build.sourceEncoding> utf-8 </project.build.sourceEncoding> <Projectoring.outputEnging> utf-8 </pronding> <Java.Version> 1.8 </java.version> <procerl-cloud.version> finchley.build-snapshot </spring-cloud.version> </properties> </dependences> <pendency> <vroupId> org.springframe.boot </grupidid> <strofactId> spring- Spring-BroTer <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependency> </dependências> <pendencyManagement> <pendências> <pendency> <puperiD> org.springframework.cloud </groupid> <TRATIFACTID> Spring-cloud-dependências </artifactId> <sipers> $ {spring-cloud.version} </version> </type> </type> <COPE> <COPE> </dependencyManagement> <build> <plugins> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> <repositories> <repository> <id>spring-snapshots</id> <name>Spring Snapshots</name> <url> https://repo.spring.io/snapshot </url> <nsnapShots> <bility> true </abilabed> </snapshots> </positório> </repository> <d> spring-milestones </dod> <name> mola </name> <BRODME> HTTPS:/ <Snapshots> <inabled> false </itilabed> </snapshots> </positórioInicie um Registro de Serviço para fornecer conversas para outros aplicativos por meio da anotação @enableeurekaserver. Esta etapa é muito simples, basta adicionar esta anotação a um aplicativo de inicialização normal de primavera para ativar esta função:
@SpringbooTApplication@enableeurekaserverpublic class ApplicationEureKaserver {public static void main (string [] args) {springapplication.run (ApplicationEureKaserver.class, args); }}Na configuração padrão, o servidor do Centro de Registro também se registrará como cliente. Geralmente, precisamos desativar essa função, e o application.yml modificado é o seguinte:
# Spring ConfigSpring: Aplicação: Nome: Spring-Boot-eureka # Servidor ConfigServer: Porta: 9871 # Eureka Configureureka: Instância: HostName: LocalHost Client: Register-With-Eureka: False # Não se registre no Centro de Registro Fetch-Registry: False # Não Recupere o serviço-Url: Deful. http: // $ {eureka.instance.hostname}: $ {server.port}/eureka/ Como todos estamos em execução localmente, para distinção de serviço subsequente, definimos a porta do Registro de Serviço através do Server.port para executar a porta como: 9871
Depois de concluir a configuração acima, inicie o aplicativo e visite http: // localhost: 9871. Você pode ver a página a seguir, onde a lista de instância atualmente registrada no Eureka está vazia, indicando que nenhum serviço foi registrado no Centro de Registro.
Acho que todo mundo notou as duas linhas de palavras vermelhas atraentes acima:
EMERGÊNCIA! Eureka pode estar reivindicando incorretamente as instâncias quando não estão. As renovações são menores que o limiar e, portanto, as instâncias não estão sendo expiradas apenas para serem seguras.
Causa: Mecanismo de autoproteção. Durante a operação do Servidor Eureka, contará se a proporção de falha de batimentos cardíacos é inferior a 85% em 15 minutos. Se ocorrer (é fácil satisfazer durante a depuração independente, mas, na verdade, geralmente é causada pela instabilidade da rede no ambiente de produção), o Servidor Eureka protegerá as informações atuais de registro de instância e solicitará esse aviso.
Como esse problema é propenso a ocorrer em situações independentes, depois de desativar a autoproteção de acordo com a configuração on-line, Eureka ainda chamará um alarme, provocando que o modo de segurança seja desligado e a correção da instância não pode ser garantida. Portanto, ignoramos esse problema por enquanto e podem ser resolvidos quando a implantação do cluster for posterior.
Registre um provedor de serviços
Depois de concluir o estabelecimento do Serviço do Centro de Registro, podemos tentar adicionar um aplicativo de inicialização de primavera existente ao sistema de governança de serviço da Eureka.
Ainda tomamos o servidor anterior da mola-nuvem como exemplo. Precisamos apenas modificar a seguinte configuração do Application.yml:
# Nome do aplicativo Spring: Aplicação: Nome: Spring-Cloud-Server# Eureka Centro de Registro Localização Eureka: Cliente: Serviço-URL: DefaultZone: http: // localhost: 9871/eureka/
Após a conclusão da modificação, o serviço pode ser iniciado. No momento, atualizamos a página de gerenciamento de Eureka e vemos as informações da lista de instância atualmente registradas com Eureka da seguinte forma:
Isso mostra que nosso serviço foi registrado com sucesso no Centro de Registro.
Código de exemplo relacionado: https://github.com/sagesource/spring-cloud-set
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.