【微服务笔记13】微服务组件之Config配置中心基础环境搭建

news2024/11/18 13:36:09

这篇文章,主要介绍微服务组件之Config配置中心基础环境搭建。

目录

一、Config配置中心

1.1、什么是配置中心

1.2、Config配置中心特点

二、搭建Config配置中心

2.1、配置Git仓库

2.2、创建ConfigServer服务端

(1)引入依赖

(2)添加配置文件

(3)创建启动类

(4)运行测试

2.3、创建ConfigClient客户端

(1)引入依赖

(2)添加bootstrap.yml配置文件

(3)创建启动类

(4)创建测试控制器

(5)运行测试


一、Config配置中心

1.1、什么是配置中心

在微服务系统中,某一个微服务中,都具备一个application.yml配置文件,但是你可以发现,很多的微服务里面存在一些相同的配置内容,例如:连接的注册中心相关配置信息等等。假设现在我们的注册中心地址变了,那么就需要去某一个微服务项目中修改application.yml配置文件内容,然后重新启动某一个应用程序,这显然不太方便,所以为了解决这个问题,提出了配置中心的概念。

配置中心,就是一个集中管理所有应用程序使用到的配置信息,当需要修改配置的时候,只修改修改这一个地方,之后其他的微服务就可以重新加载配置信息,这样就不需要一个一个微服务的修改配置信息。

配置中心有很多种,例如:Spring Cloud Config配置中心、Apollo(携程开发的配置中心)、Disconf(百度开发的配置中心)。

这篇文章介绍的是Spring Cloud Config配置中心,它是一个集中式的配置中心,它采用的C/S架构模式,分为:Client客户端、Server服务端。

  • Client客户端就是我们的微服务工程,通过接口从Server服务端获取数据,然后初始化应用程序。
  • Server服务端就是单独的配置中心,专门用于保存配置信息,对外提供获取信息的接口。

Config配置中心默认是采用【Git】进行存储配置文件的,所以我们可以很容易的实现配置文件的部署、修改、版本管理。

1.2、Config配置中心特点

Config配置中心具有如下特点:

  • 提供了Server服务端和Client客户端的支持。
  • 可以对配置信息进行加密和解密。
  • 可以和Spring很好的进行集成。
  • 可以用于任何语言进行开发。
  • 基于Git实现,可以进行版本的管理。

二、搭建Config配置中心

2.1、配置Git仓库

Config配置中心是基于Git存储配置文件的,所以首先需要创建一个Git仓库,这里我就采用CSDN的Gitcode用于存储配置文件。创建一个【config-demo】仓库,然后上传几个配置文件作为测试文件即可。

注意:配置中心的文件名称不是任意的,是具有一定规则的,一般按照【微服务名称.yml】、【微服务名称-dev.yml】等等格式,后面的【-dev】表示开发环境配置、【-prod】表示生产环境配置。

2.2、创建ConfigServer服务端

(1)引入依赖

创建一个微服务工程,然后引入config-server服务端依赖。

<!-- 引入 config-server 服务端依赖 -->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-config-server</artifactId>
</dependency>

(2)添加配置文件

添加application.yml配置文件,内容如下:

server:
  port: 9999

# 添加 config server 服务端配置信息
spring:
  application:
    name: config-server
  cloud:
    config:
      server:
        git:
          uri: https://gitcode.net/qq_39826207/config-demo.git # Git仓库的地址
#          username: # Git仓库的登录用户名称
#          password: # Git仓库的登录密码
#          default-label: # 默认访问的分支名称
#          search-paths: # 搜索的根目录,从仓库中的哪个目录中开始查找配置文件

(3)创建启动类

package com.gitee.demo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.config.server.EnableConfigServer;

/**
 * @version 1.0.0
 * @Date: 2023/4/13 21:13
 * @Copyright (C) ZhuYouBin
 * @Description: Config Server 启动类
 */
