Nacos 配置中心入门到精通

配置中心

1. 版本

以下是我下载的版本 https://github.com/alibaba/nacos/releases/download/1.2.1/nacos-server-1.2.1.tar.gz

其他版本可参考:
https://github.com/alibaba/nacos/releases

2. 安装

windows部署:
解压后进入nacos/bin目录,执行startup.cmd -m standalone

linux上部署

tar -xzvf nacos-server-1.2.1.tar.gz

修改端口并运行

#进入解压文件目录
cd nacos
#修改端口号,不要以默认端口运行, 10001为修改后的端口
sed -i "s/server.port=8848/server.port=10001/" conf/application.properties
cd nacos/bin
#启动单机模式
bin/startup.sh -m  standalone &

测试:
http://IP:10001/nacos/#/login //显示页面正常
账号/密码: nacos/nacos

3. 在springBoot项目上使用

  1. 创建一个springboot工程
  2. 导入依赖:
<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

    <!-- nacos配置,注意不要用springcloud的discovery,不然注册不上nacos -->
    <!-- 千万注意不要用springCloud中的discovery,不然死活注册不上 -->
    <dependency>
        <groupId>com.alibaba.cloud</groupId>
        <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
        <version>2.1.2.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>com.alibaba.cloud</groupId>
        <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        <version>2.1.2.RELEASE</version>
    </dependency>
</dependencies>

  1. 配置:
  • 新建启动类TestNacosApplication
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;

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

  • 新建一个bootstrap.yml
spring:
  application:
    name: nacos-config-example  #指定项目的名字
  cloud:
    nacos:
      discovery:  #用于服务发现
        server-addr: NacosIP:10001  #nacos配置中心地址和端口
      config:     #指定配置中心
        server-addr: NacosIP:10001  #nacos配置中心地址和端口
        file-extension: yaml  #指定服务配置格式,严格要求,下面会说到有几种格式

  • 在页面上新建配置
    Data ID规范(严格要求,不然会匹配不了):
${spring.cloud.nacos.config.prefix}.${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}
//因为上面我没有配置${spring.profiles.active},所以忽略了
最终拼接出来的就是:nacos-config-example.yaml

image.jpeg

file-extension: 刚刚上面说了有几种格式,就是按照上图的配置格式来定义的一种有6种(一定要按严格要求来配置,不然匹配不了,启动时会报错)

  • 测试

    • 新建一个测试控制层来访问
    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
     @RequestMapping("/config")
     @RefreshScope   //配置热更新
     public class TestController {
         @Value("${info.name}")
         private String name;
    
         @Value("${info.age}")
         private Integer age;
    
         @RequestMapping("/get")
         public String get() {
             System.out.println(age+name);
             return age+ name;
         }
     }
    
    
    • 启动后,访问http://127.0.0.1:8091/config/get
      页面内容: 19qiqi

    • @RefreshScope 以上控制层添加了配置热更新的注解,所以我们可以修改以下配置文件重新发布看看
      image.jpeg

      把age修改为20

    • 测试: 此时服务不需要重启访问http://127.0.0.1:8091/config/get
      页面类容: 20qiqi
      //修改成功

  1. 在同一个公司中可能有多个项目,某个项目中都有一套代码运行在不同的环境,在一套程序上可能在开发环境测试环境和生产环境上有不同的配置,比如端口或者工作目录,那么我们需要不同环境下有不同的配置文件,所以Nacos也支持这种项目与环境隔离:
  • 可以使用Nacos提供的命名空间Group用来进行配置之间的项目隔离与环境隔离

  • 新建一个命名空间(用于隔离不同的项目)
    image.jpeg

    以下多了一个shop命名空间
    image.jpeg
  • 我们去shop命名空间中新建配置,还是按以上配置新建,把

    • 注意: 本次新建填写group要按规范来如下图

      image.jpeg

    • bootstrap.yml配置

    spring:
    profiles:
    active: dev
    application:
    #指定项目的名字这样命名是为了区分某个环境向同一个注册中心注册导致不同环境调用微服务负载均衡时出现读取不同环境数据问题
    name: nacos-config-example-${spring.profiles.active}  
    cloud:
    nacos:
     username: shop
     password: shop
     server-addr: IP:10001 #nacos配置中心地址和端口
     discovery:
       namespace: 800ba91e-def4-414a-9bbe-11cc6ad51916  #这里默认不填会使用public的名称空间
       register-enabled: true  #如果本地开发的话,不希望注册到Nacos的把这个改为false
       s
     config:     #指定配置中心
       namespace: 800ba91e-def4-414a-9bbe-11cc6ad51916  #这里默认不填会使用public的名称空间
       file-extension: yaml
       #指定某个命名空间的组,用组来隔离不同环境和项目的配置
       group: iot-${spring.profiles.active} 
    
    
  • 然后在bootstrap.yml中添加指定该名称空间 spring.cloud.nacos.config.namespace=800ba91e-def4-414a-9bbe-11cc6ad51916 (即刚刚生产名称空间的id)

  • 重启,因为添加了spring.cloud.nacos.config.namespace所以我们需要重新启动加载该指令

  • 测试:http://127.0.0.1:8092/config/get
    页面类容: 19qiqi // 项目和环境隔离成功

下节内容我讲讲解和实操Nacos服务注册与发现,手把手教你从入门到放弃,哈哈再见!!!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。