springboot集成nacos

springboot集成nacos步骤
1.引入pom依赖

com.alibaba.cloud
spring-cloud-starter-alibaba-nacos-discovery

2.启动类上加@EnableDiscoveryClient注解
注:springboot现在已经允许不加这个注解也能注册了。这个注解得作用是让注册中心能够发现,扫描到改服务。
3.增加配置
spring:
cloud:
nacos:
discovery:
service: msb-stock
server-addr: localhost:8848
注:bootstrap.yml文件优先级高于application.yml文件,所以nacos得配置文件一般写在bootstap.yaml文件中

4.@RefreshScope注解 动态刷新nacos中得配置

  1. nacos共享配置
    spring:
    application:
    name: nacos-config-multi
    main:
    allow-bean-definition-overriding: true
    cloud:
    nacos:
    username: ${nacos.username}
    password: ${nacos.password}
    config:
    server-addr: ${nacos.server-addr}
    namespace: ${nacos.namespace}

    用于共享的配置文件

    shared-configs:
    - data-id: common-mysql.yaml
    group: SPRING_CLOUD_EXAMPLE_GROUP

     - data-id: common-redis.yaml
       group: SPRING_CLOUD_EXAMPLE_GROUP
    
     - data-id: common-base.yaml
       group: SPRING_CLOUD_EXAMPLE_GROUP
    

    常规配置文件

    优先级大于 shared-configs,在 shared-configs 之后加载

    extension-configs:
    - data-id: nacos-config-advanced.yaml
    group: SPRING_CLOUD_EXAMPLE_GROUP
    refresh: true

     - data-id: nacos-config-base.yaml
       group: SPRING_CLOUD_EXAMPLE_GROUP
       refresh: true
    

参数解析

  • data-id : Data Id
  • group:自定义 Data Id 所在的组,不明确配置的话,默认是 DEFAULT_GROUP。
  • refresh: 控制该 Data Id 在配置变更时,是否支持应用中可动态刷新, 感知到最新的配置值。默认是不支持的。
  1. 扩展配置
    7配置文件优先级:
    共享配置<扩展配置
  2. nacos动态刷新原理
    Nacos客户端发送一个请求连接到服务端,然后服务端中会有一个29.5+0.5s的一个hold期,然后服务端会将此次请求放入到allSubs队列中等待,触发服务端返回结果的情况只有两种,第一种是时间等待了29.5秒,配置未发生改变,则返回未发生改变的配置;第二种是操作Nacos Dashboard或者API对配置文件发生一次变更,此时会触发配置变更的事件,发送一条LocalDataEvent消息,此时服务端监听到消息,然后遍历allSubs队列,根据对应的groupId找到配置变更的这条ClientLongPolling任务,并且通过连接返回给客户端

Nacos动态刷新避免了服务端对客户端进行push操作时需要保持双方的心跳连接,同样也避免了客户端对服务端进行pull操作时数据的时效性问题,不必频繁去拉去服务端的数据

所以nacos动态刷新原理是客户端主动拉取的,通长轮询的方式(Long Polling)的方式来获取配置数据

你可能感兴趣的:(spring,cloud,alibaba,spring,boot,java,spring)