3. SpringCloudAlibaba、nacos 实现配置中心

news/2024/7/7 22:18:51

一、微服务中配置文件的问题

image.png

1.1 配置文件的问题:

  1. 配置文件的数量会随着服务的增加持续递增
  2. 单个配置文件无法区分多个运行环境
  3. 配置文件内容无法动态更新,需要重启服务

1.2 引入配置中心

引入配置中心:刚才架构就会成为这样。是由配置中心统一管理
在这里插入图片描述

  1. 统一配置文件管理
  2. 提供统一标准接口,服务根据标准接口自行拉取配置
  3. 支持动态更新的到所有服务

二、Nacos Config数据模型

Nacos Config数据模型

image.png

数据模型最佳实践

Namespace代表不同的运行环境:Dev/Test/Prod
Group代表某一类配置,比如中间件配置、数据库配置
Datald某个项目中具体的配置文

三、nacos实现配置中心

3.1 父pom或者子项目添加依赖

<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-bootstrap</artifactId>
</dependency>

3.2 配置文件改成 bootstrap.yml

spring:
  application:
    name: product-service
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848
      config:
        server-addr: localhost:8848
 		# 配置文件的类型 我们找 yaml 
        file-extension: yaml
        # 命名空间的 id 
        namespace: 89b87df8-4e58-4363-a11a-ff1863b6f5fb
        # nacos里面没有 group区分 默认的 DEFAULT_GROUP 就可以
        group: DEFAULT_GROUP

3.3 设置从配置中心获取redis的配置信息

1.nacos添加配置

在这里插入图片描述

2.添加配置信息

在这里插入图片描述

3.添加获取redis信息 java代码

import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.stereotype.Component;

@Data
@Component
@RefreshScope  // 刷新配置注解  如果nacos里面的配置变更了  项目里的配置也会跟着刷新
@ConfigurationProperties(prefix = "redis")
public class RedisConfig {

    private String host;

    private String port;

    private String password;

}

4.测试

在这里插入图片描述

四、 nacos中的扩展配置和共享配置

4.1 扩展配置

extension-configs:extension-configs 是 Nacos 支持的一种扩展配置方式。通过配置 extension-configs,可以将指定的配置文件作为扩展配置,用于补充服务配置。扩展配置与服务配置是相互独立的,扩展配置不会直接影响服务的正常运行。它可以用于提供一些额外的配置项,例如自定义的拓展属性或配置文件,供服务在需要时进行访问和使用

springboot 中 properties 文件配置如下:

#支持一个应用有多个DataId配置,mybatis.yaml datasource.yaml
# extension-configs 和 shared-configs 都是个列表,默认从0开始配置 如果还有就是 [1]
spring.cloud.nacos.config.extension-configs[0].data-id=datasource.yaml
#可以不配置,使用默认
spring.cloud.nacos.config.extension-configs[0].group=DEFAULT_GROUP
#这里需要设置为true,动态可以刷新,默认为false
spring.cloud.nacos.config.extension-configs[0].refresh=true

4.2 共享配置

shared-configs:shared-configs 是 Nacos 支持的一种共享配置方式。通过配置 shared-configs,可以将指定的配置文件作为共享配置,供多个服务实例共享使用。共享配置可以被多个服务实例同时订阅和读取,这样可以实现配置的集中管理和共享。在配置中心中创建共享配置后,服务实例可以订阅共享配置,并根据需要获取最新的配置数据

场景:

上面我们已经演示了配置中心获取配置了,现在有这么一个场景,上面我们在product服务配置了一个redis,现在我们的order服务也需要使用redis,他俩使用的redis,还是同一个,那我是不是order上面也同样加上redis的配置信息,但是如果使用的服务多了,是不是每个服务都要加,那我们能不能加一个公共的配置,让他们共享呢?

1.nacos配置信息

在这里插入图片描述
product-service 里面只有一个 name配置项
在这里插入图片描述

而redis里面的配置 我们放到了
redis.yaml 当中
在这里插入图片描述

2.java代码配置如下

