六、Spring Cloud Alibaba-nacos配置中心

news2024/11/30 10:53:52

一、Nacos配置中心

前面说了三、Spring Cloud Alibaba组件nacos,主要介绍的是服务发现。该篇主要介绍配置中心的功能。

官方地址:
https://github.com/alibaba/spring-cloud-alibaba/wiki/Nacos-config。
Nacos 提供用于存储配置和其他元数据的 key/value 存储,为分布式系统中的外部化配置提供服务器端和客户端支持。使用 Spring Cloud Alibaba Nacos Config,您可以在 Nacos Server 集中管理你 Spring Cloud 应用的外部属性配置。

提升特性:

  • 维护性:建立统一的配置文件,更改配置文件时所有使用该配置的微服务都能变更。
  • 时效性:配置变更,能够及时通知相关服务。
  • 安全性:不同的环境注册不同的命名空间,角色可以赋予不同的命名空间访问权限。

二、配置中心界面和相关功能说明

在这里插入图片描述
1、最佳划分归类

  • Namespace-命名空间:代表不同环境,如开发、测试、生产环境。根据环境分类
  • Group:代表某项目,如XX医疗项目、XX电商项目。根据项目分类。
  • Datald:每个项目下往往有干个工程(微服务),每个配置集(Datald)是一个工程(微服务)的主配置文件。

在这里插入图片描述

2、配置集 ID-Data ID

Nacos 中的某个配置集的 ID。配置集 ID 是组织划分配置的维度之一。Data ID通常用于组织划分系统的配置集。一个系统或者应用可以包含多个配置集,每个配置集都可以被一个有意义的名称标识。Data ID 通常采用类Java 包(如 com.taobao.tc.refund.log.level)的命名规则保证全局唯一性。此命名规则非强制。

常用格式:服务名-环境.文件格式
比如:application-dev.yml

注意dataId是以 properties(默认的文件扩展名方式)为扩展名,可以不加后缀。如果修改为其他格式,后缀必须跟着变。

在这里插入图片描述

3、配置分组

Nacos 中的一组配置集,是组织配置的维度之一。通过一个有意义的字符串(如 Buy 或 Trade )对配置集进行分组,从而区分 Data ID 相同的配置集。当您在 Nacos 上创建一个配置时,如果未填写配置分组的名称,则配置分组的名称默认采用 DEFAULT_GROUP。配置分组的常见场景:不同的应用或组件使用了相同的配置类型,如 database_url 配置和 MQ_topic 配置。

4、克隆配置
可以克隆到其他命名空间和分组中。
在这里插入图片描述
5、历史版本回滚
如果配错了,可以直接回滚。
在这里插入图片描述

6、权限管理

启动权限需在Nacos配置文件(nacos/conf/application.properties)中修改nacos.core.auth.enabled为true,默认为false。

### If turn on auth system:
nacos.core.auth.enabled=true

在这里插入图片描述

三、结合项目和nacos界面配置

快速开始官网地址:
https://github.com/alibaba/spring-cloud-alibaba/wiki/Nacos-config

1、项目中添加依赖

<!--nacos config 配置中心-->
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>

2、项目中配置文件配置。
项目中必须使用 bootstrap.properties 配置文件来配置Nacos Server 地址。 也支持bootstrap.yml文件。

bootstrap.yml:

server:
  port: 8815

#应用名称,nacos会将该名称当做服务名称
spring:
  application:
    #会自动根据服务名拉取dataId对应的配置文件
    #如果dataId和服务名不一致,需要手动指定dataId
    name: order-service
  cloud:
    nacos:
      username: nacos
      password: nacos
      config:
        # 配置中心地址
        server-addr: 127.0.0.1:8848
        #命名空间,可以根据空间进行一个隔离
        namespace: public
      discovery:
        # 服务注册地址
        server-addr: 127.0.0.1:8848

3、测试

