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服务注册与发现,手把手教你从入门到放弃,哈哈再见!!!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,271评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,275评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,151评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,550评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,553评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,559评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,924评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,580评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,826评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,578评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,661评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,363评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,940评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,926评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,156评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,872评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,391评论 2 342