Use Eureka para alcançar a governança de serviço
Função: Realize a governança do serviço (registro e descoberta de serviços)
Introdução: Spring Cloud Eureka é um módulo de governança de serviço no projeto Spring Cloud Netflix. O projeto Spring Cloud Netflix é um dos subprojetos da Spring Cloud. Seu principal conteúdo é empacotar uma série de produtos de código aberto da Netflix. Ele fornece integração autoconfigurada da Netflix OSS para aplicativos de inicialização de primavera. Com algumas anotações simples, os desenvolvedores podem configurar rapidamente módulos comumente usados em suas aplicações e criar um enorme sistema distribuído. Seus principais módulos incluem: Service Discovery (Eureka), disjuntor (Hystrix), roteamento inteligente (Zuul), balanceamento de carga do cliente (fita), etc.
Prática prática do projeto:
Centro de Registro de Serviços: Eureka-Server
Função: Centro de Registro de Serviço fornece função de registro de serviço
Provedor de serviços: Eureka-Client
Função: Registre um serviço no Centro de Registro de Serviço
Centro de Registro de Serviços: Eureka-Server
Crie um novo projeto de troca: Eureka-Server, e sua configuração POM.XML é a seguinte:
<PROPERTIES> <Project.build.sourceEncoding> utf-8 </project.build.sourceEncoding> <Project.Reporting.OutputEncoding> utf-8 </javaject.Reporting.outputEncoding> <nava.version> 1.8 </java.version> </propherts> <PupidId> org.springframework.cloud </frupiD> <TRATIFACTID> Spring-Cloud-Starter-eureka-server </ArtifactId> </Dependency> </Dependências> <pendencyManagement> </dependências> <pendency> <purpId> org.springFrame.cloud <//GrupidId> ArtiftIftid> <vplorf> primavera </cloud> </cloud> <//GrugId> ArtiftIftid> <PringFActid> SpringftringFrame. <versão> dalston.sr1 </version> <type> pom </pype> <cope> importar </scope> </dependency> </dependências> </dependencyManagement>
É muito simples implementar a função de um centro de registro de serviço. Você só precisa usar a anotação @enableeurekaserver na classe de inicialização do projeto EurekaserverApplication.
@Enableeurekaserver @springbootApplication public class EuurekaserverApplication {public static void main (string [] args) {new springapplicationbuilder (eurekaserverapplication.class) .web (true) .run (args); }}Por padrão, o Centro de Registro de Serviços também tentará se registrar como cliente, por isso precisamos desativar o comportamento do registro do cliente e apenas adicionar as seguintes informações ao Application.Properties Configuration File:
spring.Application.name = eureka-serverSserver.port = 1001eureka.instance.hostname = locologhosteureka.client.register-with-eureka = falsereureka.client.fetch-registry = false
Inicie o EurekaserverApplication, visite http: // localhost: 9001/para ver a página de Eureka. A partir da localização da caixa vermelha, você pode ver que não existe uma instância de serviço de tarefa registrada no atual Centro de Registro de Serviços.
Provedor de serviços: Eureka-Client
Depois que cada instância é registrada, é necessário um batimento cardíaco para enviar um batimento cardíaco para o centro de registro. Quando o cliente se registra no servidor, ele fornecerá alguns metadados, como host e porta, URL, página inicial, etc. O servidor Eureka recebe mensagens de batimentos cardíacos de cada instância do cliente. Se o batimento cardíaco estiver fora, a instância geralmente será removida do servidor registrado.
Crie um novo projeto de trampolim: Eureka-Client, e sua configuração POM.XML é a seguinte:
<PROPERTIES> <Project.build.sourceEncoding> utf-8 </project.build.sourceEncoding> <Project.Reporting.OutputEncoding> utf-8 </javaject.Reporting.outputEncoding> <nava.version> 1.8 </java.version> </propherts> <GroupID> org.springframework.cloud </frupiD> <TRATIFACTID> Spring-Cloud-Starter-eureka </ArtifactId> </dependency> <pendency> <puperid> org.springframework.boot </groupid> <TarfactId> Spring-boot-starter-web </artiftIf <EpendencyManagement> <Ependency> <pendency> <puperid> org.springframework.cloud </groupiD> <TRAFACTID> Dependências de primavera-cloud </starfactId> <versão> Dalston.sr1 </version> <Type> pom </type> <cope> Importação </Scope> </Dependência
Também é muito simples implementar um provedor de serviços. Basta usar a anotação @enableeurekaclient na classe de inicialização do projeto EurekaclientApplication.
@Enableeurekaclient @springbootApplication public class EurekaclientApplication {public static void main (string [] args) {new SpringApplicationBuilder (eurekaclientApplication.class) .web (true) .run (args); }}Configure o seguinte no Application.properties
spring.application.name = eureka-clienterver.port = 9002eureka.client.serviceurl.defaultzone = http: // localhost: 9001/eureka/
Através da propriedade Spring.Application.Name, podemos especificar o nome do microsserviço ao chamá -lo, para que o serviço possa ser acessado.
A propriedade Eureka.client.serviceurl.defaultZone corresponde ao conteúdo de configuração do Centro de Registro de Serviço e especifica a localização do Centro de Registro de Serviço.
Use a propriedade Server.port para definir portas diferentes.
Inicie a aula de aplicação da Eurekaclient
Atualizar http: // localhost: 9001/, e você pode ver que nosso provedor de serviços se registrou no Centro de Registro de Serviços
Crie um novo DiscoveryController
Use o Discoveryclient.getServices () para obter o nome de serviço registrado e use @value para atribuir as informações no arquivo de configuração ao IP
@RestControllerPublic Classe DiscoveryController {@AUTOWIRED PRIVADO DESCONTECLIENTECLIENTECLIENT; @Value ("$ {server.port}") private string ip; @GetMapping ("/client") public string client () {string Services = "Serviços:"+Discoveryclient.getServices ()+"ip:"+ip; System.out.println (Services); serviços de retorno; }}Visite: http: // localhost: 9002/cliente
Finalmente, deixe -me explicar as duas anotações @enableeurekaclient e @enablediscoveryclient
Primeiro de tudo, ambas as anotações podem realizar a função da descoberta de serviços. Existem muitas implementações do Serviço de Discovery em Spring Cloud (Eureka, Consul, Zookeeper, etc.)
@Enableeurekaclient é baseado no Spring-Cloud-Netflix. O serviço usa Eureka como centro de registro e os cenários de uso são relativamente únicos.
@Enablediscoveryclient é baseado em compensados de mola-nuvem. O serviço adota outros centros de registro.
Github: https://github.com/mingyuhub/springcloud
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.