spring:
  application:
    name: product-service
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848
      config:
        server-addr: localhost:8848
        file-extension: yaml
        namespace: 89b87df8-4e58-4363-a11a-ff1863b6f5fb
        group: DEFAULT_GROUP
        shared-configs:
          #  shared-configs  使用列表时,可以使用短横线(-)作为列表项的标记
          #  相当于 配置 这样 
          # spring.cloud.nacos.config.shared-configs[0].data-id= common.yaml
          # spring.cloud.nacos.config.shared-configs[0].refresh=true
          - dataId: redis.yaml
            # 这里需要设置为true,动态可以刷新,默认为false
            refresh: true

3.测试

在这里插入图片描述


http://lihuaxi.xjx100.cn/news/1240460.html

相关文章

软测量技术论文

软测量技术论文篇一 软测量技术在污水处理中的应用 摘要&#xff1a;近年来软测量技术的研究主要是基于人工神经网络&#xff0c;它对非线性问题有较好的处理能力&#xff0c;对求解结果有较好的泛化能力&#xff0c;由于实际生活中严格意义上的线性系统并不多见&#xff0c…

SIFT算法

文章目录 1. SIFT算法简介1.1 SIFT特征检测步骤1.2 SIFT算法的特点 2. SIFT算法原理2.1 尺度空间2.1.1 多分辨率金字塔2.1.2 高斯金字塔2.1.3 高斯尺度空间&#xff08;使用不同的参数&#xff09; 2.2 DoG空间极值检测&#xff08;查找关键点&#xff09;2.3 删除不好的极值点…

报表工具Stimulsoft Reports用户手册:如何激活控件

Stimulsoft Reports.Net是一个基于.NET框架的报表生成器&#xff0c;能够帮助你创建结构、功能丰富的报表。StimulReport.Net 的报表设计器不仅界面友好&#xff0c;而且使用便捷&#xff0c;能够让你轻松创建所有报表&#xff1b;该报表设计器在报表设计过程中以及报表运行的过…

微服务学习笔记--高级篇--(Redis主从)

Redis主从 搭建主从架构主从数据同步原理 搭建主从架构 单节点Redis的并发能力是有上限的&#xff0c;要进一步提高Redis的并发能力&#xff0c;就需要搭建主从集群&#xff0c;实现读写分离。 搭建主从架构 1.1集群结构 共包含三个节点&#xff0c;一个主节点&#xff0c…

[Daimayuan] nice party(C++,二分,贪心)

cc准备举办一场派对&#xff0c;他希望邀请他的朋友们过来参加&#xff0c;并且每个人都能玩得开心 cc有 n n n 位朋友&#xff0c;第 i i i 位的身价为 i i i 如果第 i i i 位朋友参加派对&#xff0c;并且玩得开心&#xff0c;当且仅当派对上至多有 X i X_i Xi​ 个人…

科技政策 | 《深圳市加快加快推动人工智能高质量发展高水平应用行动方案(2023—2024年)》发布

原创 | 文 BFT机器人 导语 Introduction 近日&#xff0c;深圳市发布了《深圳市加快推动人工智能高质量发展高水平应用行动方案&#xff08;2023-2024年&#xff09;》旨在以更大热情拥抱创新&#xff0c;打造最好生态&#xff0c;推动人工智能高质量发展和全方位各领域高水平…

MM32F3273G8P火龙果开发板MindSDK开发教程16 - 获取msa311加速器的自由落体事件

MM32F3273G8P火龙果开发板MindSDK开发教程16 - 获取msa311加速器的自由落体事件 1、功能描述 类似手环检测老人跌倒的功能&#xff0c;当msa311模块自由落体运动时&#xff0c;可生成中断。 该中断基于加速度数据与低g阈值的比较。通过将1写入位&#xff08;0x17&#xff09;…

centos 7修改时间为中国时间

一、修改时区&#xff1a; 方法1&#xff1a;cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime 方法2&#xff1a;timedatectl set-timezone Asia/Shanghai 方法3&#xff1a;tzselect 设置完后查看是否修改成功&#xff1a;date [rootloaclhost jdk1.8.0_221]# date…