底层原理-----Nacos配置中心
创始人
2025-05-31 00:43:34

WHY
没有配置之前,修改一个东西要修改代码。管理起来很乱。效率低下。扩展难。Ip密码等存储不安全
背景
配置,应用程序启动和运行时,读取的一些信息,动态调整程序行为,比如需要从哪里连接数据库,缓存多长时间过期等。具有以下特点:
只读,程序不允许更改配置
伴随应用的整个生命 周期
加载方式多样化,程序硬编码,环境变量,启动参数,配置文件(当前最流行),数据库(通常作为配置中心存储介质)
程序硬编码,难以维护,每次更新必修重新打包,真实开发并不推荐。
环境变量,分布式服务器之间不可复用。
启动参数,可读性查,尤其在配置项太多的时候,更是难以阅读。
基于这样的缺陷,配置文件成为了管理配置的不二之选,并且可以用数据库作为存储介质,加以妥善维护。
无论采用什么方式,配置需要管理。
过去传统的单体应用里,一个应用程序具有自己的配置文件,但当单体引用拆分成各个微服务后,配置文件也被拆开,并且拆开后,各个微服务配置文件之间,还会存在冗余。
在这里插入图片描述

因此,需要一个专门的服务器来统一管理配置文件,使得配置文件和具体服务在组织上解耦,实现配置文件的扩展和复用。
在这里插入图片描述

Nacos 配置中心,正是提供了这样的一个解决方案
WHAT
动态配置服务可以让您以中心化、外部化和动态化的方式管理所有的环境应用配置和服务配置,可以动态通过修改配置文件中的值,从而影响服务应用结果或者服务的运行。
动态配置消除了配置变更时更新部署应用和服务的需要,让配置管理变得更高效和敏捷。
配置中心化管理让实现无状态服务变得更简单,让服务按需弹性扩展变得更容易。
配置中心是Nacos众多功能之一,为微服务模式的应用开发提供了配置统一化管理工具,是Nacos一个强大的卖点。本文将从诞生背景,类似方案对比,以及核心管理模型展开介绍,并在应用上,以spring-clound-alibaba为列介绍最核心的配置文件拉取。
相关方案
当前构建配置中心解决方案:
apollo,携程提供,功能最全面
spring cloud config,集成Netfix公司提出的配置中心技术,由于依赖git,所以性能很差
nacos,性能最好,功能略逊apollo,但针对大型应用开发仍然够用
功能对比:
在这里插入图片描述

性能对比:

在这里插入图片描述

Nacos配置管理模型
配置文件存放Nacos配置中心服务器,而配置管理模型,反映了各个应用服务拉取配置文件的方式。就是: Namaspace-> Group->DataId
DataId,标识一个配置文件,里面包含各个配置项的集合,可以用多种格式,比如yml, ymal, properties等。
group,就是配置文件的分类,分类采用的语意按实际情况而定,比如根据项目区分。
namespace,对group的分类,分类采用的语意按实际情况而定,通常采用隔离的语意,按照部署环境做划分。
一个通常的实践:
在这里插入图片描述

dataId,Group, Namespace均可以在nacos配置中心后台管理页面进行建立。
Nacos 典型应用
此处选择集成了nocas的相关实现方案的spring-clound-alibaba,其具有spring-boot开箱即用的优势,开发简单,规避实现nacos繁琐的技术细节,让开发者集中在nacos核心功能的应用开发上。
获取配置文件
各个服务的bootstrap.yml编写以下代码,用nacos的配置管理模型定位到配置文件,获的配置项,并在代码里用@Value注解获取配置项的值
在这里插入图片描述

