Nacos配置中心总结

news2025/1/5 8:11:48

Nacos配置中心总结

Nacos配置文件的加载顺序和优先级

加载顺序

nacos作为配置中心时,需要在bootstrap.yml文件中添加nacos config相关的配置,这样系统启动时就能先去拉取nacos server上的配置了。拉取过来后会和本地配置文件进行合并。

bootstrap.yml文件

spring:
  cloud:
    nacos:
      config:
        server-addr: 127.0.0.1:8848
        file-extension: yaml
        namespace: c4829fb4-fbd9-475e-a39d-071f26064e7b
        group: DEFAULT_GROUP
        username: nacos
        password: nacos
  profiles:
    active: dev
  application:
    name: consumerservice

配置文件读取规则

  1. 根据namespace、group、data-id三个配置去找文件
  2. 会从nacos中读取多个配置文件:
    1. [spring.application.name]-[spring.profiles.active].yaml,例如:userservice-dev.yaml
    2. [spring.application.name].yaml,例如:userservice.yaml
  3. 不管profile怎么变化,一定会加载[spring.application.name].yaml文件,所以多个环境共享的配置可以写入这个文件中
  4. 上面的示例没有写data-id,那么最后找到的是指定namespace和指定group下的consumerservice-dev.yaml配置文件,如果指定了data-id那么就是读取指定配置文件了,不过在这种场景下一般不会指定data-id,当我们使用nacos存储sentinel配置文件的时候会指定data-id。

配置文件的优先级
在这里插入图片描述

Nacos整合Sentinel

引入依赖,特别是引入sentinel-datasource-nacos依赖

        <!--nacos服务发现-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>

        <!--Nacos配置管理依赖-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
        </dependency>
        <dependency>
        <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
        </dependency>

        <!--以nacos作为sentinel数据源的依赖-->
        <dependency>
            <groupId>com.alibaba.csp</groupId>
            <artifactId>sentinel-datasource-nacos</artifactId>
        </dependency>

指定sentinel的规则配置文件

spring:
  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848
        cluster-name: HZ
        namespace: c4829fb4-fbd9-475e-a39d-071f26064e7b  #命名空间id
        group: testgroup1
        username: nacos
        password: nacos
    loadbalancer:
      nacos:
        enabled: true #开启负载均衡
    openfeign:
      compression:
        request:
          enabled: true #开启请求压缩
          min-request-size: 2048  #设置触发压缩的大小下限,此处也是默认值
          mime-types: text/html,application/xml,application/json #设置压缩的数据类型,此处也是默认值
        response:
          enabled: true #开启响应压缩
      okhttp:
        enabled: true
    sentinel:
      transport:
        dashboard: localhost:8080
      web-context-unify: false   #是否统一web上下文,默认为false;如果配置为 true,则对所有请求应用统一的流控和熔断规则;如果配置为 false,则对每个请求的上下文信息进行独立处理,并针对每个 URL 或资源配置流控和熔断规则
      eager: true       # 是否在启动时就初始化所有规则
      datasource:      #配置sentinel规则持久化到nacos
        flux-control: #流控管理,名称可以自定义
          nacos:
            data-id: consumerservice-sentinel-dev.json #sentinel规则配置文件的dataId
            namespace: c4829fb4-fbd9-475e-a39d-071f26064e7b
            group-id: DEFAULT_GROUP
            server-addr: 127.0.0.1:8848  #nacos地址
            rule-type: flow #指定配置文件里的是哪种规则
        degrade-control:  #降级规则
          nacos:
            data-id:  
            namespace: c4829fb4-fbd9-475e-a39d-071f26064e7b
            group-id: DEFAULT_GROUP
            server-addr: 127.0.0.1:8848
            rule-type: degrade
        param-flow-rule:  #热点规则
          nacos:
            data-id:
            namespace: c4829fb4-fbd9-475e-a39d-071f26064e7b
            group-id: DEFAULT_GROUP
            server-addr: 127.0.0.1:8848
            rule-type: param-flow

流控规则配置

[
  {
    "resource": "/test", // 资源名
    "limitApp": "default", // // 针对来源,若为 default 则不区分调用来源
    "grade": 1, // 限流阈值类型(1:QPS;  0:并发线程数)
    "count": 1, // 阈值
    "clusterMode": false, // 是否是集群模式
    "controlBehavior": 0, // 流控效果 (0:快速失败;  1:Warm Up(预热模式);  2:排队等待)
    "strategy": 0,  // 流控模式(0:直接; 1:关联; 2:链路)
    "warmUpPeriodSec": 10, // 预热时间(秒,预热模式需要此参数)
    "maxQueueingTimeMs": 500, // 超时时间(排队等待模式需要此参数)
    "refResource": "rrr" // 关联资源、入口资源(关联、链路模式)
  }.
]

在nacos中创建对应的配置文件,在yaml文件中使用data-id指定配置文件
在这里插入图片描述

熔断降级配置