@SpringBootApplication
public class OrderApplication {
    public static void main(String[] args) throws Exception{
        ConfigurableApplicationContext applicationContext = SpringApplication.run(OrderApplication.class, args);
        while(true) {
            //当动态配置刷新时,会更新到 Enviroment中,因此这里每隔一秒中从Enviroment中获取配置
            String userName = applicationContext.getEnvironment().getProperty("user.name");
            String userAge = applicationContext.getEnvironment().getProperty("user.age");
            System.err.println("user name :" + userName + "; age: " + userAge);
            TimeUnit.SECONDS.sleep(1);
        }
    }

}

四、其他扩展配置

(1)spring.cloud.nacos.config.refresh.enabled=false 来关闭动态刷新。就会感知不到配置的变化。
(2)可支持profile粒度的配置。常用格式配置:服务名-环境.yml。

dataId命名为
s p r i n g . a p p l i c a t i o n . n a m e − {spring.application.name}- spring.application.name{profile}.${file-extension:properties}
的基础配置。只有默认的配置文件才能这么写,即服务名和dataId一致。

例如:

spring.application.name: order-service
nacos配置则为:order-service-dev.yml

(3)共享配置文件,常用 shared-configs配置。
比如创建所有服务所共享的配置文件:application-dev.yml

# 共享配置
shared-configs:
	#data ID 
  - application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}

具体参考官网:
https://github.com/alibaba/spring-cloud-alibaba/wiki/Nacos-config
在这里插入图片描述
在这里插入图片描述

配置的优先级:
自己的配置文件(服务名+ Profile )自动生成相关的 Data Id 配置)> extension-configs >shared-configs

五、最终常用的配置文件

nacos界面的配置文件application-dev.yml为共享配置,order-service-dev.yml为order-service服务的配置。

server:
  port: 8815

#应用名称,nacos会将该名称当做服务名称
spring:
  application:
    #会自动根据服务名拉取dataId对应的配置文件
    #如果dataId和服务名不一致,需要手动指定dataId(extension-configs或shared-configs指定)
    name: order-service
  profiles:
    # 环境配置
    active: dev
  cloud:
    nacos:
      username: nacos
      password: nacos
      #配置中心
      config:
        server-addr: 127.0.0.1:8848
        #命名空间,可以根据空间进行一个隔离
        namespace: public
        # 配置文件格式。nacos客户端默认properties格式的文件,
        #如果界面修改为其他格式就不能读取,则必须进行file-extension配置
        file-extension: yml
        # 共享配置
        shared-configs:
          - application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}
      #服务注册
      discovery:
        server-addr: 127.0.0.1:8848
        #设置为永久实例,实例挂了还会存在。默认true为临时实例
        ephemeral: false
        #默认为 DEFAULT_GROUP,更细的相同特征的服务分组管理
        group: DEFAULT_GROUP

六、刷新nacos中注入的value值修改后动态读取

使用@Value注解读取配置文件信息时,如需动态读取需加@RefreshScope注解。
测试:

重启后,修改nacos中order-service-dev.yml的user.name值,然后请求接口测试。
接口:http://localhost:8815/config/show。

@RestController
@RequestMapping("/config")
@RefreshScope
public class ConfigController {

    @Value("${user.name}")
    public String name;

    @RequestMapping("/show")
    public String show(){
        return name;
    }

}

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

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

相关文章

tomcat集群下的session共享和负载均衡(memcache实现)

环境 操作系统&#xff1a;windows tomcat1&#xff1a;Apache Tomcat/7.0.52&#xff08;8085&#xff09; tomcat2&#xff1a;Apache Tomcat/7.0.52&#xff08;8086&#xff09; jdk&#xff1a;1.8.0_251 nginx&#xff1a;nginx-1.20.1&#xff08;8070&#xff09; memc…

美颜SDK的算法分析:探究其背后的机器学习模型