其中,
server-addr: 必填
file-extension: 配置文件扩展名,必填
namespace: 非必填,默认是nacos配置中心public空间的id
group:非必填,默认是DEFAULT_GROUP
————————————————
版权声明:本文为CSDN博主「tuoxia7735」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/tuoxia7735/article/details/126263756
HOW
https://nacos.io/zh-cn/docs/quick-start-spring-cloud.html
通过 Nacos Server 和 spring-cloud-starter-alibaba-nacos-config 实现配置的动态变更。
1/ spring-cloud-starter-alibaba-nacos-config
2/ 在bootstap.yml配置nacos server地址
之所以需要配置 spring.application.name ,是因为它是构成 Nacos 配置管理 dataId字段的一部分
name: @artifactId@ 动态生成
saas-network-pc-test.yml
3、通过springcloud注解@RefreshScore实现配置自动更新
@RestController
@RequestMapping(“/config”)
@RefreshScope
public class ConfigController {
@Value(“${useLocalCache:false}”)
private boolean useLocalCache;
@RequestMapping(“/get”)
public boolean get() {
return useLocalCache;
}
}
WHERE
Yml properties
-pc-service-test.ymlDEFAULT_GROUP
1、application.yml
spring:
profiles:
active: local #local dev test prod决定取得是哪个环境的配置
fuxi-plus: #远程fuxi变量
app-id: 123
app-key: abc
logging:
level:
com.alibaba.nacos: warn #日志等级配置为warn
2、pc-service-.yml
#数据源
spring:
datasource:
type: com.zaxxer…#springBoot默认采用HikariDataSource数据源
driver-class-name: com.mysql.cj.jdbc.Driver #新驱动类
username:
password:
url: jdbc:mysql://?characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&allowMultiQueries=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=Asia/Shanghai
redis:
host:
port:
password:
sms:
login:
template-code: #登录短信code
redis-prefix: ‘adm:’
expire: 300
interval: 60
length: 6
aliyun: #服务器及镜像配置
access-key-id:
access-key-secret:
region-id: cn
sms-key-id:
sms-key-secret:
sms-key-region: cn-
oss:
endpoint: http://oss-cn.aliyuncs.com
bucket-name: -test
domain: https://-test.oss-cn…com
policy:
expire: 300
maxSize: 10
dir:
prefix: lego//images/
feign:
client:
config:
default:
connect-timeout: 100000 #连接超时
read-timeout: 100000 #读取超时
sys: http:/:80 #lego-merchant子服务
server:
task-url: http://:80 #子服务
brand-url: http://:80
report-url: http://:80
collect-url: http://:80
network-pc-url: http://:80 #自己服务
analysis-url: http://:31519
data: #远程数据地址调用
sscm-url: http://-test-.com
url: http://huawei-t.com
poi-url: http://:80/poi
city-url: http://:80/city
mall-url: http://:80/
model-url: http://:80/
scheduler-url: 123
brand-url: http://:80/
wm-url: http://:80/
shop-model-url: 23
#请求处理的超时时间 :8109
ribbon.ReadTimeout:
#请求连接的超时时间
ribbon.ConnectTimeout: 120000
upload: # 上传文件
file:
prefix: lego/dev/apk/
maxSize: 60
#mq topic tag
report:
config:
saasBrandTopic: -SAAS-
saasTopicTagRunReport: -BRAND
#报告钉钉消息密钥
brand:
config:
barndAuditTopic: -BRAND
barndAuditTag: -BRAND
dingTopic: TOPIC–
dingTag: DING–BRAND
brandReviewTopic: TOPIC–
brandReviewTag: TAG—AUDIT
#加密及屏蔽的环境
gateway.secret.key:
env.encrypt.profile: ,test
data-encode-service-addr: 😕/:80
report.clean.config:
fuxi-plus:
app-key: 123
app-id: 123
#mq服务器信息及消费标识
rocketmq:
accessKey:
secretKey:
nameSrvAddr:
consumerGroups:

  • groupId: GID–
    consumers:
  • topic: TOPIC—V2
    tag: TAG–
    beanName:
    #mq 生产者group tag
    rocketMqConfig
    group: GID–LOCATIO-
    topic:
    clearAllCachedAuthorizationInfo: -CLEARALLCACHE–INFO
    dingCallBackTopic: TOPIC–
    tag:
    dingCallBackTag: TAG-
    #钉钉
    ding:
    test:
    mchCode: 1111