// 启用Config Server
@EnableConfigServer
@SpringBootApplication
public class ConfigServerApp {
    public static void main(String[] args) {
        SpringApplication.run(ConfigServerApp.class, args);
    }
}

(4)运行测试

启动工程,浏览器访问【http://localhost:9999/config-client/default】,此时可以看到访问的配置信息。

Config Server服务端访问配置文件是有一定规则的,规则如下:

# 访问 yml 类型文件
/{application}/{profile}[/{label}]
/{application}/{profile}.yml
/{label}/{application}-{profile}.yml
# 访问 properties 类型文件
/{label}/{application}-{profile}.properties
/{application}-{profile}.properties

其中,{application}表示微服务应用名称,{profile}表示哪个环境,{label}表示哪个Git分支。

当第一次访问远程仓库配置文件时候,服务端会将远程仓库的配置文件复制到本地仓库,控制台可以查看输出日志。

进入本地仓库,可以看到和远程仓库一样的配置文件。

到此,Config Server服务端就搭建完成啦。

2.3、创建ConfigClient客户端

(1)引入依赖

<!-- 引入 web 依赖 -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- 引入 config client 依赖 -->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-config-client</artifactId>
</dependency>

(2)添加bootstrap.yml配置文件

这里需要注意啦,config client客户端一定要使用【bootstrap.yml】配置文件,因为需要读取应用程序之外的配置信息,也就是读取Config配置中心的信息,所以需要采用优先级更高的配置文件【bootstrap.yml】。

  • 注意:bootstrap.yml文件优先级比application.yml更高,最先被应用程序加载。
# 添加 config client 客户端配置
spring:
  cloud:
    config:
      name: config-client # 从 Git 仓库获取的配置文件名称
      uri: http://localhost:9999 # Config Server服务端的地址
      label: master # 从哪个分支获取
      profile: default # 获取哪个环境下的配置文件

(3)创建启动类

package com.gitee.demo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

/**
 * @version 1.0.0
 * @Date: 2023/4/13 21:32
 * @Copyright (C) ZhuYouBin
 * @Description:
 */
@SpringBootApplication
public class ConfigClientApp {
    public static void main(String[] args) {
        SpringApplication.run(ConfigClientApp.class, args);
    }
}

(4)创建测试控制器

package com.gitee.demo.controller;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * @version 1.0.0
 * @Date: 2023/4/13 21:39
 * @Copyright (C) ZhuYouBin
 * @Description:
 */
@RestController
@RequestMapping("/api/config")
public class ConfigController {
    
    @Value("${server.port}")
    private int port;
    @Value("${spring.application.name}")
    private String appName;
    
    @GetMapping("/client")
    public String configDemo() {
        return "当前应用名称是: " + appName + ", 启动端口是: " + port;
    }
}

(5)运行测试

启动config client客户端工程,浏览器访问测试接口【http://localhost:26250/api/config/client】,修改不同的配置文件,可以看到不同的返回结果,如下所示:

到此,Config配置中心基础环境搭建完成啦。

综上,这篇文章结束了,主要介绍微服务组件之Config配置中心基础环境搭建。

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

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

相关文章

性能测试,监控磁盘读写iostat

性能测试&#xff0c;监控磁盘读写iostat iostat是I/O statistics&#xff08;输入/输出统计&#xff09;的缩写&#xff0c;iostat工具将对系统的磁盘操作活动进行监视。它的特点是汇报磁盘活动统计情况&#xff0c;同时也会汇报出 CPU使用情况。同vmstat一样&#xff0c;ios…

【iOS-#import <> ““, @class和C- #include<> ““, 】

前言 寒假分享会的遗漏问题总结 引入 在C/CPP语言里&#xff0c;引入某个头文件的操作 #include<iostream> #include<string>也有 #include "string"同样在OC里面 引入某个类会用到 #import关键字 #import "LoginViewController.h" #im…

web开发HTML生成PDF的三种解决方案(服务器端mpdf、html2canvas.js、浏览器打印、PDF虚拟打印机)

