SpringCloud系列篇:核心组件之配置中心组件

这篇具有很好参考价值的文章主要介绍了SpringCloud系列篇:核心组件之配置中心组件。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

🥳🥳Welcome Huihui's Code World ! !🥳🥳

接下来看看由辉辉所写的关于SpringCloud的相关操作吧

目录

🥳🥳Welcome Huihui's Code World ! !🥳🥳

 一.前言

二.配置中心组件是什么

三. 为什么要使用配置中心组件

四.使用配置中心组件的步骤 

1.引入依赖

2.进入nacos编写配置

3.读取配置       

4.不同环境下的配置


一.前言

        微服务意味着要将单体应用中的业务拆分成一个个子服务,每个服务的粒度相对较小,因此系统中会出现大量的服务。

        由于每个服务都需要必要的配置信息才能运行,所以一套集中式的,动态的配置管理设施是必不可少的

        Spring Cloud 提供了 ConfigServer来解决这个问题. Spring Cloud Config 为微服务架构中的微服务提供集中化的外部配置支持,配置服务器为各个不同微服务应用的所有环境提供了一个中心化的外部配置。 SpringCloud Config 分为服务端和客户端两部分。

SpringCloud系列篇:核心组件之配置中心组件,Spring Cloud,spring cloud,java,spring boot

        服务端也称为分布式配置中心,他是一个独立的微服务应用,用来连接配置服务器并为客户端提供获取配置信息,加密/解密信息等访问接口

        客户端则是通过制定的配置中心来管理应用资源,以及与业务相关的配置内容,并在启动的时候从配置中心 获取和加载配置信息,配置服务器默认采用git来存储配置信息,这样就有助于对环境配置进行版本管理,并 且可以通过git客户端工具来方便的管理和访问配置内容

SpringCloud系列篇:核心组件之配置中心组件,Spring Cloud,spring cloud,java,spring boot

一个使用微服务架构的应用系统可能会包括成百上千个微服务,配置各部相同,需求各不相同

  • 不同环境不同配置:例如数据源在不同的环境(开发,测试,生产)是不同的,可以通过配置中心
  • 运行期间可以动态调整:例如根据各个微服务的负载状况,动态调整数据源连接池大小或者熔断阀 值,并且调整时不停止微服务(配置修改后可以自动更新)

二.配置中心组件是什么

        配置中心组件是一种用于管理应用程序配置信息的工具或服务。它通常可以集中存储应用程序的各种配置数据,如数据库连接字符串、API密钥、环境变量等,以便方便地进行配置管理和维护。使用配置中心组件可以大大简化应用程序的部署和维护工作,同时也有助于提高应用程序的可靠性和安全性。常见的配置中心组件包括Spring Cloud Config、Consul、Zookeeper等

三. 为什么要使用配置中心组件

这里我还是列举一些场景,来便于理解吧


        我们在生产环境部署的时候,为了服务的可用性以及负载,通常一个服务会启动多个实例,要么在不同的机器 要么在相同机器不同端口…【例如 商品服务启动4个,订单服务启动4个,用户服务启动N个,文件上传服务启动X个等等…】

        当服务启动的时候便会去加载自己的配置文件application.properties或者application.yml

一气呵成…这本身,是没有问题的。但是我们总会面临因业务更改导致配置文件需要新增/修改/删除属性…那么在这样的场景中,我们该如何面对呢??

SpringCloud系列篇:核心组件之配置中心组件,Spring Cloud,spring cloud,java,spring boot

是选择更改配置文件后,从新打包部署?

还是将配置文件存放部署的服务机器某路径上,更改保存再重启服务?

两种方式对比的话,第二种方式可能效率更高一点。但是我们微服务通常又是使用容器化部署,如果保存在宿主机某一处的话,也是涉及到目录挂载问题的,且在服务器上,也不方便多个服务统一管理…

SpringCloud系列篇:核心组件之配置中心组件,Spring Cloud,spring cloud,java,spring boot

这时候,咱们统一的配置中心就横空出世啦!!!

四.使用配置中心组件的步骤 

1.引入依赖

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

2.进入nacos编写配置

关于nacos的下载,在之前的博文中已经提及了nacos的使用

SpringCloud系列篇:核心组件之配置中心组件,Spring Cloud,spring cloud,java,spring boot

