Gerenciamento de configuração Nacos
- Gerenciamento de configuração unificado
- Configurar Atualização Rápida
- compartilhamento de configuração
- Crie um cluster Nacos
Gerenciamento de configuração Nacos - Nacos implementa gerenciamento de configuração
Gerenciamento de configuração unificado
Atualização a quente de mudança de configuração
Adicionar informações de configuração em Nacos: gerenciamento de configuração-lista de configuração-+
Preencha as informações de configuração no formulário pop-up:
Data ID:配置文件的id:[服务名称]-[profile].[后缀名] # eg:orderservice-dev.yaml
Group: DEFAULT_GROUP #分组,默认即可
配置格式: 格式,目前支持yaml和properties
配置内容:# eg:
pattern:
dataformat: yyyy-MM-dd HH:mm:ss
Gerenciamento de configuração Nacos - pull de configuração de microsserviço
Gerenciamento de configuração unificado
Os passos para obter a configuração são os seguintes:
Início do projeto –> endereço nacos, bootstrap.yml –> ler arquivo de configuração nacos –> ler arquivo de configuração local application.yml –> criar contêiner de mola –> load bean
1. Apresentar as dependências do cliente de gerenciamento de configuração do Nacos:
<!--nacos配置管理依赖-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
2. Adicione um arquivo bootstrap.yml ao diretório de recursos em userservice . Este arquivo é um arquivo bootstrap com uma prioridade mais alta que applicatin.yml
spring:
application:
name: userservice # 服务名称
profiles:
active: dev # 开发环境,这里是dev
cloud:
nacos:
server-addr: localhost:8848 # Nacos地址
config:
file-extension: yaml # 文件后缀名
Injete o atributo pattern.dateformat no UserController no serviço do usuário para teste:
@RestController
@RequestMapping("/user")
public class UserController {
// 注入nacos中的配置属性
@Value("${pattern.dateformat}")}
private String dateformat;
// 编写controller,通过日期格式化器来格式化现在时间并返回
public String now() {
return LocalDate.now().format(DateTimeFormatter.ofPattern(dataformat, Locale.CHINA));
}
...
}
resumo:
Etapas para entregar a configuração ao gerenciamento da Nacos
- Adicionar arquivos de configuração no Nacos
- Introduzir dependências de configuração do nacos em microsserviços
- Adicione bootstrap.yml ao microsserviço e configure o endereço nacos, o ambiente atual, o nome do serviço e a extensão do arquivo. Estes determinam qual arquivo ler do nacos quando o programa iniciar
Gerenciamento de configuração do Nacos - hot update da configuração
Configurar atualização automática
Depois que o arquivo de configuração no Nacos é alterado, o microsserviço pode percebê-lo sem reiniciar. No entanto, você precisa implementar as duas configurações a seguir:
Método 1: Adicionar anotação @RefreshScope na classe onde está localizada a variável injetada por @Value
@Slf4j
@RestController
@RequestMapping("/user")
@RefreshScope
public class UserController {
@Value("${pattern.dateformat}")
private String dateformat;
}
Método 2: use a anotação @ConfigurationProperties
@Component
@Data
@COnfigurationProperties(prefix = "pattern")
public class PatternProperties {
private String dateformat;
}
@slf4j
@RestController
@RequestMapping("/user")
@RefreshScope
public class UserController {
@Autowired
private PatternProperties properties;
@GetMapping("now")
public String now() {
return LocalDateTime.now().format(DateTimeFormatter.ofPattern(properties.getDateformat()))
}
}
resumo:
Depois que a configuração do Nacos é alterada, os microsserviços podem ser atualizados das seguintes maneiras:
- Injetado por meio da anotação @Value, combinado com @RefreshScope para atualizar
- Injetado por meio de @ConfigurationProperties, atualizado automaticamente
Precauções:
- Nem todas as configurações são adequadas para serem colocadas no centro de configuração, o que é problemático de manter
- Recomenda-se colocar alguns parâmetros-chave e parâmetros que precisam ser ajustados em tempo de execução no centro de configuração do nacos, que geralmente são configurações personalizadas
Gerenciamento de configuração Nacos - compartilhamento de configuração em vários ambientes
Compartilhamento de configuração em vários ambientes
Quando o microsserviço for iniciado, ele lerá vários arquivos de configuração do nacos:
-
[spring.application.name]-[spring.profiles.active].yaml, por exemplo: userservice-dev.yaml
-
[spring.application.name].yaml, por exemplo:userservice.yaml
Não importa como o perfil muda, o arquivo [spring.application.name].yaml será carregado, então a configuração de compartilhamento de vários ambientes pode ser gravada neste arquivo
Prioridade de várias configurações:
service-name-profile.yaml > service-name.yaml > configuração-local
resumo:
O arquivo de configuração que o microsserviço lerá do nacos:
- [nome do serviço]-[spring.profile.active].yaml, configuração do ambiente
- [nome do serviço].yaml, configuração padrão, compartilhamento de vários ambientes
prioridade:
[nome do serviço]-[ambiente].yaml>[nome do serviço].yaml>configuração local
## Gerenciamento de configuração Nacos - construção do cluster nacos #### Construção do cluster Nacos
No ambiente de produção Nacos, ele deve ser implantado como um estado de cluster
1. Diagrama de estrutura de cluster
O diagrama de cluster oficial do Nacos:
DNS | ||
---|---|---|
SLB | ||
nacos | nacos | nacos |
Ele contém 3 nós nacos e, em seguida, um proxy de balanceador de carga 3 Nacos. Aqui, o balanceador de carga pode usar nginx.
Endereços de três nós nacos:
nó | ip | porta |
---|---|---|
nacos1 | 192.168.150.1 | 8845 |
nacos2 | 192.168.150.1 | 8846 |
nacos3 | 192.168.150.1 | 8847 |
2. Crie um diagrama de cluster
As etapas básicas para criar um cluster:
- Construa o banco de dados e inicialize a estrutura da tabela do banco de dados
- Baixe o pacote de instalação do nacos
- configurar nacos
- Iniciar cluster nacos
- proxy reverso nginx
2.1. Inicializar o banco de dados
Os dados padrão do Nacos são armazenados no banco de dados integrado Derby, que não é um banco de dados disponível para produção.
A melhor prática oficialmente recomendada é usar um cluster de banco de dados altamente disponível com mestre-escravo
Aqui está um banco de dados de ponto único como exemplo.
2.2. Baixar nacos
nacos tem um endereço de download no GitHub: https://github.com/alibaba/nacos/tags, você pode escolher qualquer versão para baixar.
2.3. Configurar Nacos
Descompacte o pacote em qualquer diretório não chinês, conforme mostrado na figura:
- lixeira
- conf
- alvo
- LICENÇA
- PERCEBER
Descrição do diretório:
- bin: script de inicialização
- conf: arquivo de configuração
Entre no diretório conf de nacos, modifique o arquivo de configuração cluster.conf.example e renomeie-o para cluster.conf:
Em seguida, adicione o conteúdo:
127.0.0.1:8845
127.0.0.1.8846
127.0.0.1.8847
Em seguida, modifique o arquivo application.properties e adicione a configuração do banco de dados
spring.datasource.platform=mysql
db.num=1
db.url.0=jdbc:mysql://127.0.0.1:3306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
db.user.0=root
db.password.0=123
2.4. Inicialização
Copie a pasta nacos três vezes, a saber: nacos1, nacos2, nacos3
Em seguida, modifique o applicaiton.properties nas três pastas, respectivamente
nacos1:
server.port=8845
nacos2:
server.port=8846
nacos3:
server.port=8847
Em seguida, inicie três nós nacos separadamente:
o padrão é a inicialização do cluster
startup.cmd
2.5.nginx proxy reverso
Descompacte a instalação do nginx em qualquer diretório não chinês:
Modifique o arquivo conf/nginx.conf, a configuração é a seguinte:
upstream nacos-cluster {
server 127.0.0.1:8845;
server 127.0.0.1:8846;
server 127.0.0.1:8847;
}
server {
listen 80;
server_name localhost;
location /nacos {
proxy_pass http://nacos-cluster;
}
}
Em bootstrap.yml:
spring:
application:
name: userservice # 服务名称
profiles:
active: dev # 开发环境,这里是dev
cloud:
nacos:
server-addr: localhost:80 # Nacos地址
config:
file-extension: yaml # 文件后缀名
Endereço de acesso do navegador:
http://localhost/nacos
resumo:
Etapas de construção do cluster
- Crie um cluster MYSQL e inicialize a tabela do banco de dados
- Baixe e descompacte nacos
- Modificar a configuração do cluster (informações do nó), configuração do banco de dados
- Inicie vários nós nacos separadamente
- proxy reverso nginx