系列文章目录 python数据可视化开发(4)&#xff1a;爬取对应地址的pdf文档并分类保存到本地文件夹&#xff08;爬虫&#xff09;php使用mPDF实战案例分析字符串太长时文本变小无法自动分页的解决方案web开发HTML生成PDF的三种解决方案&#xff08;服务器端mdf、h2pdf.js、浏览…

Nuxt.js - 超详细实现路由 “伪静态“,将浏览器网页路径 URL 链接后面加上 .html 后缀名称(可以自定义任何结尾后缀名称)详细示例教程

前言 正常的项目,路由都是 /index | /user/add 这种,但有一个办法可以让其后面带上 .html,比如:/index.html。 本文 在 Nuxt.js 项目中,描述了如何实现伪静态详细教程,让页面路由后面都跟上一段自定义后缀名,比如 .html / .asp, 你可以按照本文的教程,最终得到伪静态…

阿赵的MaxScript学习笔记分享十四《Struct结构体的使用和面向对象的思考》

MaxScript学习笔记目录 大家好&#xff0c;我是阿赵 之前写了一些MaxScript的学习笔记&#xff0c;里面实现的功能不算很复杂&#xff0c;所以都是使用了偏向于面向过程的方式去编写的。 我本人其实是比较习惯用面向对象的方式去编写代码。关于面向过程和面向对象之间的优缺点…

3.5 方程组的状态与解的迭代改善

学习目标&#xff1a; 如果我要学习方程组的状态与解的迭代改善&#xff0c;我会采取以下步骤&#xff1a; 学习迭代方法的基本理论&#xff1a;首先&#xff0c;我会学习迭代方法的基本概念、原理和公式&#xff0c;包括雅可比迭代法、高斯-赛德尔迭代法和逐次超松弛迭代法等…

融合CDN行为分析动态加速解决方案

网络延迟对电商企业产生了巨大的负面影响&#xff0c;延迟是电子商务的杀手&#xff0c;网站访客等待的时间越长&#xff0c;最终实现转化的可能性就越小&#xff0c;同时他们对你的网站品牌的认可度也就越低&#xff0c;快速的网站内容交付是具有全球意识的电商企业不可或缺的…

Qt优秀开源项目之十八:QtService

QtService是一个用于实现Windows服务或unix守护进程的开源项目 github地址&#xff1a;https://github.com/qtproject/qt-solutions/tree/master/qtservice 源码可以编译成动态库&#xff0c;也可以直接在项目中引用源码 源码目录qtservice/examples中包含了三个例子&#xff0…

【Linux】system V 消息队列 | system V 信号量(简单赘述)

文章目录 1 . system V 消息队列(了解)接口查看消息队列 2.system V 信号量 (了解)1.进程互斥等概念的理解2.认识信号量3. 接口 这两部分主要是了解即可&#xff0c;为后面学习做铺垫 1 . system V 消息队列(了解) 为了让两个进程间通信 创建一个队列queue 进程A可以通过消息队…

Python——第2章 数据类型、运算符与内置函数

目录 1 赋值语句 2 数据类型 2.1 常用内置数据类型 2.1.1 整数、实数、复数 2.1.2 列表、元组、字典、集合 2.1.3 字符串 2.2 运算符与表达式 2.2.1 算术运算符 2.2.2 关系运算符 2.2.3 成员测试运算符 2.2.4 集合运算符 2.2.5 逻辑运算符 2.3 常用内置…

Kubernetes 笔记(15)— 应用保障、容器资源配额、容器状态探针概念及使用

作为 Kubernetes 里的核心概念和原子调度单位&#xff0c;Pod 的主要职责是管理容器&#xff0c;以逻辑主机、容器集合、进程组的形式来代表应用&#xff0c;它的重要性是不言而喻的。 在上层 API 对象的基础上&#xff0c;一起来看看在 Kubernetes 里配置 Pod 的两种方法&…

dell t630服务器风扇控制笔记记录(耗时一天)