corpid:
token:
aesKey:
mch:
ding:
encryptKey: +
dingAesKey:
dingToken:
3、bootstrap.yml
server:
port: #启动端口
spring:
application:

动态名称,当前项目名 如-netservice

name: @artifactId@
cloud:
nacos:
discovery:
server-addr: #地址
register-enabled: true #开启注册中心
namespace: #命名空间
metadata:

客户端向 nacos 服务器上报心跳包的时间间隔

preserved.heart.beat.interval: 5000

客户端不发送心跳后,从健康到不健康的时间

preserved.heart.beat.timeout: 5000

注册源

preserved.register.source: “”

不发送心跳后,被 nacos下掉该实例的时间

preserved.ip.delete.timeout: 5000
config:

服务地址

server-addr: ${spring.cloud.nacos.discovery.server-addr}

后缀名

file-extension: yml
#命名空间
namespace:
4、bootstrap-test.yml
部署Nacos的集群,其中NGINX的作用是分发请求到各个Nacos服务器,做到负载均衡。k8s使用TCP协议
nacos集群搭建
https://blog.csdn.net/qq_44027353/article/details/125828993
日志
nacos日志级别为warn
aop实现日志切面

Plain Text

@Slf4j
@Aspect
@Component
public class SaasSysLogAspect {
private static final int INPUT_PARAMS_MAX_LENGTH = 500;

@Pointcut("execution(public * com..*.controller.*.*(..))")
public void pointCut() {
}/*** 前置织入** @param joinPoint*/
@Before(value = "pointCut()")
public void before(JoinPoint joinPoint) {Object[] args = joinPoint.getArgs();String logContent = this.getRequestContent(args);if (StringUtils.isNotBlank(logContent)) {log.info(logContent);}
}

相关内容

热门资讯

联动云租一天多少钱(联动云租一... 本篇文章极速百科给大家谈谈联动云租一天多少钱,以及联动云租一天怎么划算对应的知识点,希望对各位有所帮...
飞机托运收费(飞机托运收费多少... 本篇文章极速百科给大家谈谈飞机托运收费,以及飞机托运收费多少钱一公斤对应的知识点,希望对各位有所帮助...
挡泥板(挡泥板是什么意思) 挡... 本篇文章极速百科给大家谈谈挡泥板,以及挡泥板是什么意思对应的知识点,希望对各位有所帮助,不要忘了收藏...
滴滴专车官网(滴滴专车司机网站... 今天给各位分享滴滴专车官网的知识,其中也会对滴滴专车司机网站进行解释,如果能碰巧解决你现在面临的问题...
路特斯跑车(路特斯跑车多少钱一... 今天给各位分享路特斯跑车的知识,其中也会对路特斯跑车多少钱一辆2023款进行解释,如果能碰巧解决你现...
丰田致享新车报价(丰田致享20... 今天给各位分享丰田致享新车报价的知识,其中也会对丰田致享2021款报价进行解释,如果能碰巧解决你现在...
聊城到潍坊的汽车(聊城到潍坊的... 本篇文章极速百科给大家谈谈聊城到潍坊的汽车,以及聊城到潍坊的汽车票价多少对应的知识点,希望对各位有所...
没有身份证怎么买票(没有身份证... 今天给各位分享没有身份证怎么买票的知识,其中也会对没有身份证怎么买票进行解释,如果能碰巧解决你现在面...
2018科目三灯光详细表(20... 本篇文章极速百科给大家谈谈2018科目三灯光详细表,以及2018科目三最新模拟灯光考试20组不重复完...
五菱之光v(五菱之光v和五菱之... 今天给各位分享五菱之光v的知识,其中也会对五菱之光v和五菱之光有什么区别进行解释,如果能碰巧解决你现...
摩托车怠速(摩托车怠速多少转正... 今天给各位分享摩托车怠速的知识,其中也会对摩托车怠速多少转正常进行解释,如果能碰巧解决你现在面临的问...
武汉到西安(武汉到西安火车时刻... 今天给各位分享武汉到西安的知识,其中也会对武汉到西安火车时刻表查询进行解释,如果能碰巧解决你现在面临...
五菱之光v图片(五菱之光v新车... 今天给各位分享五菱之光v图片的知识,其中也会对五菱之光v新车报价进行解释,如果能碰巧解决你现在面临的...
郑州到重庆火车(郑州到重庆火车... 本篇文章极速百科给大家谈谈郑州到重庆火车,以及郑州到重庆火车多少钱一张对应的知识点,希望对各位有所帮...
学生证优惠区间(学生证优惠区间... 今天给各位分享学生证优惠区间的知识,其中也会对学生证优惠区间没有盖章进行解释,如果能碰巧解决你现在面...
武汉到合肥(武汉到合肥多少公里... 今天给各位分享武汉到合肥的知识,其中也会对武汉到合肥多少公里进行解释,如果能碰巧解决你现在面临的问题...
软座座位分布图(k8412软座... 本篇文章极速百科给大家谈谈软座座位分布图,以及k8412软座座位分布图对应的知识点,希望对各位有所帮...
长安逸动dt(长安逸动dt空调... 本篇文章极速百科给大家谈谈长安逸动dt,以及长安逸动dt空调滤芯拆卸教程对应的知识点,希望对各位有所...
西安到达州(西安到达州火车时刻... 本篇文章极速百科给大家谈谈西安到达州,以及西安到达州火车时刻表查询对应的知识点,希望对各位有所帮助,...
野马蝰蛇(野马蝰蛇gt500图... 本篇文章极速百科给大家谈谈野马蝰蛇,以及野马蝰蛇gt500图片对应的知识点,希望对各位有所帮助,不要...
高速obu是什么意思(收费站o... 今天给各位分享高速obu是什么意思的知识,其中也会对收费站obu是什么意思进行解释,如果能碰巧解决你...
西安北站在哪(西安北站在哪进站... 今天给各位分享西安北站在哪的知识,其中也会对西安北站在哪进站进行解释,如果能碰巧解决你现在面临的问题...
汽车搭电一次多少钱(汽车搭电大... 今天给各位分享汽车搭电一次多少钱的知识,其中也会对汽车搭电大概多少钱进行解释,如果能碰巧解决你现在面...
宝马跑车敞篷价格(宝马跑车敞篷... 本篇文章极速百科给大家谈谈宝马跑车敞篷价格,以及宝马跑车敞篷价格图片对应的知识点,希望对各位有所帮助...
cbr650r(cbr650r... 本篇文章极速百科给大家谈谈cbr650r,以及cbr650r座高对应的知识点,希望对各位有所帮助,不...
在哪买机票最便宜(在哪买机票最... 今天给各位分享在哪买机票最便宜的知识,其中也会对在哪买机票最便宜票进行解释,如果能碰巧解决你现在面临...
etc办理点(etc办理点节假... 今天给各位分享etc办理点的知识,其中也会对etc办理点节假日休息吗进行解释,如果能碰巧解决你现在面...
宝马1181报价及图片(宝马1... 今天给各位分享宝马1181报价及图片的知识,其中也会对宝马1181报价及图片及价格进行解释,如果能碰...
限行处罚扣分吗(限行被扣分吗)... 本篇文章极速百科给大家谈谈限行处罚扣分吗,以及限行被扣分吗对应的知识点,希望对各位有所帮助,不要忘了...
车车(车车车念什么) 车车 车... 今天给各位分享车车的知识,其中也会对车车车念什么进行解释,如果能碰巧解决你现在面临的问题,别忘了关注...