3. SpringCloudAlibaba、nacos 实现配置中心

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

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.测试

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

2023上半年的九个觉悟

‍觉悟&#xff0c;就是觉了、悟了。有时候&#xff0c;你看到一句话&#xff0c;突然就觉悟了。 一、资本主义的问题 “资本主义把我们都缩减成了一个东西&#xff1a;消费者” 因此&#xff0c;人人都成为资本家利诱、操控、围猎的对象。 同时&#xff0c;金钱成为全民的神&a…

JVM垃圾回收算法及Java引用

目录 Java垃圾回收算法 1.标记清除算法&#xff1a;Mark-Sweep 2.复制算法&#xff1a;copying 3. 标记整理算法&#xff1a;Mark-Compact 4.分代收集算法 5.新生代垃圾回收算法&#xff1a;复制算法 6.老年代&#xff1a;标记整理算法 7.分区收集算法 Java引用 1.Ja…

ROS-melodic:源码安裝teb_local_planner算法、替换DWA算法

一.安裝teb_local_planner算法 源码下载地址&#xff1a;GitHub - rst-tu-dortmund/teb_local_planner: An optimal trajectory planner considering distinctive topologies for mobile robots based on Timed-Elastic-Bands (ROS Package) 注意选择对应ROS版本的代码。 放在…

爬虫 python 正则匹配 保存网页图片

目录 1. 简介1.1 爬虫1.2 爬虫语言1.3 python库1.4 我的步骤 2. 导入包2.1 代码2.2 requests库 3. 写入文件函数4. 获取图片5. 主函数5.1 代码5.2 说明一下webbrowser 6. 所有代码7. 其他&#xff08;可以忽略&#xff09;8. 总结 在这里我只提供的是一种方法&#xff0c;有很多…

SpringMVC 万字通关

文章目录 1. 什么是 Spring MVC?1.1 MVC 定义1.2 MVC 和 Spring MVC 的关系 2. Spring MVC 有什么用 ?3. 如何学 Spring MVC ?3.1 Spring MVC 的创建3.2 实现连接功能3.2.1 RquestMapping 详解1. RequestMapping 支持什么请求?2. 请求限定3. GetMapping 和 PostMapping4. c…

【Android -- JNI 和 NDK】Java 和 C/C++ 之间传递参数和返回值

本文主要介绍 JNI 的数据传递上&#xff0c;即 Java 如何传递对象给 C; 而 C 又如何将数据封装成 Java 所需的对象。 1. 基本数据类型 传递 java 的基本类型是非常简单而直接的&#xff0c;一个 jxxx 之类的类型已经定义在本地系统中了&#xff0c;比如&#xff1a;jint, jby…

认识ASP.NET MVC的5种AuthorizationFilter

一、IAuthorizationFilter 所有的AuthorizationFilter实现了接口IAuthorizationFilter。如下面的代码片断所示&#xff0c;IAuthorizationFilter定义了一个OnAuthorization方法用于实现授权的操作。作为该方法的参数filterContext是一个表示授权上下文的AuthorizationContext对…

FasterTransformer 004 open_attention.h forward

initialize forward() https://github1s.com/NVIDIA/FasterTransformer/blob/v1.0/fastertransformer/cuda/open_attention.h#L149-L217 使用cuBLAS库执行矩阵乘法运算&#xff0c;并对cublasGemmEx&#xff08;&#xff09;进行三个单独的调用。这些操作包括将属性核与输入张…

【社区图书馆】《看漫画学Python:有趣、有料、好玩、好用(全彩修订版)》

背景 Python是一门既简单又强大的编程语言&#xff0c;被广泛应用于数据分析、大数据、网络爬虫、自动化运维、科学计算和人工智能等领域。Python也越来越重要&#xff0c;成为国家计算机等级考试科目&#xff0c;某些中小学也开设了Python编程课程。本书秉承有趣、有料、好玩…

SpringCloud服务注册与发现组件Eureka(五)