美颜SDK作为常见的美颜工具&#xff0c;其使用的算法也备受关注。本文将从机器学习的角度&#xff0c;深入分析美颜SDK的算法模型与实现原理。 一、算法模型 美颜SDK主要采用的算法模型是卷积神经网络&#xff08;Convolutional Neural Network&#xff0c;CNN&#xff09;。…

网卡名称排序

udev是一种动态设备管理系统&#xff0c;用于在Linux系统中自动管理设备的插拔、识别、配置等操作。它的主要作用是监视系统中的设备事件&#xff0c;并根据设备事件动态地创建、删除或修改系统中的设备节点。 udev的工作原理是通过读取系统中的硬件信息、驱动程序和设备特征信…

AI天后,在线飙歌,人工智能AI孙燕姿模型应用实践,复刻《遥远的歌》,原唱晴子(Python3.10)

忽如一夜春风来&#xff0c;亚洲天后孙燕姿独特而柔美的音色再度响彻华语乐坛&#xff0c;只不过这一次&#xff0c;不是因为她出了新专辑&#xff0c;而是人工智能AI技术对于孙燕姿音色的完美复刻&#xff0c;以大江灌浪之势对华语歌坛诸多经典作品进行了翻唱&#xff0c;还原…

李沐论文精度系列之九:InstructGPT

文章目录 一、背景1.1 时间线1.2 ChatGPT功能展示1.3 指示学习&#xff08;Instruct Learning&#xff09;和提示&#xff08;Prompt Learning&#xff09;学习1.4 人工反馈的强化学习&#xff08;RLHF&#xff09; 二、摘要三、导言3.1 算法3.2 结论 四、方法和实验细节4.1 数…

【数据结构与算法】树和二叉树

1 树 1.1 术语 关系术语 孩子结点 —— 子树的根 父结点 兄弟结点 —— 同一个结点的孩子结点互为兄弟 祖先结点 后代结点 层次类术语 根的层次为1 其余结点的层次为其父结点层次加1 高度/深度 —— 整个树中结点的最大层次 度 —— 结点的孩子数目称为结点的度 叶子&#xf…

Smartbi携手广州轻工集团打造集团价值创造型总部

广州轻工工贸集团有限公司&#xff08;简称“广州轻工集团”&#xff09;是广州市第一家工贸合一的大型企业集团公司&#xff0c;最早起源于1950年9月成立的广州市合作事业管理局&#xff0c;逐渐演化形成广州市轻工业局。1995年10月&#xff0c;广州市轻工业局成建制改建为经济…

spring-transaction源码分析(3)Transactional事务失效原因

问题概述 在Transactional方法中使用this方式调用另一个Transactional方法时&#xff0c;拦截器无法拦截到被调用方法&#xff0c;严重时会使事务失效。 类似以下代码&#xff1a; Transactional public void insertBlogList(List<Blog> blogList) {for (Blog blog : …

【人工智能】在VScode中使用AI插件Bito,功能与ChatGPT类似

文章目录 前言一、到官网下载VScode软件二、VScode软件安装步骤三、Bito插件下载与VScode软件中的使用四、注册Bito 前言 之前在VScode中使用ChatGPT中文版&#xff0c;后来要注册与收费&#xff0c;可采用一些ChatGPT中文版的替代插件。 后发现BitoAI插件功能同样强大&#…

港联证券|断臂、收缩、变阵 “中植系”何去何从?

经历灵魂人物猝然离世的巨震&#xff0c;国内最老牌资本系之一的“中植系”&#xff0c;尚未显露出穿越周期的企稳之象&#xff0c;似仍在风雨飘摇。 投资端&#xff0c;随着监管持续升级与注册制改革全面推进&#xff0c;“中植系”惯用“PE上市公司”以低买高卖的资本套利模式…

流水线三维可视化运维,装配自动化提质增效 | 设备产线管理合集

