Nacos配置(discovery&config)
Nacos配置管理的配置写在bootstrap.yml中。
spring:
profiles:
# 当前激活环境
active: @profile.name@
cloud:
#配置Bus id(远程推送事件)
bus:
id: ${spring.application.name}:${server.port}
nacos:
config:
# Nacos 认证用户
username: nacos
# Nacos 认证密码
password: nacos
# 命名空间 常用场景之一是不同环境的配置的区分隔离,例如开发测试环境和生产环境的资源(如配置、服务)隔离等
namespace: @config.namespace@
# 配置中心地址
server-addr: @config.server-addr@
# 配置对应的分组
group: @config.group@
# 配置文件后缀
file-extension: yaml
prefix: @prefix.name@
# 支持多个共享 Data Id 的配置,优先级小于extension-configs,自定义 Data Id 配置 属性是个集合,内部由 Config POJO 组成。Config 有 3 个属性,分别是 dataId, group 以及 refresh
#shared-configs[0]:
#data-id: @prefix.name@-common.yaml # 配置文件名-Data Id
#group: @config.group@ # 默认为DEFAULT_GROUP
#refresh: false # 是否动态刷新,默认为false
discovery:
namespace: @config.namespace@
server-addr: @config.server-addr@
watch:
enabled: false
discovery namespace
config namespace & group
namespace需要配置namespace id。
Nacos(六):多环境下如何“管理”及“隔离”配置和服务
方案1通过Namespace来隔离不同的环境(dev\test),在具体的环境Namespace中通过Group来管理不同的项目 方案2(Namespace隔离租户 + group环境分组)
cluster-name:同机房调用
优先访问cluster-name相同的服务。
配置
动态刷新(比config好的多)
@RefreshScope
原理:长轮训
Nacos 配置加载刷新流程图源码分析_small_to_large的博客-CSDN博客
配置共享
不同profile配置共享
ext-config编号大的优先级高
【优先级】远程配置和本地配置优先级
- 必须放在远程配置中
- 默认情况下,远程配置优先级较高
加入如下配置(目的就是让nacos中的配置不覆盖本地配置)
spring:
cloud:
config:
allow-override: true
override-none: true
override-system-properties: false
数据持久化(服务发现 和 配置服务器)
- 数据库存储配置信息
- 服务发现存储在磁盘上。
nacos注册中心
- consumer拉推结合
服务端注册:
- 注册放入队列中就返回,由异步线程处理队列中的注册信息。
对比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节点效果不同?
坑
- discovery 和 config要同时配置。否则报错。