Eureka github 地址&#xff1a; https://github.com/Netflix/eureka Eureka简介 Eureka是Netflix开发的服务发现框架&#xff0c;本身是一个基于REST的服务&#xff0c;主要用于定位运行在AWS域中的中间层服务&#xff0c;以达到负载均衡和中间层服务故障转移的目的。Spring…

【Android -- JNI 和 NDK】JNI 基础知识以及如何使用

JNI 基础知识 我们来系统梳理一下JNI中涉及的基本知识。 JNI定义了以下数据类型&#xff0c;这些类型和Java中的数据类型是一致的&#xff1a; Java原始类型&#xff1a;jint, jbyte, jshort, jlong, jfloat, jdouble, jchar, jboolean这些分别对应这 java 的int, byte, shor…

css 包含块

你不知道的 CSS 之包含块 一说到 CSS 盒模型&#xff0c;这是很多小伙伴耳熟能详的知识&#xff0c;甚至有的小伙伴还能说出 border-box 和 content-box 这两种盒模型的区别。 但是一说到 CSS 包含块&#xff0c;有的小伙伴就懵圈了&#xff0c;什么是包含块&#xff1f;好像…

微服务springcloud 02 创建项目中的三个service子系统,springcloud中注册中心Eureka介绍和把三个系统注册到Eureka中

item service项目 01.使用springboot创建项目 02.选择依懒项在这里插入代码片 spring web 03.添加sp01-commons依赖 在pom.xml文件中 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" x…

【色度学】光学基础

1. 光的本质 &#xff08;1&#xff09;波长不同的可见光&#xff0c;引起人眼的颜色感觉不同。 &#xff08;2&#xff09;人们观察到的颜色是物体和特有色光相结合的结果&#xff0c;而不是物体产生颜色的结果。 2. 光度量 【ISP】光的能量与颜色&#xff08;1&#xff0…

NIO 基础

3. 文件编程 non-blocking io 非阻塞 IO 1.1 Channel & Buffer channel 类似于 stream&#xff0c;它就是读写数据的双向通道&#xff0c;可以从 channel 将数据读入 buffer&#xff0c;也可以将 buffer 的数据写入 channel&#xff0c;而之前的 stream 要么是输入&#…

统信UOS V20 安装mysql5.7.42详细教程

1 安装包准备 到mysql官网可以看到最新的是8.0.33&#xff0c;想下载其他版本的点击 Looking for previous GA versions?Select Operating System: 选择如下版本的mysql 安装包 2 安装 2.1 上传文件至服务器 下载后通过远程将安装包上传至服务器&#xff0c;我这里将安装…

Seesion会话超时时间测试-业务安全测试实操(3)

Seesion会话超时时间测试, Cookie仿冒测试, 密文比对认证测试 本地加密传输测试-业务安全测试实操(2)_luozhonghua2000的博客-CSDN博客 测试原理和方法 在用户成功登录系统获得Session认证会话后,该Session认证会话应具有生命周期,即用户在成功登录系统后,如果在固定时间内…

两个链表相加

描述 假设链表中每一个节点的值都在 0 - 9 之间&#xff0c;那么链表整体就可以代表一个整数。 给定两个这种链表&#xff0c;请生成代表两个整数相加值的结果链表。 数据范围&#xff1a;0≤n,m≤1000000&#xff0c;链表任意值 0≤val≤9 要求&#xff1a;空间复杂度 O(n)…

Triton教程 -- 利用Triton部署你自己的模型

Triton教程—利用Triton部署你自己的模型 给定一个经过训练的模型&#xff0c;我如何使用 Triton 推理服务器以最佳配置大规模部署它&#xff1f; 本文档旨在帮助回答这个问题。 对于那些喜欢高级概述的人&#xff0c;下面是大多数用例的通用流程。 对于那些希望直接进入的人…

Windows Server AD域控服务器升级/迁移(AD域控的五大角色转移)

Windows Server AD域控服务器升级/迁移&#xff08;AD域控的五大角色转移&#xff09; 新域控服务器安装配置域控服务器&#xff0c;加入现有域域控角色迁移到新域控服务器原域控服务器降级退域 本文主要介绍在现有域环境下如何进行域控服务器的迁移/升级操作。对于域结构的网络…