SpringCloud使用Nacos

一、Nacos服务

1、下载jar包并解压

下载地址:

https://github.com/alibaba/nacos/releases

找到对应版本,也可以把源码下载下来阅读

2、启动Nacos服务

单机模式启动

(1)cmd进到nacos的bin目录
(2)startup.cmd -m standalone

访问:http://127.0.0.1:8848/nacos

账号、密码:nacos/nacos

二、Nacos持久化

只使用nacos的注册中心,就不需要持久化。

如果要使用nacos的配置中心,就需要把配置数据保存到数据库。

1、新建数据库和表

建数据库,并执行建表脚本。

脚本在nacos服务的conf目录下的nacos-mysql.sql

2、修改配置文件

在nacos服务的conf目录下,找到application.properties,修改数据库连接配置

重新启动nacos服务后,新增配置内容,在数据库可以看到对应的配置数据。

三、微服务集成Nacos注册中心

1、依赖

<dependency>
   <groupId>com.alibaba.cloud</groupId>
   <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>

2、启动类加注解

@EnableDiscoveryClient

3、配置文件配置

spring:
  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848

4、启动

启动之后,在nacos界面,服务管理菜单下的服务列表,可看见注册到nacos的服务实例。

四、微服务集成Nacos配置中心

1、依赖

<dependency>
   <groupId>com.alibaba.cloud</groupId>
   <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>

2、nacos配置

默认是public空间,测试环境、生产环境分开配置的话,可以新建命名空间,比如:dev、prod

我这里以dev为例

在配置管理的配置列表下,点击"dev",切到dev命名空间

新建配置文件,这里的demo对应微服务的服务名

3、微服务配置

必须使用 bootstrap.properties或者 bootstrap.yml配置文件来配置 Nacos Server 地址。

我这里新建bootstrap.yml,配置内容如下:

spring:
  application:
    name: demo
  profiles:
    active: dev
  cloud:
    nacos:
      server-addr: 127.0.0.1:8848
      config:
        file-extension: yaml   #配置格式,目前只支持 properties 和 yaml 类型
        namespace: a21cfeff-099f-4459-827e-a68032655fb3  #命名空间id
        refresh-enabled: true   #配置自动刷新

4、代码测试

访问这个接口,可以看到结果。

在Controller上加上注解 @RefreshScope 可以实现配置自动更新(修改nacos配置,不用重启应用,再次访问接口,即可获取到更新后的值),前提是refresh-enabled设置为true,如果refresh-enabled设置为fasle,加@RefreshScope也无法自动刷新。

5、共享配置

多个服务相同的配置,可以抽取出来作为项目中共有的配置,比如redis

或者说都放在一个配置文件里,可能会显得庞大,所有可以对一个配置文件进行拆分。

extension-configs 和 shared-configs,extension-configs优先级大于 shared-configs。

在同一系列extension-configs下,数组下标数字越大,优先级越高,shared-configs同理。

例如:extension-configs[2] > extension-configs[1] > extension-configs[0]

           shared-configs[2] > shared-configs[1] > shared-configs[0]

官方推荐使用 shared-configs

比如,我的应用配置如下:

spring:
  application:
    name: demo
  profiles:
    active: dev
  cloud:
    nacos:
      server-addr: 127.0.0.1:8848
      config:
        file-extension: yaml   #配置格式,目前只支持 properties 和 yaml 类型
        namespace: a21cfeff-099f-4459-827e-a68032655fb3  #命名空间id
        refresh-enabled: true   #配置自动刷新
        #配置redis
        shared-configs[0]:
          data-id: redis.yaml
          group: DEFAULT_GROUP  # 默认为DEFAULT_GROUP
          refresh: true   # 是否动态刷新,默认为false
        #配置rabbitMq
        shared-configs[1]:
          data-id: rabbitMq.yaml
          refresh: true  # 是否动态刷新,默认为false

        extension-configs[0]:
          data-id: zipkin.yaml
          refresh: true  # 是否动态刷新,默认为false

        extension-configs[1]:
          data-id: test.yaml
          group: DEFAULT_GROUP  # 默认为DEFAULT_GROUP
          refresh: true  # 是否动态刷新,默认为false

nacos上有如下配置:

6、配置优先级

nacos中的配置优先于本地配置。

nacos中的配置(例子:服务名为demo,profile为dev):

主配置(内部规则data-id配置) > extension-configs > shared-configs。

总的就是:demo-dev.yaml > demo.yaml > extension-configs[3] > extension-configs[2] > shared-configs[3] > shared-configs[2] 。

本地配置(以profiles:active: dev为例):

1、properties > yml > yaml

2、application-dev > application > bootstrap

总的就是:

application-dev.properties > application-dev.yml > application.properties > application.yml > bootstrap.properties > bootstrap.yml。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值