O Eureka é um produto de código aberto da Netflix que fornece registro e descoberta de serviços e fornece uma implementação completa do registro de serviços e descoberta de serviços. É também um dos componentes mais importantes e principais do sistema SpringCloud.
Introdução de fundo
Centro de Serviço
O centro de serviço também é chamado de Centro de Registro, que gerencia várias funções de serviço, incluindo registro de serviço, descoberta, disjuntor, carga, downgrade etc., como várias funções do fundo do administrador do Dubbo.
Que mudanças acontecerão com o relacionamento de chamada do centro de serviço? Desenhe alguns diagramas simples para ajudá -lo a entender
Projeto A Chamadas Projeto B
Normalmente ligue para o Projeto A para solicitar o Projeto B
Depois de ter um centro de serviço, nenhum serviço pode ser removido e usado diretamente, e ele precisa ser chamado através do centro de serviço.
Projeto A Chamadas Projeto B, o Projeto B está chamando o Projeto C
Neste momento, as etapas a ser chamadas serão duas etapas: a primeira etapa é que o Projeto A First solicita o servidor do Projeto B no centro de serviço e, em seguida, o Projeto B solicita o serviço C do centro de serviço.
Os projetos acima são apenas chamadas simples entre dois ou três, mas se houver mais de 20 projetos e 30 projetos, os projetos distribuídos de nossa empresa atingiram mais de 20 até o final de 2015. Desenhe uma imagem para descrever a relação entre dezenas de projetos e todas são linhas. Quaisquer alterações em um dos projetos envolverão vários projetos reiniciando, o que é muito problemático e propenso a erros. Para obter serviços através do centro de serviço, você não precisa prestar atenção ao endereço IP do projeto que você liga. Consiste em vários servidores. Cada vez que você vai ao centro de serviço para obter os serviços disponíveis para ligar.
Como todos os tipos de serviços foram registrados no centro de serviço, há muitas funções avançadas a serem executadas. Por exemplo, vários serviços fornecem o mesmo serviço para equilibrar a carga; Monitore a taxa de sucesso da chamada do servidor para executar a quebra do circuito, remova os pontos de falha na lista de serviços; Monitore o tempo de chamada de serviço para definir pesos diferentes para diferentes servidores, etc.
Antes de falar sobre Eureka, vou fofocar sobre Netflix
Netflix
A introdução seguinte vem da Enciclopédia Baidu:
A Netflix é uma empresa americana que fornece mídia de streaming on-line no local nos Estados Unidos e no Canadá e em DVD personalizado e serviços de aluguel on-line de disco Blu-ray. Fundada em 1997, a empresa está sediada em Los Gaitu, Califórnia, e iniciou serviços de assinatura em 1999. Em 2009, a empresa poderia fornecer até 100.000 filmes de DVD e tinha 10 milhões de assinantes. Em 25 de fevereiro de 2007, a Netflix anunciou que havia vendido seu 1 bilhão de DVD. Um relatório disse que, em 2011, as vendas de filmes on -line da Netflix representaram 45% do total de vendas de filmes on -line de usuários dos EUA.
A primeira vez que vi essa palavra, foi no início de vários dramas ou filmes americanos. Os dramas americanos representativos filmados pela Netflix incluem "House of Cards", "Drug Lords" e "Stranger Things". Mais tarde, quando eu estava estudando Springcloud, descobri as empresas da Netflix e me perguntei se elas eram a mesma empresa. Depois de verificar o sufixo de e -mail no Github, determinei que era realmente a mesma empresa. De fato, os microsserviços da Springcloud são baseados nos produtos de código aberto da Netflix.
Os componentes da estrutura de código aberto da Netflix foram comprovados no ambiente de microsserviço distribuído em larga escala da Netflix por anos e estão sendo gradualmente aceitos pela comunidade como componentes padrão para a construção de estruturas de microsserviço. Os produtos de código aberto da Spring Cloud são baseados principalmente na embalagem adicional de componentes de código aberto da Netflix, o que facilita os desenvolvedores da primavera a criar uma estrutura básica de microsserviço. Para algumas empresas que pretendem criar um sistema de estrutura de microsserviço, fazendo pleno uso ou se referindo aos componentes de microsserviço de código aberto da Netflix (ou nuvem de primavera) e a realização da personalização empresarial necessária nessa base é sem dúvida um atalho para a arquitetura de microsserviço.
Eureka
De acordo com a introdução oficial:
Eureka é um serviço baseado em repouso (transferência de estado representacional) que é usado principalmente na nuvem da AWS para localizar serviços para fins de balanceamento de carga e failover de servidores de camada média.
O Eureka é um serviço baseado em REST, usado principalmente na nuvem da AWS, e localiza serviços para carregar o balanceamento e o failover de servidores de camada intermediária.
Spring Cloud encapsula o módulo Eureka desenvolvido pela Netflix para permitir o registro e a descoberta de serviços. Eureka adota a arquitetura de design do CS. O Servidor Eureka é o servidor com função de registro de serviço, é o centro de registro de serviço. Outros microsserviços no sistema usam o cliente da Eureka para se conectar ao servidor Eureka e manter uma conexão de batimento cardíaco. Dessa forma, o pessoal de manutenção do sistema pode monitorar se cada microsserviço no sistema está sendo executado normalmente através do Eureka Server. Alguns outros módulos da Spring Cloud (como o Zuul) podem usar o Servidor Eureka para descobrir outros microsserviços no sistema e executar a lógica relevante.
Eureka consiste em dois componentes: o servidor Eureka e o cliente Eureka. O servidor Eureka é usado como um servidor de registro de serviço. O cliente Eureka é um cliente Java usado para simplificar a interação com o servidor, atuar como um balanceador de carga de votação e fornecer suporte de failover de serviço. A Netflix usa outro cliente em seu ambiente de produção, que fornece balanceamento de carga ponderado com base no tráfego, utilização de recursos e status de erro.
Use uma imagem para entender o seguinte:
A figura acima descreve brevemente a arquitetura básica de Eureka, composta por 3 funções:
1. Servidor Eureka
2. Provedor de serviços
3. Consumidor de serviço
Prática de caso
Servidor Eureka
A Spring Cloud me ajudou a implementar o Centro de Registro de Serviços e precisamos apenas de algumas etapas simples para concluí -lo.
1. Adicione dependências no POM
<Dependences> <pendence> <purbrouid> org.springframework.cloud </frupid> <stifactId> Spring-cloud-starter </stutifactId> </dependency> <pendesency> <voundiD> org.springframework.cloud </groupid> <ArtifactId> Spring-starId-erereureswork.cloud </groupid> <ArtifactId> SpringfilTerId-ereyureswork.cloud </groupid> <Artifactid> springfilderid-eurekyworks.cloud </groupid> <Artifactid> Springfusterid-erereyureswork. <GrupidId> org.springframework.boot </frugiD> <ArtifactId> Spring-boot-Starter-test </ArtifactId> <SCOPE> Test </conto> </dependency> </ipendencies>
2. Adicione @EnableEurekaServer anotação ao código de inicialização
@Springbootapplication@enableeurekaserverpublic Classe SpringClouDeureKaApplication {public static void main (string [] args) {springapplication.run (springcloudeurekeapplication.class, args); }}3. Arquivo de configuração
Por padrão, o Registro de Serviços também tentará se registrar como cliente, por isso precisamos desativar o comportamento do registro do cliente e adicionar a seguinte configuração no application.properties :
spring.application.name = spring-cloud-eurekaserver.port = 8000eureka.client.register-with-eureka = falseeureka.client.fetch-registry = falsereureka.client.serviceurl.defaultZone = http: // LocalHost: $ {Server.port}eureka.client.register-with-eureka : indica se deve se registrar no servidor Eureka, o padrão é verdadeiro.eureka.client.fetch-registry : Indica se deve obter informações de registro do Servidor Eureka, o padrão é verdadeiro.eureka.client.serviceUrl.defaultZone : define o endereço para interagir com o servidor Eureka. Os serviços de consulta e os serviços de registro precisam confiar nesse endereço. O padrão é http: // localhost: 8761/eureka; Vários endereços podem ser usados e separados.Depois de iniciar o projeto, visite: http: // localhost: 8000/e você pode ver a página abaixo, onde nenhum serviço foi encontrado
Conjunto
Um serviço crítico como um centro de registro, se for um único ponto, será devastador encontrar uma falha. Em um sistema distribuído, o Centro de Registro de Serviço é a parte básica mais importante e deve estar em um estado em que os serviços possam ser prestados a qualquer momento. Para manter sua disponibilidade, o uso de clusters é uma boa solução. O Eureka implementa a implantação altamente disponível, registrando -se, por isso precisamos apenas configurar o Eureke Server para configurar outros serviços disponíveis para obter uma implantação altamente disponível.
Centro de Registro de Nó Dual
Pela primeira vez, tentamos construir um centro de registro de dois nós.
1. Crie aplicativo-peer1.properties como a configuração do Peer1 Service Center e Point ServiceUrl para Peer2
spring.application.name = spring-cloud-eurekaserver.port = 8000eureka.instance.hostname = peer1eureka.client.serviceurl.defaultZone = http: // peer2: 8001/eureka/
2. Crie aplicativo-peer2.properties como a configuração do centro de serviço Peer2 e Point ServiceUrl para Peer1
spring.application.name = spring-cloud-eurekaserver.port = 8001eureka.instance.hostname = peer2eureka.client.serviceurl.defaultzone = http: // peer1: 8000/eureka/
3. Conversão do hospedeiro
Adicione a seguinte configuração ao arquivo hosts
127.0.0.1 Peer1 127.0.0.1 Peer2
4. Iniciar o pacote
Executar os seguintes comandos por sua vez
#Package mvn pacote limpo# Inicie Eurekajava com informações de configuração Peer1 e Peer2, respectivamente,-óssea-erereka-eureka-0.0.1-snapshot.jar--spring.profiles.active = Peer1java -Jar Spring-EUREURKA-0.0.1-SNASSHOT.JAR1JAR -JAR -JAR Spring-EUREUREKA-0.0.1-SNASSHOT.JAR1
Depois de começar um por um, o navegador entra: http://localhost:8000/ a renderização é a seguinte:
De acordo com a figura, pode-se observar que as réplicas do DS do Centro de Registro do Peer1 têm as informações de configuração relevantes do Peer2 e aparecem nas replicas disponíveis. Paramos manualmente o Peer2 para observar e descobrimos que o PEER2 se moverá para a coluna indisponível-replica, indicando que o PEER2 não está disponível.
A configuração deste nó dual foi concluída.
Uso de cluster Eureka
Na produção, podemos precisar de três ou mais centros de registro para garantir a estabilidade do serviço. Os princípios de configuração são realmente os mesmos e apontamos o centro de registro para outros centros de registro, respectivamente. Aqui, apenas apresentaremos a configuração dos três clusters. De fato, é semelhante ao centro de registro de dois nós. Cada centro de registro pode apontar para os outros dois nós, respectivamente, e usar o Application.yml para configurá -lo.
Os detalhes de configuração do Application.yml são os seguintes:
--spring: application: name: spring-cloud-eureka profiles: peer1server: port: 8000eureka: instance: hostname: peer1 client: serviceUrl: defaultZone: http://peer2:8001/eureka/,http://peer3:8002/eureka/---spring: application: name: spring-cloud-eureka profiles: peer2server: PORT: 8001EUREKA: Instância: HostName: Peer2 Cliente: ServiceUrl: DefaultZone: http: // peer1: 8000/eureka/, http: // peer3: 8002/eureka/-Spring: Aplicação: Nome: Spring-Ereureka-Arekak DefaultZone: http: // peer1: 8000/eureka/, http: // peer2: 8001/eureka/
Inicie o Centro de Registro Eureka com os parâmetros de configuração de Peer1, Peer2 e Peer3, respectivamente.
java -Jar Spring-cloud-eureka-0.0.1-snapshot.jar--spring.profiles.active = peer1java -Jar Spring-cloud-eureka-0.0.1-snapshot.jar--spring.profiles.active = peer2javaPaPapShot.Jar-Eures-spring-spring.profiles.active = peer2JavaPaPapShot.Jar-Eures-erere-erere-erere-erere-erere-erere-erere-erere-erere-erere-erere-erere-erere-erere-erere-erere-erere-erere - -spring.profiles.active = peer3
Depois de começar um por um, o navegador entra: http://localhost:8000/ a renderização é a seguinte:
Você pode ver as informações relevantes sobre Peer2 e Peer3 no Peer1. Até agora, o cluster Eureka foi concluído
Código de amostra
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.