[
    {
        "resource": "/degrade",
        "grade": 0, // 熔断策略,支持慢调用比例(0),异常比例(1),异常数(2)策略
        "count": 1000, // 慢调用比例模式下为慢调用临界 RT(超出该值计为慢调用,单位ms);异常比例/异常数模式下为对应的阈值
        "slowRatioThreshold": 0.1,// 慢调用比例阈值,仅慢调用比例模式有效(1.8.0 引入)
        "minRequestAmount":  10, //熔断触发的最小请求数,请求数小于该值时即使异常比率超出阈值也不会熔断
        "timeWindow": 10, // 熔断时长,单位为 s
        "statIntervalMs": 1000 // 统计时长(单位为 ms),如 60*1000 代表分钟级
    }
]	

热点参数配置

[
  {
    "resource": "/test1",
    "grade": 1, // 限流模式(QPS 模式,不可更改)
    "paramIdx": 0, // 参数索引
    "count": 13, // 单机阈值
    "durationInSec": 6, // 统计窗口时长
    "clusterMode": false, // 是否集群 默认false
    "controlBehavior": 0, // 流控效果(支持快速失败和匀速排队模式)
    "limitApp": "default",
    // 高级选项
    "paramFlowItemList": [{
        "classType": "int", // 参数类型
        "count": 222, // 限流阈值
        "object": "2" // 参数值
      }]
  }
]

系统参数配置

[
  {
    "avgRt": 1, // RT
    "highestCpuUsage": -1, // CPU 使用率
    "highestSystemLoad": -1, // LOAD
    "maxThread": -1, // 线程数
    "qps": -1, // 入口 QPS
    "count": 55, // 阈值,在CPU使用率中是百分比
  }
]

授权规则配置

[
  {
    "resource": "sentinel_spring_web_context",
    "limitApp": "/test",
    "strategy": 0 // 授权类型(0代表白名单;1代表黑名单。)
  }
]

参考

  1. Sentinel官网
  2. Sentinel结合Nacos实现配置持久化(全面)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2269830.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

赛博周刊·2024年度工具精选(图片资源类)

1、EmojiSpark emoji表情包查找工具。 2、fluentui-emoji 微软开源的Fluent Emoji表情包。 3、开源Emoji库 一个开源的emoji库&#xff0c;目前拥有4000个emoji表情。 4、中国表情包大合集博物馆 一个专门收集中国表情包的项目&#xff0c;已收录5712张表情包&#xff0c;并…

Goland:专为Go语言设计的高效IDE

本文还有配套的精品资源&#xff0c;点击获取 简介&#xff1a;Goland是JetBrains公司开发的集成开发环境&#xff08;IDE&#xff09;&#xff0c;专为Go语言设计&#xff0c;提供了高效的代码编辑、强大的调试工具和丰富的项目管理功能。其智能代码补全、强大的调试与测试支…

小程序发版后,用户使用时,强制更新为最新版本

为什么要强制更新为最新版本&#xff1f; 在小程序的开发和运营过程中&#xff0c;强制用户更新到最新版本是一项重要的策略&#xff0c;能够有效提升用户体验并保障系统的稳定性与安全性。以下是一些主要原因&#xff1a; 1. 功能兼容 新功能或服务通常需要最新版本的支持&…

EasyExcel(环境搭建以及常用写入操作)

文章目录 EasyExcel环境搭建1.创建模块 easyexcel-demo2.引入依赖3.启动类创建 EasyExcel写1.最简单的写入1.模板2.方法3.结果 Write01.xlsx 2.指定字段不写入Excel1.模板2.方法3.结果 Write02.xlsx 3.指定字段写入excel1.模板2.方法3.结果 Write03.xlsx 4.按照index顺序写入ex…

典型常见的基于知识蒸馏的目标检测方法总结三

来源&#xff1a;Google学术2023-2024的顶会顶刊论文 NeurIPS 2022&#xff1a;Towards Efficient 3D Object Detection with Knowledge Distillation 为3D目标检测提出了一种知识蒸馏的Benchmark范式&#xff0c;包含feature的KD&#xff0c;Logit的cls和reg的KD&#xff0c…

通过Dockerfile来实现项目可以指定读取不同环境的yml包

通过Dockerfile来实现项目可以指定读取不同环境的yml包 1. 挂载目录2. DockerFile3. 运行脚本deploy.sh4. 运行查看日志进入容器 5. 接口测试修改application-dev.yml 6. 优化Dockerfile7. 部分参数解释8. 优化不同环境下的日志也不同调整 Dockerfile修改部署脚本 deploy.sh重新…

开源的go语言统一配置中心 - nacos + nacos go sdk

配置文件实时更新机制的场景需求 配置文件热更新主要应用于需要在不停机的情况下动态调整系统行为的场景&#xff0c;例如修改服务参数、切换数据源等。其原理在于通过一个中心化的管理平台来存储和分发最新的配置信息。当配置文件发生变化时&#xff0c;该平台会主动或被动地…

对45家“AI+安全”产品/方案的分析

一. 关键洞察 “AI+安全”创新非常活跃,一片百家争鸣之势,赛道选择上,以事件分诊Incident Triage、 安全辅助Security Copilots、自动化Automation三者为主为主,这充分反映了当前安全运营的主要需求,在产品理念选择上以 AI 和 自动化为主,这确实又切合上了在关键…

