O registro e a descoberta de serviços de aplicações Spring Cloud eram implementados com componentes como Eureka, Consul e ZooKeeper. Este tópico descreve como implementar o registro e a descoberta de serviços com o Nacos e como hospedar o Nacos no Serverless App Engine (SAE).
Benefícios
O registro e a descoberta de serviços de aplicações Spring Cloud são implementados com componentes como Eureka, Consul, ZooKeeper e Redis. Se você 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ócios.
O registro de serviços do SAE fornece todos os recursos do Spring Cloud Alibaba Nacos Discovery e elimina a dependência de vários componentes como Eureka, Consul, ZooKeeper e Redis.
Após hospedar as aplicações Spring Cloud no SAE, você pode focar na lógica das aplicações Spring Cloud sem se preocupar com a criação e a manutenção do registro e do centro de configuração. Os recursos fornecidos pelo SAE, incluindo Auto Scaling, inicialização e interrupção rápida de aplicações em lote e monitoramento de aplicações, ajudam a reduzir significativamente seus custos de desenvolvimento e O&M.
Se você tiver um grande número de aplicações de microsserviços, pode usar um dos seguintes tipos de registros de serviços, listados em ordem decrescente de recomendação:
Etapa 1: Obter uma aplicação de demonstração
eureka-service-provider e eureka-service-consumer são pacotes de aplicações de demonstração de microsserviços do SAE. O Eureka está integrado ao consumidor e ao provedor. O consumidor consome os serviços fornecidos pelo provedor.
Provedor: eureka-service-provider.zip
Consumidor: eureka-service-consumer.zip
Etapa 2: Modificar as configurações do 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:
Você hospeda suas aplicações no SAE após elas passarem nos testes locais.
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>NotaO Spring Cloud Greenwich é usado neste exemplo. 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 não a recomendamos. Para mais informações, consulte as Spring Cloud Edgware Release Notes.
-
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:8848127.0.0.1é o endereço IP do Nacos Server. Se o Nacos Server estiver implantado em outro servidor físico, altere o endereço IP de acordo. Caso tenha outros requisitos, adicione as configurações necessárias no arquivoapplication.properties. Para isso, consulte Configuration items. -
Verifique o serviço da aplicação.
Execute a função
maindeProviderApplicationno 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 service-provider for exibido em Service list e você conseguir consultar os detalhes de service-provider, o service-provider foi registrado com sucesso.
Etapa 3: Modificar as configurações do 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:
Você hospeda suas aplicações no SAE após elas passarem nos testes locais.
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 consumidor. 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>NotaO Spring Cloud Greenwich é usado neste exemplo. 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 não a recomendamos. Para mais informações, consulte as Spring Cloud Edgware Release Notes.
-
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:8848127.0.0.1é o endereço IP do Nacos Server. Se o Nacos Server estiver implantado em outro servidor físico, altere o endereço IP de acordo. Caso tenha outros requisitos, adicione as configurações necessárias no arquivoapplication.properties. Para isso, consulte Configuration items. -
Verifique o serviço da aplicação.
Execute a função
maindeConsumerApplicationno 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 service-consumer for exibido em Service list e você conseguir consultar os detalhes de service-consumer, o service-consumer foi registrado com sucesso.
Etapa 4: Visualizar os resultados do consumo de serviços do provedor pelo consumidor
Visualize os resultados do consumo de serviços fornecidos pelo provedor no seu computador. Inicie o serviço e execute IP+port/echo-rest/<Custom variable> ou IP+port/echo-feign/<Custom variable> para conferir os resultados.
Para Linux, UNIX ou macOS, execute
curl http://127.0.0.1:18082/echo-rest/<Custom variable>oucurl http://127.0.0.1:18082/echo-feign/<Custom variable>.Para Windows, insira
http://127.0.0.1:18082/echo-rest/<Custom variable>ouhttp://127.0.0.1:18082/echo-feign/<Custom variable>no navegador.
Confira a seguir 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. Você também pode criar uma imagem para a aplicação antes da implantação.
-
No arquivo pom.xml da aplicação, adicione a seguinte configuração 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 das aplicações do provedor e do consumidor compilados no SAE. Para mais informações, consulte Deploy Java applications by using a JAR package.
ImportanteO SAE não permite criar uma aplicação vazia. Crie uma aplicação no console e, em seguida, envie os dados para a aplicação.
Se você usar um pacote JAR para implantar as aplicações, defina Application Runtime Environment como Standard Java Application Runtime Environment.
Caso utilize um pacote WAR para implantar as aplicações, defina Application Runtime Environment como apache-tomcat-XXX.
Ao implantar aplicações no SAE, o registro de serviços do SAE define automaticamente o endereço IP do Nacos Server, a porta do serviço, o namespace, o AccessKey ID e o AccessKey secret com alta prioridade. Mantenha ou exclua as configurações padrão conforme suas necessidades.
Etapa 6: Verificar o resultado
Vincule uma instância de CLB voltada para a internet ao consumidor e insira o endpoint público especificado para a instância de CLB no navegador para acessar a página inicial do consumidor. Para mais informações, consulte Bind a CLB instance to an application and generate a public or private IP address for the application.
Na página inicial do consumidor, crie uma requisição para chamar os 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 requisição para chamar os serviços do provedor forem exibidos na página Overview, os serviços foram chamados 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 endereç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 NIC 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 |
O isolamento do registro em diferentes ambientes. Por exemplo, o isolamento de recursos, incluindo configurações e serviços, nos ambientes de desenvolvimento, teste e produção. |
|
Metadados |
spring.cloud.nacos.discovery.metadata |
Nenhum |
Esses metadados devem ser configurados no formato JSON Map. Especifique os metadados relacionados ao serviço de acordo com 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. |
|
Se deve ativar a integração com o Ribbon |
ribbon.nacos.enabled |
true |
Desative a integração com o 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
Você pode executar as seguintes operações na aplicação criada.
A aplicação não pode acessar a internet nem ser acessada por ela. Caso queira configurar a rede para a aplicação, consulte Application access.
Para mais informações, consulte O&M management.



