Aplicações Spring Cloud usam o Nacos para gerenciar configurações durante o desenvolvimento local. Após a implantação no Enterprise Distributed Application Service (EDAS), o Application Configuration Management (ACM) integrado ao EDAS assume automaticamente o gerenciamento e a distribuição das configurações.
Este tutorial demonstra como criar uma aplicação Spring Cloud com o Spring Cloud Alibaba Nacos Config:
Inicie o Nacos Server localmente e crie uma configuração
Crie uma aplicação Spring Boot que leia dados do Nacos
Verifique a atualização dinâmica da configuração
Implante a aplicação no EDAS
Para pular as etapas de criação, baixe o projeto de demonstração nacos-config-example.zip.
O Spring Cloud Alibaba Nacos Config integra o Nacos ao framework Spring Cloud e segue a especificação de injeção de configuração do Spring Cloud.
O recurso de gerenciamento de configuração do EDAS não entra em conflito com o Nacos open source.
Pré-requisitos
Antes de começar, verifique se você tem:
Maven instalado e configurado no PATH do sistema
A versão mais recente do Nacos Server baixada
Etapa 1: Iniciar o Nacos Server
Extraia o arquivo compactado do Nacos Server baixado.
-
Acesse o diretório
nacos/bine inicie o servidor em modo standalone:-
Linux, UNIX ou macOS:
sh startup.sh -m standalone -
Windows:
startup.cmd -m standalone
-
Por padrão, o startup.cmd inicia em modo cluster. Clique em duas vezes diretamente no arquivo no Windows causa falha na inicialização. Execute o comando acima ou adicione MODE="standalone" ao startup.cmd. Para mais detalhes, consulte o Guia de início rápido do Nacos.
Etapa 2: Criar uma configuração local
Abra o console do Nacos Server em http://127.0.0.1:8848/nacos. O nome de usuário e a senha padrão são ambos
nacos.No painel de navegação à esquerda, selecione ConfigManagement > Configurations.
Clique em no ícone
no canto superior direito para criar uma configuração.-
Na página Create Configuration, defina os seguintes parâmetros e clique em Publish:
Parâmetro
Valor
Data ID
nacos-config-example.propertiesGroup
DEFAULT_GROUPFormat
PropertiesConfiguration Content
test.name=nacos-config-test
Como o Data ID mapeia para sua aplicação
O Data ID segue esta convenção de nomenclatura:
${prefix}-${spring.profiles.active}.${file-extension}
|
Componente |
Padrão |
Propriedade de substituição |
|
|
Valor de |
|
|
|
Perfil atual do Spring. Quando vazio, o hífen é omitido: |
-- |
|
|
|
|
Neste tutorial, o nome da aplicação é nacos-config-example sem perfil ativo, portanto o Data ID é nacos-config-example.properties.
Etapa 3: Criar a aplicação Spring Boot
3a. Criar um projeto Maven
Crie um projeto Maven chamado nacos-config-example.
3b. Adicionar dependências
Adicione o seguinte ao pom.xml. Este exemplo usa Spring Boot 2.1.4.RELEASE com Spring Cloud Greenwich.SR1:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.4.RELEASE</version>
<relativePath/>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
<version>2.1.1.RELEASE</version>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Greenwich.SR1</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
Compatibilidade de versões
Alinhe a versão do Spring Cloud Alibaba com a release train do seu Spring Cloud:
|
Release train do Spring Cloud |
Versão do Spring Cloud Alibaba |
|
Greenwich |
2.1.1.RELEASE |
|
Finchley |
2.0.1.RELEASE |
|
~~Edgware~~ |
~~1.5.1.RELEASE~~ (descontinuado — não utilize) |
3c. Criar a classe de inicialização
Em src/main/java, crie o pacote com.aliware.edas e adicione a seguinte classe NacosConfigExampleApplication:
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class NacosConfigExampleApplication {
public static void main(String[] args) {
SpringApplication.run(NacosConfigExampleApplication.class, args);
}
}
3d. Criar um controller
No mesmo pacote, crie uma classe EchoController. A anotação @RefreshScope habilita a atualização dinâmica da configuração: quando test.name muda no Nacos, a aplicação obtém o novo valor sem reinicialização.
import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RefreshScope
public class EchoController {
@Value("${test.name}")
private String userName;
@RequestMapping(value = "/")
public String echo() {
return userName;
}
}
A anotação @RefreshScope recria o bean quando o Nacos envia uma alteração de configuração. O listener de atualização automática vem ativado por padrão (spring.cloud.nacos.config.refresh.enabled=true).
3e. Configurar o endereço do Nacos Server
Em src/main/resources, crie um arquivo bootstrap.properties:
spring.application.name=nacos-config-example
server.port=18081
spring.cloud.nacos.config.server-addr=127.0.0.1:8848
127.0.0.1:8848— o endereço do Nacos Server.18081— a porta da aplicação.
Se o Nacos Server estiver executando em outra máquina, atualize o endereço e a porta. Consulte a Referência de configuração para propriedades adicionais.
Etapa 4: Executar e verificar localmente
Verificar a configuração inicial
Execute o método
mainemNacosConfigExampleApplicationpara iniciar a aplicação.Abra http://127.0.0.1:18081 no navegador. A resposta será
nacos-config-test— o valor detest.namedefinido na Etapa 2.
Verificar a atualização dinâmica da configuração
No console do Nacos Server, acesse ConfigManagement > Configurations e edite a entrada
nacos-config-example.properties.Altere
test.name=nacos-config-testparatest.name=nacos-config-updatede clique em Publish.Atualize a página http://127.0.0.1:18081. A resposta agora exibe
nacos-config-updated, confirmando que o@RefreshScopefunciona sem reiniciar a aplicação.
Etapa 5: Implantar no EDAS
Recrie a mesma configuração no EDAS antes da implantação para que a aplicação possa lê-la pelo módulo de gerenciamento de configuração do EDAS.
5a. Criar a configuração no EDAS
Faça login no console do EDAS.
No painel de navegação à esquerda, selecione Application Management > Microservice Configurations.
Na página Configurations, selecione uma Region na barra de navegação superior e um Microservices Namespace no menu suspenso. Em seguida, clique em Create Configuration.
-
No painel Create Configuration, defina os mesmos parâmetros da configuração local do Nacos e clique em Create:
Parâmetro
Valor
Data ID
nacos-config-example.propertiesGroup
DEFAULT_GROUPFormat
PropertiesConfiguration Content
test.name=nacos-config-test
Os valores de Region e Microservice Namespace são herdados da página Configurations e não podem ser alterados neste painel.
5b. Implantar a aplicação
Implante a aplicação no EDAS. Escolha um método de implantação adequado à sua infraestrutura:
Agilizar o desenvolvimento local para nuvem
Depois que a aplicação estiver em execução no EDAS, ignore a configuração local do Nacos Server nas iterações subsequentes. O EDAS oferece um recurso de interconexão local-nuvem que permite a uma aplicação em execução local:
Ler configurações diretamente do módulo de gerenciamento de configuração do EDAS
Chamar outras aplicações implantadas na nuvem e receber chamadas delas
Isso proporciona todo o comportamento de runtime do EDAS sem precisar reimplementar a cada alteração.Para obter mais informações sobre a interconexão local-nuvem, consulte Introdução à interconexão local-nuvem.
Referência de configuração
Adicione qualquer uma destas propriedades ao bootstrap.properties para personalizar o comportamento do Nacos Config:
|
Item de configuração |
Chave |
Padrão |
Descrição |
|
Endereço do servidor |
|
-- |
Endereço do Nacos Server (obrigatório) |
|
Prefixo do Data ID |
|
|
Parte do prefixo do Data ID |
|
Grupo |
|
|
Grupo de configuração |
|
Sufixo e formato do Data ID |
|
|
Formato de arquivo para o conteúdo da configuração. Suportados: |
|
Codificação |
|
|
Codificação de caracteres para o conteúdo da configuração |
|
Timeout |
|
|
Tempo limite para buscar configurações, em milissegundos |
|
Namespace |
|
-- |
Isola configurações entre ambientes (desenvolvimento, teste, produção) |
|
Caminho de contexto |
|
-- |
Caminho relativo da API do Nacos Server |
|
Endpoint |
|
|
Endpoint específico da região para resolução dinâmica de endereços de servidor |
|
Atualização automática |
|
|
Ativa ou desativa o listener de alterações de configuração |
Para a lista completa de itens de configuração, consulte a documentação do Spring Cloud Alibaba Nacos Config.