SpringCloud全系列知识(2)—— Nacos配置和集群

Nacos配置和集群

一 统一配置管理

Nacos官方文档

1.配置热更新

SpringCloud全系列知识(2)—— Nacos配置和集群_第1张图片

1.新建配置文件

在Nacos的配置列表中新建一个配置文件。
SpringCloud全系列知识(2)—— Nacos配置和集群_第2张图片

注意事项:

Data ID 命名规则:一般情况下使用使用 “微服务名称+运行环境” 作为DataID,后缀名建议使用文件后缀全名,例如:yaml

Group:分组名称,根据事情需求修改。

配置内容:按照所选配置格式编写即可。尽可能的配置一些有热更新需求的参数。一般用于服务中的开关配置或模板配置。

2.读取配置文件

SpringCloud全系列知识(2)—— Nacos配置和集群_第3张图片

1.引入Nacos的配置管理客户端config依赖

<dependency>
    <groupId>com.alibaba.cloudgroupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-configartifactId>
dependency>

或者在通过 Spring Ini创建项目时直接勾选

SpringCloud全系列知识(2)—— Nacos配置和集群_第4张图片

2.创建 bootstrap.yml

在 项目中的resources文件夹下创建bootstrap.yml文件,bootstrap.yml 叫做引导文件,先于application.yml 执行。

spring:
  application:
    name: alibaba-order  # 服务名称
  profiles:
    active: dev  #运行环境
  cloud:
    nacos:
      server-addr: http://localhost:8848  # nacos地址
      config:
        file-extension: yaml # 文件后缀名

配置完成之后,本地配置文件中的相同配置即可直接去掉。

3.设置细节

配置文件名(Data ID)一般以微服务名称为准,在多环境时,则以"微服务名-环境名"作为配置文件名。

例如配置文件名为"alibaba-order-dev.yaml",则配置文件内容应该如下:

spring:
  application:
    name: alibaba-order  # 服务名称
  profiles:
    active: dev  #运行环境
  cloud:
    nacos:
      server-addr: http://localhost:8848  # nacos地址
      config:
        file-extension: yaml # 文件后缀名
      discovery:
        namespace: public
        username: nacos
        password: nacos
        cluster-name: xian
        # 设置该实例为非临时实例
        #ephemeral: false

3.配置自动刷新

Nacos中的统一配置管理文件修改以后,无需重启服务即可实现自动更新。需要通过一下两种方式实现。

1.在使用了相关值的控制器类上添加 @RefreshScope 注解

2.使用 @ConfigurationProperties 注解

@Component
@Data
@ConfigurationProperties("systems")
public class YamlConfig {
    private String os;
}

然后在控制器类中使用依赖注入即可

@RestController
@RequestMapping("/test")
public class TestController {
    @Autowired
    private YamlConfig yamlConfig;

    @GetMapping
    public String get(){
        //return "123";
        return yamlConfig.getOs();
    }
}

推荐使用 @ConfigurationProperties 注解的方式实现配置自动刷新

4.多环境配置共享

无论环境如何变化,以服务名称命名的配置文件总是被多个环境共享。

例如 alibaba-order-dev.yaml 和 alibaba-order.yaml。alibaba-order-dev.yaml仅在dev环境下生效,而 alibaba-order.yaml 在全部环境下均有效。
在这里插入图片描述

开发环境中使用多环境测试时,可通过修改服务的配置信息来实现多环境的模拟。
SpringCloud全系列知识(2)—— Nacos配置和集群_第5张图片

5.配置文件优先级

统一配置管理中,若存在相同的配置属性,则它们是按照一定的优先级来实现加载。

指定环境 > 环境共享 > 本地

二 Nacos集群搭建

1.Nacos集群框架图

SpringCloud全系列知识(2)—— Nacos配置和集群_第6张图片

2.Nacos集群实现

1.初始化数据库

创建一个名为 nacos 的数据库,编码格式为 utf8。

下载nacos,在nacos根目录下的conf文件夹内,找到 nacos-mysql.sql 文件,运行至mysql。

2.编辑配置文件

SpringCloud全系列知识(2)—— Nacos配置和集群_第7张图片

更改 cluster.conf.example 文件名为 cluster.conf

编辑 cluster.conf 文件,模拟3台服务器的Nacos地址

192.168.16.191:8845
192.168.16.191:8846
192.168.16.191:8847

编辑 application.properties 文件,设置数据库相关信息及服务端口信息

server.port=8845
spring.datasource.platform=mysql

### Count of DB:
db.num=1

### Connect URL of DB:
db.url.0=jdbc:mysql://127.0.0.1:3306/nacos?characterEncoding=utf8&serverTimezone=UTC
db.user.0=root
db.password.0=123456

然后将nacos复制3份,分别修改 server.port 的端口值为 cluster.conf 文件中设置的端口值,如果服务器不一样时,端口号则可以保持一致。

最后分别启动Nacos服务,启动成功以后,配置Nginx。

#配置nacos集群
upstream nacos-cluster {
	server 127.0.0.1:8845;
	server 127.0.0.1:8846;
	server 127.0.0.1:8847;
}
server {
    listen       8848;
    server_name  localhost;
	
	location /nacos {
	    proxy_pass http://nacos-cluster;
	}
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   html;
    }
}

最后运行Nginx,在浏览器访问即可。

你可能感兴趣的:(分布式,Java,spring,cloud,微服务,java)