GESP202412 三级【数字替换】题解(AC)

》》》点我查看「视频」详解》》》 [GESP202412 三级] 数字替换 题目描述 小杨有一个包含 n n n 个数字的序列 A A A&#xff0c;即 A [ a 1 , a 2 , … , a n ] A[a_1,a_2,\ldots,a_n] A[a1​,a2​,…,an​]&#xff0c;他想将其中大于 k k k 的数字都替换为序列的最大…

springboot集成websokcet+H5开发聊天原型(二)

本文没有写完~~~~ 聊天相关数据结构&#xff1a; 我们初步设计了如下几个数据结构。 //存放 sessionId 与 userId 的map private Map<String,String> sessionId_userId new HashMap<>(); // 用于存储用户与群组的关联关系&#xff0c;键为用户ID&#xff0c;值…

List接口(源码阅读)

文章目录 1.List接口常用方法1.代码2.结果 2.ArrayList底层机制1.结论2.ArrayList底层源码1.代码2.debug添加第一个元素1.进入2.elementData数组存储ArrayList的数据3.初始化为空数组4.首先确保使用size1来计算最小容量5.如果elementData为空&#xff0c;最小容量就是106.modCo…

Python爬虫(一)- Requests 安装与基本使用教程

文章目录 前言一、简介及安装1. 简介2. 安装 Requests2.1 安装2.2 检查安装是否成功 二、使用 Requests 发送 HTTP 请求1. 发送 GET 请求2. 发送 POST 请求3. 发送 PUT 请求4. 发送 DELETE 请求5. 发送 HEAD 请求6. 发送 OPTIONS 请求 三、传递参数1. GET 请求传递 URL 参数1.1…

风力涡轮机缺陷检测数据集,86.6%准确识别率,11921张图片,支持yolo,PASICAL VOC XML,COCO JSON格式的标注

风力涡轮机缺陷检测数据集&#xff0c;86.6&#xff05;准确识别率&#xff0c;11921张图片&#xff0c;支持yolo&#xff0c;PASICAL VOC XML&#xff0c;COCO JSON格式的标注 数据集下载 yolov11&#xff1a; https://download.csdn.net/download/pbymw8iwm/90206849 yolov…

简易屏幕共享工具-基于WebSocket

前面写了两个简单的屏幕共享工具&#xff0c;不过那只是为了验证通过截屏的方式是否可行&#xff0c;因为通常手动截屏的频率很低&#xff0c;而对于视频来说它的帧率要求就很高了&#xff0c;至少要一秒30帧率左右。所以&#xff0c;经过实际的截屏工具验证&#xff0c;我了解…

python-leetcode-多数元素

169. 多数元素 - 力扣&#xff08;LeetCode&#xff09; class Solution:def majorityElement(self, nums: List[int]) -> int:candidate Nonecount 0for num in nums:if count 0: # 更新候选元素candidate numcount (1 if num candidate else -1)return candidate

js按日期按数量进行倒序排序,然后再新增一个字段,给这个字段赋值 10 到1

效果如下图&#xff1a; 实现思路&#xff1a; 汇总数据&#xff1a;使用 reduce 方法遍历原始数据数组&#xff0c;将相同日期的数据进行合并&#xff0c;并计算每个日期的总和。创建日期映射&#xff1a;创建一个映射 dateMap&#xff0c;存储每个日期的对象列表。排序并添加…

MM-2024 | 智能体遇山开路,遇水架桥! ObVLN:突破障碍,受阻环境中的视觉语言导航

作者&#xff1a;Haodong Hong, Sen Wang, Zi Huang 单位&#xff1a;昆士兰大学 论文链接&#xff1a;Navigating Beyond Instructions: Vision-and-Language Navigation in Obstructed Environments (https://dl.acm.org/doi/pdf/10.1145/3664647.3681640) 代码链接&#…

1Panel自建RustDesk服务器方案实现Windows远程macOS

文章目录 缘起RustDesk 基本信息实现原理中继服务器的配置建议 中继服务器自建指南准备服务器安装1Panel安装和配置 RustDesk 中继服务防火墙配置和安全组配置查看key下载&安装&配置客户端设置永久密码测试连接 macOS安装客户端提示finder写入失败hbbs和hbbr说明**hbbs…

Tube Qualify弯管测量系统在汽车管路三维检测中的应用

从使用量上来说&#xff0c;汽车行业是使用弯管零件数量最大的单一行业。在汽车的燃油&#xff0c;空调&#xff0c;排气&#xff0c;转向&#xff0c;制动等系统中都少不了管路。汽车管件形状复杂&#xff0c;且由于安装空间限制&#xff0c;汽车管件拥有不同弯曲半径&#xf…

Excel文件恢复教程:快速找回丢失数据!

Excel文件恢复位置在哪里&#xff1f; Excel是微软开发的电子表格软件&#xff0c;它为处理数据和组织工作提供了便捷。虽然数据丢失的问题在数字时代已经司空见惯&#xff0c;但对于某些用户来说&#xff0c;恢复未保存/删除/丢失的Excel文件可能会很困难&#xff0c;更不用说…