Introdução ao Nacos Configuration Center, Introdução à configuração remota e função de configuração de atualização dinâmica

Introdução

Nacos tem as funções de centro de registro e centro de configuração. Primeiro, vamos apresentar o centro de configuração separadamente

Nacos providenciou o armazenamento de configuração e seus metadados de chave / valor armazenados , o servidor e o cliente fornecem suporte para a configuração externa do sistema distribuído. Usando Spring Cloud Alibaba Nacos Config, você pode gerenciar centralmente a configuração de propriedade externa de seu aplicativo Spring Cloud no Nacos Server .

Spring Cloud Alibaba Nacos Config é uma alternativa ao Spring Cloud Config Server e Client . Os conceitos no cliente e no servidor têm a mesma abstração do Spring Environment e PropertySource. No estágio de bootstrap especial, a configuração é carregada no ambiente Spring. Conforme o aplicativo vai do desenvolvimento ao teste e à produção por meio do pipeline de implantação, você pode gerenciar a configuração entre esses ambientes e garantir que o aplicativo tenha tudo o que precisa para ser executado durante a migração. Consulte o site oficial do Nacos para saber como obter e iniciar o Nacos .

Questão :

Integração do projeto

Também há duas maneiras de introduzir o Nacos Config, a saber, introdução do Aliyun Java Initializr e dependência do Maven pom.xml. É oficialmente recomendado usar Aliyun Java Initializr para apresentar o Nacos Config para simplificar as dependências entre componentes.

Exemplo Pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.laker</groupId>
    <artifactId>config</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>config</name>
    <description>Demo project for Spring Boot</description>

    <properties>
        <java.version>1.8</java.version>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <spring-boot.version>2.3.7.RELEASE</spring-boot.version>
        <spring-cloud-alibaba.version>2.2.2.RELEASE</spring-cloud-alibaba.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>
        <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>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
            <exclusions>
                <exclusion>
                    <groupId>org.junit.vintage</groupId>
                    <artifactId>junit-vintage-engine</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
    </dependencies>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>${spring-boot.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                <version>${spring-cloud-alibaba.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.8.1</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                    <encoding>UTF-8</encoding>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <version>2.3.7.RELEASE</version>
                <configuration>
                    <mainClass>com.laker.config.ConfigApplication</mainClass>
                </configuration>
                <executions>
                    <execution>
                        <id>repackage</id>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

</project>

Inicie o servidor Nacos

Consulte Resolver o problema de baixa velocidade de download doméstico do Nacos Server Download start

O nome de usuário e a senha padrão são: nacos

Nacos Server adicionar configuração

  • Configuração do servidor Nacos
  • bootstrap.yml 配置
  • Configuração de código

O quadro geral é o seguinte:

Insira a descrição da imagem aqui

Introdução de funções comuns

Ele apenas descreve como usá-lo e o princípio se refere ao artigo a seguir.

Use o Nacos Config como configuração distribuída do Spring Cloud

Começar a aula

@SpringBootApplication
public class NacosConfigSampleApplication {
    
    
    public static void main(String[] args) {
    
    
         SpringApplication.run(NacosConfigSampleApplication.class, args
        );
    }
}

Classe de configuração

@RestController
@RequestMapping("/config")
public class ConfigController {
    
    

    @Value("${laker.name}")
    private String lakerName;

    @RequestMapping("/get")
    public String get() {
    
    
        return lakerName;
    }
}

verificação

Acesso navegador: http://ip:port/config/get.

Use o Nacos Config para obter a atualização dinâmica do Bean

O Nacos Confg suporta o RefreshScoperecurso Spring Cloud @ padrão , ou seja, depois que o aplicativo se inscreve em uma configuração do Nacos, quando o conteúdo da configuração muda, as propriedades da configuração de ligação nos Beans de atualização de escopo serão atualizadas condicionalmente. A chamada condição significa que o Bean deve:

  • Condição necessária : a classe declarada de Bean deve ser marcada com @RefreshScope
  • Escolha uma condição :
    • Propriedades (campos não estáticos) são marcados com @Value
    • @ ConfigurationPropertiesBean

Além disso, o Nacos Confg também introduziu a interface de monitoramento de alteração de dados subjacente do Nacos Client, a
saber , com.alibaba.nacos.api.config.listener.Listener. O conteúdo a seguir discutirá esses três
cenários de uso diferentes .

Cliente Nacos: API do cliente Nacos, que também é a dependência subjacente do Nacos Config

Atualização dinâmica da propriedade Bean @Value

@RestController
@RequestMapping("/config")
@RefreshScope
public class ConfigController {
    
    

    @Value("${laker.name}")
    private String lakerName;

    @RequestMapping("/get")
    public String get() {
    
    
        return lakerName;
    }

    @PostConstruct
    public void init() {
    
    
        System.out.printf("---[init]--- laker name : %s ", lakerName);
    }
}

@ConfigurationProperties Atualização dinâmica da propriedade Bean

  • 激活 @ConfigurationProperties Bean @EnableConfigurationProperties (
    User.class)。
  • Injeção de dependência de User Bean por meio de @Autowired.
@RefreshScope
@ConfigurationProperties(prefix = "laker")
public class User {
    
    
    private String name;
    private int age;
}

Começar a aula

@EnableConfigurationProperties(User.class)
@SpringBootApplication
public class NacosConfigSampleApplication {
    
    
    public static void main(String[] args) {
    
    
        SpringApplication.run(NacosConfigSampleApplication.class, args
        );
    }
}

Use o Nacos g Config para monitorar a atualização dinâmica das propriedades do Bean

Conforme mencionado anteriormente, com.alibaba.nacos.api.config.listener.Listener é a interface do ouvinte de configuração padrão do Nacos ClientAPI. Como ele apenas escuta o conteúdo da configuração e não pode se comunicar diretamente com o sistema Spring, ele precisa da ajuda do Spring Cloud Alibaba API Nacos Config NacosConfigManager

@SpringBootApplication
public class NacosConfigSampleApplication {
    
    
    @Autowired
    private NacosConfigManager nacosConfigManager;

    public static void main(String[] args) {
    
    
        SpringApplication.run(NacosConfigSampleApplication.class, args
        );
    }
    @Bean
    public ApplicationRunner runner() {
    
    
        return args -> {
    
    
            String dataId = "laker-dev.yaml";
            String group = "DEFAULT_GROUP";
            nacosConfigManager.getConfigService().addListener(dataId, group, new
                    AbstractListener() {
    
    
                        @Override
                        public void receiveConfigInfo(String configInfo) {
    
    
                            System.out.println("[Listener] " + configInfo);
                        }
                    });
        };
    }
}

[Listener] laker:
  name: laker1222222

referência:

  • Spring Cloud Alibaba da entrada ao combate real.pdf
Alcance os benefícios da festa: Spring Cloud Alibaba da entrada ao combate real.pdf Download

Preste atenção à minha conta pública [ Entrevistador Java ], responda: 100 podem ser baixados

Catálogo desta série

Acho que você gosta

Origin blog.csdn.net/abu935009066/article/details/112667479
Recomendado
Clasificación