Nacos配置(discovery&config)

Nacos配置管理的配置写在bootstrap.yml中。

  1. spring:
  2. profiles:
  3. # 当前激活环境
  4. active: @profile.name@
  5. cloud:
  6. #配置Bus id(远程推送事件)
  7. bus:
  8. id: ${spring.application.name}:${server.port}
  9. nacos:
  10. config:
  11. # Nacos 认证用户
  12. username: nacos
  13. # Nacos 认证密码
  14. password: nacos
  15. # 命名空间 常用场景之一是不同环境的配置的区分隔离,例如开发测试环境和生产环境的资源(如配置、服务)隔离等
  16. namespace: @config.namespace@
  17. # 配置中心地址
  18. server-addr: @config.server-addr@
  19. # 配置对应的分组
  20. group: @config.group@
  21. # 配置文件后缀
  22. file-extension: yaml
  23. prefix: @prefix.name@
  24. # 支持多个共享 Data Id 的配置,优先级小于extension-configs,自定义 Data Id 配置 属性是个集合,内部由 Config POJO 组成。Config 3 个属性,分别是 dataId, group 以及 refresh
  25. #shared-configs[0]:
  26. #data-id: @prefix.name@-common.yaml # 配置文件名-Data Id
  27. #group: @config.group@ # 默认为DEFAULT_GROUP
  28. #refresh: false # 是否动态刷新,默认为false
  29. discovery:
  30. namespace: @config.namespace@
  31. server-addr: @config.server-addr@
  32. watch:
  33. enabled: false

discovery namespace

相同namespace server才能互相调用

config namespace & group

namespace需要配置namespace id。
Nacos(六):多环境下如何“管理”及“隔离”配置和服务

方案1通过Namespace来隔离不同的环境(dev\test),在具体的环境Namespace中通过Group来管理不同的项目 方案2(Namespace隔离租户 + group环境分组)

nacos - 图1

cluster-name:同机房调用

优先访问cluster-name相同的服务。
image.png

配置

nacos - 图3

动态刷新(比config好的多)

@RefreshScope
原理:长轮训
image.png
Nacos 配置加载刷新流程图源码分析_small_to_large的博客-CSDN博客

配置共享

不同profile配置共享

  • content-center.yaml 不加profile
  • 不带profile的配置文件必然被加载。

    应用间配置共享

    shared-configs & extension-configs
    image.png
    image.png

nacos - 图7
ext-config编号大的优先级高

【优先级】远程配置和本地配置优先级

image.png

  • 必须放在远程配置中
  • 默认情况下,远程配置优先级较高

加入如下配置(目的就是让nacos中的配置不覆盖本地配置

  1. spring:
  2. cloud:
  3. config:
  4. allow-override: true
  5. override-none: true
  6. override-system-properties: false

数据持久化(服务发现 和 配置服务器)

  • 数据库存储配置信息
    • image.png
  • 服务发现存储在磁盘上。

nacos注册中心

image.png

  • consumer拉推结合

服务端注册:

  • 注册放入队列中就返回,由异步线程处理队列中的注册信息。

image.png
image.png

对比zookeeper

  • zookeeper不适合频繁写,写都要通过master广播(惊群效应)
  • cp不适合注册中心,因为会产生不可用(A)。并且注册中心不要求一致性(C)。

nacos cmdb

同机房优先?

nacos集群搭建【ephemeral】

  • Nacos支持AP和CP模式切换
    • AP模式下只支持注册临时实例(默认)。 CP 模式支持持久化
    • cp:通过raft
    • ap:

如果注册nacos的client节点注册时ephemeral=true,那么nacos集群对这个client节点的效果就是ap的采用distro,而注册nacos的client节点注册时ephemeral=false,那么nacos集群对这个节点的效果就是cp的采用raft。根据client注册时的属性,ap,cp同时混合存在,只是对不同的client节点效果不同?

  1. discovery 和 config要同时配置。否则报错。