为大家带来图扑智慧生产线/设备流水线合集。依托图扑对设备加工、物流输送、车辆装配等多个车间流水线进行 3D 可视化展示&#xff0c;通过数字孪生技术推动行业数字化转型升级。 智慧仓储产线 智慧仓储产线通过对仓储现场的数字化建模&#xff0c;利用先进的物联网、大数据、…

外贸网站Magento存在漏洞导致网站被攻击入侵的防护办法

Magento是最受欢迎的外贸电商框架之一&#xff0c;很多企业已经在其基础上进行了二次开发。然而&#xff0c;对于使用2.x版本的老系统来说&#xff0c;安全问题也成为了一大难题。有些客户在找我们SINESAFE做网站安全服务之前&#xff0c;客户也找过建站的公司去清除后门&#…

学习CSS3实现夜空UFO特效,带着心上人去太空旅行

记得那是在一个夜晚&#xff0c;我下班比较晚&#xff0c;行走在空荡的街道&#xff0c;不由想起了何润东“直到整条街上剩我和路灯”的歌声&#xff0c;就这么往前走着。我走哇走&#xff0c;走哇走&#xff0c;突然&#xff0c;一道光划过&#xff0c;你猜我看见了什么&#…

GNN图神经网络

文章目录 GNN图神经网络的元素消息传递方式 GCN消息传递方式 GAT消息传递机制 GNN 图神经网络的元素 节点&#xff0c;邻接矩阵 为什么要计算多层 邻居的邻居&#xff0c;融合多阶邻居特征 消息传递方式 图神经网络是一个相对宽泛的概念&#xff0c;本质是每个节点embeddi…

【Linux】Linux下安装Docker(图文解说详细版)

文章目录 一、前言二、Docker的三要素Docker镜像Docker仓库Docker容器 三、Docker的安装1. 确定Linux版本2.安装Docker3.测试是否安装成功4.配置下载docker镜像的仓库5.测试HelloWorld镜像 一、前言 Docker是近年来新兴的虚拟化工具&#xff0c;它可以和虚拟机一样实现资源和系…

【教程】用 HTML JavaScript 制作 2.5D 迷宫游戏地图

我写了一个能够随机生成迷宫的算法&#xff0c;得到了用户很好的反响&#xff0c;对大家有所帮助。我现在想将这个迷宫以2.5D游戏地图的方式呈现出来。最初我考虑使用CSS来实现这个目标&#xff0c;但效果并不太理想&#xff0c;因为我无法只将它渲染成背景&#xff0c;而不对整…

洛谷B2096 直方图

直方图 题目描述 给定一个非负整数数组&#xff0c;统计里面每一个数的出现次数。我们只统计到数组里最大的数。 假设 F m a x &#xff08; F m a x ≤ 100000 &#xff09; Fmax&#xff08;Fmax \le 100000&#xff09; Fmax&#xff08;Fmax≤100000&#xff09;是数组…

scratch绘制直尺 中国电子学会图形化编程 少儿编程 scratch编程等级考试四级真题和答案解析2023年3月

目录 scratch绘制直尺 一、题目要求 1、准备工作 2、功能实现 二、案例分析

NSSCTF之Misc篇刷题记录⑨

NSSCTF之Misc篇刷题记录⑨ [GKCTF 2021]签到[NISACTF 2022]bmpnumber[领航杯江苏省赛 2021]签到题[鹤城杯 2021]Misc2[鹤城杯 2021]A_MISC[GXYCTF 2019]CheckIn[HDCTF 2023]hardMisc[NSSRound#1 Basic]cut_into_thirds[闽盾杯 2021]Modbus的秘密[NISACTF 2022]神秘数字[INSHack…

asp.net+C#超市商品进销存管理系统

本超市商品管理系统主要超市内部提供服务&#xff0c;系统分为管理员员工两部分。 本研究课题重点主要包括了下面几大模块&#xff1a;管用户登录&#xff0c;员工管理&#xff0c;商品管理&#xff0c;进货管理&#xff0c;销售管理&#xff0c;供应商信息&#xff0c;会员信…