点击发布即是编写好了这个配置文件,那么再配置列表中便可以看到刚刚所写好的这个配置文件

SpringCloud系列篇:核心组件之配置中心组件,Spring Cloud,spring cloud,java,spring boot

3.读取配置       

 然后咱自己写的项目就要去读取这个配置文件,那么这个配置文件在项目中肯定要比我们自身项目中的配置文件先读取。所以这里需要再写一个配置文件用于读取nacos中所编写的文件

bootstrap.yml:

bootstrap.yml是SpringBoot默认支持properties和YAML两种格式的配置文件。bootstrap.yml(bootstrap.properties)用来程序引导时执行,应用于更加早期配置信息读取,可以用来配置application.yml中使用到参数等。application.yml(application.properties) 应用程序特有配置信息,可以用来配置后续各个模块中需使用 的公共参数等。

SpringCloud系列篇:核心组件之配置中心组件,Spring Cloud,spring cloud,java,spring boot

要使bootstrap.yml 先于application.yml 加载,就必须先导入一个依赖

<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bootstrap</artifactId>
</dependency>

然后需要再项目中读取配置文件

单个读取文件中的属性

package com.provider.main;
import com.provider.main.config.EmailProperties;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/myconfig")
@Slf4j
public class ConfigController {

    @Value("${email.user}")
    private String user;
    @Value("${email.code}")
    private String code;

 

    @RequestMapping("/test1")
    public String test1() {
        log.info("user{},code{}",user,code);
        return "SB";
    }

    @RequestMapping("/test2")
   

}

效果演示

SpringCloud系列篇:核心组件之配置中心组件,Spring Cloud,spring cloud,java,spring boot

读取整个文件中的配置属性

package com.provider.main.config;

import lombok.Data;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

/**
 * @author是辉辉啦
 * @create 2024-01-07-18:41
 */
@ConfigurationProperties(prefix = "email")
@Component
@Data
public class EmailProperties {
    private String user;
    private String code;

}

测试

package com.provider.main;
import com.provider.main.config.EmailProperties;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/myconfig")
@Slf4j
public class ConfigController {
    @Autowired
    private EmailProperties emailProperties;

    @RequestMapping("/test2")
    public Object test2() {
        return emailProperties;
    }


}

效果演示

SpringCloud系列篇:核心组件之配置中心组件,Spring Cloud,spring cloud,java,spring boot

以上两种方式都可以读取到配置文件的属性值,不过整个的读取效率会更加高

4.不同环境下的配置

我们可以在整个命名空间中去增加多个环境的空间,其中去存放不同环境中所需的配置文件

SpringCloud系列篇:核心组件之配置中心组件,Spring Cloud,spring cloud,java,spring boot

我们只需要在配置文件中加上这一个配置,就能够指定对应的空间了

namespace: 1e189198-5765-4b5d-acdd-71e8baa387c0

其中填的是对应空间的id

SpringCloud系列篇:核心组件之配置中心组件,Spring Cloud,spring cloud,java,spring boot

我们在项目完成了,打包的时候是不需要将这个配置给写上的,因为这样子的话,我们就不好更改空间了,我们直接不写,这样运行这个打好的jar包时,可以使用命令的方式指定对应的空间

在最后,我也附上整个yml文件的配置

server:
  port: 8082
spring:
  application:
    name: provider
  cloud:
    nacos:
        server-addr: localhost:8848
        config:
          server-addr: ${spring.cloud.nacos.server-addr}
          prefix: ${spring.application.name}
          file-extension: yaml
          group: DEFAULT_GROUP
          # 共享配置集数组
          shared-configs:
            - data-id: redis.yaml
            # 使用的 Nacos 配置分组,默认为 DEFAULT_GROUP
              group: DEFAULT_GROUP
            # 是否自动刷新配置,默认为 false
              refresh: true
          #dev环境 --开发
          namespace: 1e189198-5765-4b5d-acdd-71e8baa387c0

好啦,今天的分享就到这了,希望能够帮到你呢!😊😊  文章来源地址https://www.toymoban.com/news/detail-821270.html

