ilustrar:
O Ribbon é um papel na nuvem de primavera como consumidor de serviço, através do qual o cliente pode consumir os serviços do provedor de serviços.
Por exemplo, neste exemplo, o provedor de serviços se registra no Centro de Registro. O provedor de serviços fornece uma interface de serviço, retornando uma string hello. Chamamos essa interface através da fita e, em seguida, obtemos o serviço do provedor de serviços sem expor o endereço do provedor de serviços reais.
premissa:
Siga os tutoriais anteriores para construir um centro de registro e provedor de serviços. Você pode usar um Centro de Registro Sharded aqui ou não pode usá -lo. Isso está temporariamente definido como um centro de registro sharded que foi configurado antes do uso, e o provedor de serviços pode fornecer apenas um.
Preparação:
1. Inicie o Centro de Registro
De acordo com o tutorial anterior, use Peer1 e Peer2 para iniciar o centro de registro de dois fragmentos. Se for um nó único, você pode iniciar diretamente o projeto.
Após a startup, você pode verificar o localhost: 1111 ou localhost: 1112, como mostrado na figura
2. Inicie o provedor de serviços
Para ver a situação de balanceamento de carga, dois provedores de serviço precisam ser iniciados
De acordo com o tutorial anterior, dois terminais podem iniciar as portas especificadas (dois serviços idênticos também podem configurar portas diferentes em seus respectivos arquivos de configuração). As duas instruções do terminal são as seguintes:
CD Targetjava -Jar SpringcloudDemo-0.0.1-Snapshot.jar--server.port = 8080
CD Targetjava -Jar SpringcloudDemo-0.0.1-Snapshot.jar-Server.port = 8081
Resultados da inicialização:
Neste ponto, os preparativos foram concluídos
texto:
1. Construção de serviços de fita
Crie um novo projeto Maven sem usar o modelo. O projeto é chamado Robbin-Customer, e as dependências de importação são referenciadas da seguinte forma:
<? 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"> <modelVersion> 4.0.0FERSTSION> <PRESTSION> <BROUPID> com.hellzz <groups> <version>1.0-SNAPSHOT</version> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.5.9.RELEASE</version> <relativePath/> </parent> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-eureka</artifactId> <version>RELEASE</version> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <TarifactId> Spring-Cloud-Starter-ribbon </stifactId> <Versão> Release </siperS> </dependency> </dependency> </dependency> <pendencyManagement> <pendências> <pendency> <vused> scloud-serg.springframework.cloud </groupid> <ArtifactId> <runder-cloud-serSersherFeTenseDenseDenswork.cloud.cloud </groupid> <Artifactid> <Pring-Cloud-SerSERSENTIDENTES </ArtiftIf) <type> pom </pype> </dependency> </dependências> </dependências> </dependencyManagement> </project>
Crie uma nova aula de inicialização de trampolim e entregue o RestTemplate ao contêiner de mola para gerenciamento
pacote com.cnblogs.hellxz; importar org.springframework.boot.springApplication; importar org.springframework.boot.autoconfigure.springbootApplication; importação org.springframework.client.client.client.discovery.enabledisclient; org.springframework.cloud.client.loadbalancer.loadBalanced; importar org.springframework.context.annotation.bean; importar org.springframework.web.client.resttemplate;/** ** @author: hellxz* @Description: consumer Application *dtate; */ @Enablediscoveryclient @SpringBootApplicationPublic CLASSIONAPLICAÇÃO CustomerApclication {@Bean // Apoie este feijão no contêiner de primavera @loadbalanced // Ative o balanceamento de carga nesse anotação Resttemplate Resttemplate () {retorna new Resttemplate (); } public static void main (string [] args) {springApplication.run (clienteApplication.class, args); }}Crie um Application.yml no diretório SRC/Recursos para obter informações de registro de configuração. Este artigo usa um centro de registro Sharded. Configure um defaltzone para um único nó.
Servidor: Porta: 9000 #specifique a porta de serviço para fita-cliente Spring: Aplicação: Nome: Ribbon-Customer #specifique o nome do aplicativo #specifique o Endereço do Centro de Registro Eureka Eureka: Cliente: ServiceUrl: Padrão: Http: // Peer1: 1111/Eureka/, HTTP: //
Crie um CustomerController no diretório da classe de inicialização, injete Resttemplate para chamar a interface de serviço
pacote com.cnblogs.hellxz; importar org.springframework.beans.factory.annotation.autowired; importar org.springframework.web.bind.annotation.requestMapping; import org.springframework.web.bind.annotation.requestmethod; org.springframework.web.bind.annotation.restcontroller; importar org.springframework.web.client.resttemplate;/** * @author: hellxz * @Description: Consumer Application * @date: 2018/4/16 15:54 */Descript RestTemplate privado Resttemplate Resttemplate; @RequestMapping (value = "/ribbon-customer", métod = requestMethod.get) public string hellocustomer () {// comentou aqui porque o tirei da interface do provedor de serviços de acesso reto antes, para que o resultado não seja retornado e um erro será relatado // retornar RestTemplate.getForentity ("http: // localhost: 8080/hello", string.class) .getbody (); // Use Resttemplate para chamar a interface do microsserviço Retornar RestTemplate.getForentity ("http: // hello-service/hello", string.class) .getbody (); }}Nota: A linha 24 do código acima fornece uma demonstração de erro. Se ocorrer um erro ao acessar a interface da faixa de opções e uma página de erro branca aparecer, verifique aqui
Neste ponto, o aplicativo de consumidor de fita é construído e o teste é iniciado
teste:
Visite http: // localhost: 1111/Descobrimos que este aplicativo de consumidor de fita foi registrado no Centro de Registro
Visite http: // localhost: 9000/Ribbon-Customer
Lembre -se de que, se houver acesso no projeto do provedor de serviços, as informações serão impressas, porque dois provedores de serviços foram iniciados, aqui você pode testar o balanceamento de carga da fita.
Visualizar saída do provedor de serviços
O segundo terminal não é, e ainda é exibido nos terminais de resolução Eureka via linha de configuração
Atualize a página para visualizar o terminal. Como a implementação de balanceamento de carga padrão da Ribbon está pesquisando, pode ocorrer acessar o mesmo serviço várias vezes. Atualize a página várias vezes, e ela será definitivamente exibida em outro termical!
Conclusão:
Como consumidor de serviço, a fita não pode expor o endereço da interface ao usuário enquanto obtém os serviços fornecidos pelo provedor de serviços. Pode -se observar que, ao chamar a interface de serviço aqui, o nome do serviço do provedor de serviços é usado em vez do nome do host. Esse recurso é muito importante na estrutura de governança de serviço.
Desde que aprendi o gerador Jhipster primeiro, gostaria de prever com antecedência e, em seguida, haverá uma tecnologia chamada Feign que pode substituir a faixa de opções. Esta série de blogs são todas as notas de estudo. Na operação real, pode haver uma situação em que um aplicativo seja um provedor de serviços e um consumidor de serviço.
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.