O registro e a descoberta de serviços em aplicações Spring Cloud eram tradicionalmente implementados com componentes como Eureka, Consul e ZooKeeper. Este tópico descreve como implementar o registro e a descoberta de serviços usando o Nacos e como hospedar o Nacos no Serverless App Engine (SAE).
Benefícios
O registro e a descoberta de serviços em aplicações Spring Cloud utilizam componentes como Eureka, Consul, ZooKeeper e Redis. Ao hospedar aplicações Spring Cloud no SAE, basta substituir o registro de serviços e o centro de configuração originais pelo Alibaba Nacos Discovery para registrar e descobrir serviços sem modificar o código de negócio.
O registro de serviços do SAE oferece todos os recursos do Spring Cloud Alibaba Nacos Discovery e elimina a dependência de múltiplos componentes, como Eureka, Consul, ZooKeeper e Redis.
Após hospedar aplicações Spring Cloud no SAE, concentre-se na lógica das aplicações sem se preocupar com a criação e manutenção do registro e do centro de configuração. Os recursos do SAE, incluindo dimensionamento automático, início e parada rápidos de aplicações em lote e monitoramento, ajudam a reduzir significativamente seus custos de desenvolvimento e O&M.
Se você possui muitas aplicações de microsserviços, utilize um dos seguintes tipos de registros de serviços, listados em ordem decrescente de recomendação:
Etapa 1: Obter uma demonstração
Os pacotes eureka-service-provider e eureka-service-consumer são aplicações de demonstração de microsserviços do SAE. O Eureka está integrado tanto ao consumidor quanto ao provedor. O consumidor consome os serviços fornecidos pelo provedor.
Provedor: eureka-service-provider.zip
Consumidor: eureka-service-consumer.zip
Etapa 2: Modifique as configurações de registro de serviços do provedor
Para hospedar o provedor nativo da nuvem no SAE, modifique a dependência POM no provedor e especifique um endereço IP para o Nacos Server.
Especifique um endereço IP para o Nacos Server nos seguintes cenários:
Quando você hospeda suas aplicações no SAE após a aprovação nos testes locais.
Quando o registro de serviços do SAE é um registro Nacos autogerenciado.
-
Adicione a seguinte dependência ao arquivo pom.xml.
Abra o arquivo pom.xml do provedor. Substitua
spring-cloud-starter-netflix-eureka-clientporspring-cloud-starter-alibaba-nacos-discoverye configure a versão do Nacos Server.Antes da substituição:
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> </dependency>Após a substituição:
<dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> <version>2.1.1.RELEASE</version> </dependency>NotaEste exemplo utiliza o Spring Cloud Greenwich. A versão do
spring-cloud-starter-alibaba-nacos-discoveryé2.1.1.RELEASE.Se você usar o Spring Cloud Finchley, a versão do
spring-cloud-starter-alibaba-nacos-discoveryserá2.0.1.RELEASE.Caso utilize o Spring Cloud Edgware, a versão do
spring-cloud-starter-alibaba-nacos-discoveryserá1.5.1.RELEASE. O suporte a esta versão foi encerrado e seu uso não é recomendado. Para mais informações, consulte Notas de lançamento do Spring Cloud Edgware.
-
Especifique um endereço IP para o Nacos Server.
Abra o arquivo application.properties em src\main\resources e especifique um endereço IP para o Nacos Server.
Antes da modificação:
spring.application.name=service-provider server.port=18081 eureka.client.serviceUrl.defaultZone=http://127.0.0.1:8761/eureka/Após a modificação:
spring.application.name=service-provider server.port=18081 spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848O endereço
127.0.0.1corresponde ao IP do Nacos Server. Se o Nacos Server estiver implantado em outro servidor físico, altere o endereço IP adequadamente. Caso tenha outros requisitos, adicione as configurações necessárias no arquivoapplication.propertiesconsultando Itens de configuração. -
Consulte o serviço da aplicação.
Execute a função
mainda classeProviderApplicationno projetonacos-service-providerpara iniciar o provedor.-
Faça login no console do Nacos Server instalado no seu computador acessando
127.0.0.1:8848/nacos. No painel de navegação à esquerda, escolha .NotaO nome de usuário e a senha padrão para fazer login no console do Nacos Server são nacos.
Se o item service-provider aparecer na Service list e for possível consultar os detalhes do service-provider, o registro foi concluído com sucesso.
Etapa 3: Modifique as configurações de registro de serviços do consumidor
Para hospedar o consumidor nativo da nuvem no SAE, modifique a dependência POM no consumidor e especifique um endereço IP para o Nacos Server.
Especifique um endereço IP para o Nacos Server nos seguintes cenários:
Quando você hospeda suas aplicações no SAE após a aprovação nos testes locais.
Quando o registro de serviços do SAE é um registro Nacos autogerenciado.
-
Adicione a seguinte dependência ao arquivo pom.xml.
Abra o arquivo pom.xml do provedor. Substitua
spring-cloud-starter-netflix-eureka-clientporspring-cloud-starter-alibaba-nacos-discoverye configure a versão do Nacos Server.Antes da substituição:
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> </dependency>Após a substituição:
<dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> <version>2.1.1.RELEASE</version> </dependency>NotaEste exemplo utiliza o Spring Cloud Greenwich. A versão do
spring-cloud-starter-alibaba-nacos-discoveryé2.1.1.RELEASE.Se você usar o Spring Cloud Finchley, a versão do
spring-cloud-starter-alibaba-nacos-discoveryserá2.0.1.RELEASE.Caso utilize o Spring Cloud Edgware, a versão do
spring-cloud-starter-alibaba-nacos-discoveryserá1.5.1.RELEASE. O suporte a esta versão foi encerrado e seu uso não é recomendado. Para mais informações, consulte Notas de lançamento do Spring Cloud Edgware.
-
Especifique um endereço IP para o Nacos Server.
Abra o arquivo application.properties em src\main\resources e especifique um endereço IP para o Nacos Server.
Antes da modificação:
spring.application.name=service-consumer server.port=18082 eureka.client.serviceUrl.defaultZone=http://127.0.0.1:8761/eureka/Após a modificação:
spring.application.name=service-consumer server.port=18082 spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848O endereço
127.0.0.1corresponde ao IP do Nacos Server. Se o Nacos Server estiver implantado em outro servidor físico, altere o endereço IP adequadamente. Caso tenha outros requisitos, adicione as configurações necessárias no arquivoapplication.propertiesconsultando Itens de configuração. -
Consulte o serviço da aplicação.
Execute a função
mainda classeConsumerApplicationno projetonacos-service-consumerpara iniciar o consumidor.-
Faça login no console do Nacos Server instalado no seu computador acessando
127.0.0.1:8848/nacos. No painel de navegação à esquerda, escolha .NotaO nome de usuário e a senha padrão para fazer login no console do Nacos Server são nacos.
Se o item service-consumer aparecer na Service list e for possível consultar os detalhes do service-consumer, o registro foi concluído com sucesso.
Etapa 4: Visualize os resultados do consumo de serviços do provedor pelo consumidor
Visualize no seu computador os resultados do consumo de serviços fornecidos pelo provedor. Inicie o serviço e execute IP+porta/echo-rest/<Variável personalizada> ou IP+porta/echo-feign/<Variável personalizada> para ver os resultados.
No Linux, UNIX ou macOS, execute
curl http://127.0.0.1:18082/echo-rest/<Variável personalizada>oucurl http://127.0.0.1:18082/echo-feign/<Variável personalizada>.No Windows, insira
http://127.0.0.1:18082/echo-rest/<Variável personalizada>ouhttp://127.0.0.1:18082/echo-feign/<Variável personalizada>no navegador.
Abaixo está um exemplo de consumo de serviço bem-sucedido em um sistema operacional Windows.