1、打开虚拟控制台得用IE&#xff1b; 2、Dell PowerEdge T640 加装显卡之后风扇狂转问题解决 - 知乎 感谢知乎Billy&#xff0c; 操作步骤&#xff1a; 1、查看iDrac版本&#xff0c;必须在3.30.30.30及以下&#xff0c;之后的版本关闭了手动控制风扇转速的权限&#xff0…

从视图树到GPU:探索Android渲染机制

简介 在 Android 中&#xff0c;渲染技术可以分为 CPU 渲染和 GPU 渲染两种方式。CPU 渲染是直接使用 CPU 处理数据&#xff0c;并将其显示在屏幕上&#xff0c;而 GPU 渲染则是将数据传递给 GPU 进行处理和显示。 具体的渲染技术如下&#xff1a; Canvas绘图&#xff1a;An…

多层感知器介绍

一、概览 现实世界中很多真实的问题都不是线性可分的&#xff0c;即无法使用一条直线、平面或者超平面分割不同的类别&#xff0c;其中典型的例子是异或问题&#xff08;Exclusive OR&#xff0c;XOR&#xff09;&#xff0c;即假设输入为x1和x2&#xff0c;如果它们相同&…

Linux远程访问及控制SSH命令

目录 一. SSH服务1.1 SSH基础1.1.1什么是SSH服务器&#xff1f;1.1.2SSH优点1.1.3常见的ssh协议 二. 服务端配置文件常用选项2.1设置白名单2.2设置黑名单 三. SSH服务的两种验证方式3.1 公钥与私钥的关系 四. ssh客户端程序4.1ssh远程登录4.2 scp 远程复制4.3 sftp 安全的ftp 五…

Direct3D 12——计算着色器——计算着色器概念

计算着色器虽然是一种可编程的着色器&#xff0c;但Direct3D并没有将它直接归为渲染流水线中的一部分。虽然如此&#xff0c;但位于流水线之外的计算着色器却可以读写GPU资源。从本质上来说&#xff0c;计算着 色器能够使我们访问GPU来实现数据并行算法&#xff0c;而不必渲染出…

ESP32设备驱动-BH1745NUC 亮度和颜色传感器驱动

BH1745NUC 亮度和颜色传感器驱动 文章目录 BH1745NUC 亮度和颜色传感器驱动2、硬件准备3、软件准备4、驱动实现BH1745NUC 是具有 IC 总线接口的数字颜色传感器 IC。 该 IC 感应红光、绿光和蓝光 (RGB) 并将它们转换为数字值。 高灵敏度、宽动态范围和出色的 Ircut 特性使该 IC …

【CSS3】CSS3 伪元素字体图标 ( 生成 icommon 字体文件 | 字体图标基本使用 | 使用伪元素实现 icommon 字体图标显示 )

文章目录 一、icommon 字体图标基本使用1、生成 icommon 字体文件2、字体图标基本使用 二、使用伪元素实现 icommon 字体图标显示 一、icommon 字体图标基本使用 字体图标 指的是 将图标做成字体样式 , 在 放图标的地方 使用 文字 即可实现 图标显示 ; 1、生成 icommon 字体文件…

Vue2-黑马(十三)

目录&#xff1a; &#xff08;1&#xff09;实战-permissions.js-动态路由 &#xff08;2&#xff09;实战-第三方登录-流程分析 &#xff08;3&#xff09;实战-第三方登录-代码解读 &#xff08;1&#xff09;实战-permissions.js-动态路由 在做根据用户角色动态生成路由…

【Unity+MySQL】实现注册登录系统(升级版)

目录 1 UI界面重新设计1.1 注册界面1.2 登录界面1.3 交互实现 2 注册功能完善2.1 判断用户输入的用户名是否与数据库中的重复2.2 将当前时间更新至用户表的当前注册时间列2.3 将用户输入的注册密码使用哈希加密 3 登录功能完善 接着 上篇文章所谈到的系统缺陷&#xff0c;这篇…