到了这里,关于SpringCloud系列篇:核心组件之配置中心组件的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Java之SpringCloud Alibaba【七】【Spring Cloud微服务网关Gateway组件】

    Java之SpringCloud Alibaba【一】【Nacos一篇文章精通系列】 跳转 Java之SpringCloud Alibaba【二】【微服务调用组件Feign】 跳转 Java之SpringCloud Alibaba【三】【微服务Nacos-config配置中心】 跳转 Java之SpringCloud Alibaba【四】【微服务 Sentinel服务熔断】 跳转 Java之SpringCloud Alibaba【五】【微服务

    2024年02月06日
    浏览(64)
  • SpringCloud 微服务系列——Spring Cloud Alibaba 微服务工具集

    ✅作者简介:2022年 博客新星 第八 。热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏:SpringCloud 微服务学习专栏 ✨特色专栏:国学周更-心性养成之路 🥭本文内容:SpringCloud 微服

    2024年02月04日
    浏览(53)
  • Spring Cloud集成Nacos实现服务配置中心 | Spring Cloud 7

    先我们来看一下,微服务架构下关于配置文件的一些问题: 配置文件相对分散。在一个微服务架构下,配置文件会随着微服务的增多变的越来越多,而且分散在各个微服务中,不好统一配置和管理。 配置文件无法区分环境,开发环境、测试环境、线上环境。微服务项目可能会

    2024年02月14日
    浏览(56)
  • SpringCloud 核心组件Feign【远程调用&自定义配置】

    目录 1,Feign远程调用 1.1:Feign概述 1.2:Feign替代RestTemplate         1):引入依赖         2):添加注解         3):编写Feign的消费服务,提供服务         4):测试         5):总结 1.3:自定义配置 1.3.1:配置文件方式 1.3.2:Java代码方式 Feign是一款Java语言编写的

    2023年04月08日
    浏览(78)
  • Spring Cloud集成Nacos作为配置中心

    Nacos的安装与配置 Spring Cloud集成Nacos作为注册中心 LoadBalacer集成Nacos实现负载均衡 常见的负载均衡策略分析 Spring Cloud集成Dubbo实现RPC调用 前面我们已经介绍了 Nacos 的安装与配置, Spring Cloud 集成 Nacos 作为服务的注册中心,集成 Nacos 实现服务的负载均衡和一些常见的负载均衡

    2024年02月15日
    浏览(57)
  • 微服务 – Spring Cloud – Nacos 配置中心

    Data ID : nacos-config-client-dev.yaml Group: DEV-CLOUD2023

    2024年02月11日
    浏览(64)
  • Spring Cloud Alibaba nacos配置中心

    第一章 Java线程池技术应用 第二章 CountDownLatch和Semaphone的应用 第三章 Spring Cloud 简介 第四章 Spring Cloud Netflix 之 Eureka 第五章 Spring Cloud Netflix 之 Ribbon 第六章 Spring Cloud 之 OpenFeign 第七章 Spring Cloud 之 GateWay 第八章 Spring Cloud Netflix 之 Hystrix 第九章 代码管理gitlab 使用 第十章 Spr

    2024年02月08日
    浏览(60)
  • 【Spring Cloud 】进阶之Config配置中心

    目录 config大致的一个思路: 二,前期准备 2.1导入依赖 2.2编写bootstrop.yml: 三,编写Controller类 3.1获取单个配置类信息 3.2获取多个配置类信息                                   🎉🎉欢迎来到我的CSDN主页!🎉🎉                         🏅我是平顶山大师,一个在C

    2024年01月17日
    浏览(39)
  • 特别详细的Spring Cloud 系列教程1:服务注册中心Eureka的启动

    Eureka已经被Spring Cloud继承在其子项目spring-cloud-netflix中,搭建Eureka Server的方式还是非常简单的。只需要通过一个独立的maven工程即可搭建Eureka Server。  我们引入spring cloud的依赖和eureka的依赖。 注意spring cloud和springboot的版本要对应,不然容易出现各种奇怪的错误。 不知道spr

    2024年04月08日
    浏览(76)
  • Spring Cloud Gateway集成Nacos作为注册中心和配置中心

    本篇文章将介绍Spring Cloud Alibaba体系下Spring Cloud Gateway的搭建,服务注册中心和分布式配置中心使用Nacos,后续将会持续更新,介绍集成Sentinel,如何做日志链路追踪,如何做全链路灰度发布设计,以及Spring Cloud Gateway的扩展等。 ​ Spring Boot,Spring Cloud,Discovery,Config等基础依

    2024年02月11日
    浏览(113)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包