Etapa 5: Implantar aplicações no SAE
Esta seção apresenta um exemplo de como compilar o programa local em um pacote JAR executável. Também é possível criar uma imagem para a aplicação antes da implantação.
-
No arquivo pom.xml da aplicação, adicione a configuração a seguir e execute o comando mvn clean package para compilar o programa local em um pacote JAR executável.
<build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <executions> <execution> <goals> <goal>repackage</goal> </goals> </execution> </executions> </plugin> </plugins> </build> -
Implante os pacotes compilados das aplicações provedora e consumidora no SAE. Para mais informações, consulte Implantar aplicações Java usando um pacote JAR.
ImportanteO SAE não permite criar uma aplicação vazia. Crie a aplicação no console primeiro para depois enviar dados para ela.
Ao usar um pacote JAR para implantar as aplicações, defina o Application Runtime Environment como Standard Java Application Runtime Environment.
Ao usar um pacote WAR para implantar as aplicações, defina o Application Runtime Environment como apache-tomcat-XXX.
Ao implantar aplicações no SAE, o registro de serviços do SAE define automaticamente e com alta prioridade o endereço IP do Nacos Server, a porta de serviço, o namespace, o AccessKey ID e o AccessKey secret. Mantenha ou exclua as configurações padrão conforme sua necessidade.
Etapa 6: Verifique o resultado
Vincule uma instância CLB voltada para a Internet ao consumidor e insira o endpoint público especificado para a instância CLB no navegador para acessar a página inicial do consumidor. Para mais informações, consulte Vincular uma instância CLB a uma aplicação e gerar um endereço IP público ou privado para a aplicação.
Na página inicial do consumidor, crie uma solicitação para chamar serviços do provedor. Faça login no console do SAE. No painel de navegação à esquerda, escolha Applications > Applications. Na barra de navegação superior, selecione uma região.
Na página Applications, selecione um consumidor e acesse a página Basic Information.
-
No painel de navegação à esquerda, escolha para visualizar os dados gerais de chamadas de serviço.
Se os dados sobre a solicitação de chamada dos serviços do provedor forem exibidos na página Overview, as chamadas foram concluídas com sucesso.
Itens de configuração
|
Item de configuração |
Chave |
Valor padrão |
Descrição |
|
Endereço IP do servidor |
spring.cloud.nacos.discovery.server-addr |
Nenhum |
O endereço IP e a porta nos quais o Nacos Server escuta. |
|
Nome do serviço |
spring.cloud.nacos.discovery.service |
${spring.application.name} |
O nome do serviço. |
|
Nome da interface de rede (NIC) |
spring.cloud.nacos.discovery.network-interface |
Nenhum |
Se nenhum endereço IP for especificado, o IP da NIC será registrado. Se este item não for configurado, o endereço IP da primeira NIC será usado por padrão. |
|
Endereço IP registrado |
spring.cloud.nacos.discovery.ip |
Nenhum |
O endereço IP registrado tem prioridade maior que o nome da ENI durante a configuração. |
|
Porta registrada |
spring.cloud.nacos.discovery.port |
-1 |
Não é necessário configurar a porta registrada. O sistema detecta a porta automaticamente. |
|
Namespace |
spring.cloud.nacos.discovery.namespace |
Nenhum |
Isolamento de registro em diferentes ambientes. Por exemplo, isolamento de recursos, incluindo configurações e serviços, nos ambientes de desenvolvimento, teste e produção. |
|
Metadados |
spring.cloud.nacos.discovery.metadata |
Nenhum |
Estes metadados devem ser configurados no formato JSON Map. Especifique metadados relacionados ao serviço conforme os requisitos do seu negócio. |
|
Cluster |
spring.cloud.nacos.discovery.cluster-name |
DEFAULT |
O nome do cluster Nacos. |
|
Endpoint |
spring.cloud.nacos.discovery.endpoint |
Nenhum |
O nome de domínio de um serviço na região. Recupere dinamicamente o endereço IP do servidor com base neste nome de domínio. Não é necessário especificar este item ao implantar uma aplicação no SAE. |
|
Habilitar integração com Ribbon |
ribbon.nacos.enabled |
true |
Desative a integração com Ribbon apenas quando necessário. |
Para mais informações sobre o Spring Cloud Alibaba Nacos Discovery, consulte Spring Cloud Alibaba Nacos Discovery.
Próximos passos
Realize as operações a seguir na aplicação criada.
A aplicação não pode acessar a Internet nem ser acessada pela Internet. Para configurar a rede da aplicação, consulte Acesso à aplicação.
Para mais detalhes, consulte Gerenciamento de O&M.



