【微服务笔记14】微服务组件之Config配置中心高可用环境搭建

news2025/1/21 5:58:07

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

目录

一、高可用Config配置中心

1.1、高可用配置中心介绍

1.2、搭建Eureka注册中心

1.3、搭建ConfigServer服务端

(1)引入依赖

(2)添加配置文件

1.4、搭建ConfigClient客户端

(1)引入依赖

(2)添加配置文件

(3)编写测试类

(4)运行测试


一、高可用Config配置中心

1.1、高可用配置中心介绍

前一篇文章介绍了Config配置中心基础环境的搭建,这种环境存在一个问题,那就是一旦Config Server服务端发生故障之后,那么整个微服务系统就将无法使用,也就是没办法实现微服务的高可用。如何解决Config配置中心的高可用问题呢???

  • 要解决Config配置中心的高可用性,可以结合Eureka注册中心实现。

一台Config Server服务没办法保证高可用,那就多搭建几台Config Server服务,然后将这些服务全部注册到Eureka注册中心里面,Config Client客户端不需要和Config Server服务端直接通信,而是根据服务名称,从Eureka注册中心获取到具体的Config Server服务地址,实现配置信息的同步,大致如下图所示:

知道了高可用Config配置中心的搭建环境,下面就开始动手搭建一个高可用环境。

1.2、搭建Eureka注册中心

这里需要使用到Eureka注册中心,所以需要搭建一个高可用的Eureka注册中心环境,可以参考我之前的文章。

【【微服务笔记03】微服务组件之Eureka注册中心高可用集群环境搭建】

或者为了简单,也可以只使用一台Eureka注册中心,为了方便,这篇文章我就采用单台Eureka的方式。

1.3、搭建ConfigServer服务端

这里创建两台Config Server配置中心服务,创建的方式和前一篇文章是一样的,只需要引入config server依赖,eureka-client配置中心客户端依赖即可。

(1)引入依赖

<!-- 引入 eureka 客户端依赖 -->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<!-- 引入 config-server 服务端依赖 -->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-config-server</artifactId>
</dependency>

(2)添加配置文件

server:
  port: 18888

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

# eureka 配置
eureka:
  instance:
    hostname: ${spring.application.name}
    prefer-ip-address: true # 开启采用 IP 注册形式
    # ${spring.cloud.client.ip-address} 这个属性可以获取到当前机器的 IP 地址
    instance-id: ${spring.cloud.client.ip-address}:${server.port} # 设置当前服务的实例ID,采用:IP+端口形式
  client:
    register-with-eureka: true # 是否将自己注册到eureka注册中心
    fetch-registry: true # 是否从eureka注册中心获取注册信息
    service-url:
      defaultZone: http://localhost:8761/eureka/ # eureka服务端的地址

到这里,Config Server服务端基本上就搭建好了。

1.4、搭建ConfigClient客户端

Config Client客户端,也就是我们自己编写的那些微服务应用,需要从Config Server服务端获取配置信息,但是现在不需要直接和Config Server进行交互,而是通过Eureka注册中心来获取配置信息。

(1)引入依赖

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

(2)添加配置文件

  • 在bootstrap.yml配置文件中,添加如下内容:
# 添加 config client 客户端配置
spring:
  cloud:
    config:
      name: config-client # 从 Git 仓库获取的配置文件名称
      # 从注册中心获取配置信息,这里的 uri 就不需要配置啦
#      uri: http://localhost:9999 # Config Server服务端的地址
      label: master # 从哪个分支获取
      profile: dev # 获取哪个环境下的配置文件
      # 从注册中心获取配置信息
      discovery:
        enabled: true # 开启服务发现的功能,这里也就是支持eureka的功能
        service-id: config-cluster-server # config server服务端的微服务应用名称

(3)编写测试类

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;
    }
}

(4)运行测试

依次启动eureka注册中心、两个config server服务、一个config client服务,浏览器访问【localhost:26251/api/config/client】,看到如下内容,就说明搭建成功啦(注意:其实config client能够正常启动就已经说明搭建成功啦)。

到此,Config配置中心高可用环境就搭建完啦。

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

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

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

相关文章

北上广测试工程师月薪20K往上,该如何做,需要会什么技能?

有人回答说这只能是大企业或者互联网企业工程师才能拿到。也许是的&#xff0c;小公司或者非互联网企业拿两万的不太可能是码农了&#xff0c;应该已经转管理。还有区域问题&#xff0c;这个不在我的考虑范围内&#xff0c;因为除了北上广深杭&#xff0c;其他地方也很难达到。…

代码审计之PHP核心配置详解

代码审计之PHP核心配置详解1.register_globals&#xff08;全局变量注册开关&#xff09;2.allow_url_include&#xff08;是否允许包含远程文件&#xff09;3.magic_quotes_gpc&#xff08;魔术引号自动过滤&#xff09;4.magic_quotes_runtime&#xff08;魔术引号自动过滤&a…

【建议收藏】利用python基于模拟退火计算QUBO表达式(内附代码)

文章目录引言模拟退火算法模拟退火的理论过程模拟退火在优化中的应用基于python的模拟退火编码流程定义目标函数初始化状态迭代寻找最优完整代码模拟退火在求解QUBO表达式中的应用结束语引言 在计算QUBO解的过程中&#xff0c;通常需要利用不同的优化算法来计算其结果。 在本…

2023 年十大 API 管理趋势

作者郑玩星&#xff0c;API7.ai 技术工程师。 阅读原文 什么是 API&#xff1f;什么是 API 管理&#xff1f; 近期&#xff0c;AIGC&#xff08;AI Generated Content&#xff0c;生成式人工智能&#xff09;在各行业的应用日趋普及。AIGC 服务提供商通过 API 向外部提供其内…

18 隐私模式下面发送 http 请求不成功

前言 是这样的一个情况, 最近 我们服务存在这样的一个问题 是在登录界面, 假设我用户名 或者 密码输入错误, 能够得到真确的结果, 拿到了 正常的 http 响应, 回来 "用户名 或者 密码 不正确 " 但是 假设是在 隐私模式下面, 同样的输入, 同样的服务, 但是结果 不一…

VMware ESXi 7.0 U3l macOS Unlocker OEM BIOS (标准版和厂商定制版)

VMware ESXi 7.0 U3l macOS Unlocker & OEM BIOS (标准版和厂商定制版) 提供标准版和 Dell (戴尔)、HPE (慧与)、Lenovo (联想)、Inspur (浪潮)、Cisco (思科) 定制版镜像 请访问原文链接&#xff1a;https://sysin.org/blog/vmware-esxi-7-u3-oem/&#xff0c;查看最新版…

C++---状态压缩dp---小国王(每日一道算法2023.4.15)

注意事项&#xff1a; 状压dp难度警告&#xff01; 本题为"状态压缩dp—蒙德里安的梦想"的近似题&#xff0c;建议先阅读这篇文章并理解。 题目&#xff1a; 在 nn 的棋盘上放 k 个国王&#xff0c;国王可攻击相邻的 8 个格子&#xff0c;求使它们无法互相攻击的方案…

1~5年的软件测试工程师,该学习哪些知识实现涨薪20K?

工作已经8年有余&#xff0c;这8年里特别感谢技术管理人员的器重&#xff0c;以及同事的帮忙&#xff0c;学到了不少东西。这8年里走过一些弯路&#xff0c;也碰到一些难题&#xff0c;也受到过做为一名测试却经常为系统维护和发布当救火队员的苦恼。遂决定梳理一下自己所学的东…

华为暑期实习

前言&#xff1a; 多行数据需要输入的时候可以用下面的结构&#xff1a; while True:try:n int(input())s input().split()num []for i in s:num.append(int(i))k int(input())print(num[n-k])except:break输入两组数据&#xff1a; 1 8108 17 2542 4218 9064 4908 1526 …

【WLSM、FDM状态估计】电力系统状态估计研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

实验二 图像空间域频率域滤波

一&#xff0e;实验目的&#xff1a; 1. 模板运算是空间域图象增强的方法&#xff0c;也叫模板卷积。 &#xff08;1&#xff09;平滑&#xff1a;平滑的目的是模糊和消除噪声。平滑是用低通滤波器来完成&#xff0c;在空域中全是正值。 &#xff08;2&#xff09;锐化&…

ChatGPT实战100例 - (01) 秒出思维导图

文章目录ChatGPT实战100例 - (01) 秒出思维导图一、需求与思路1. 需求&#xff1a;快速的头脑风暴2. 思路&#xff1a;生成markdown然后转化嗯二、生成markdown语法的思维导图1. 问题2. 回答三、把markdown文本转换成思维导图1. 转换2. 下载ChatGPT实战100例 - (01) 秒出思维导…

Nature Communications|评估推进基于网络的蛋白质-蛋白质相互作用预测的社区工作

题目&#xff1a;Assessment of community efforts to advance network-based prediction of protein–protein interactions 文献来源&#xff1a;Nature Communications | (2023) 14:1582 4 代码&#xff1a;https://github.com/spxuw/PPI-Prediction-Project 内容&#x…

英语基础:四级431、六级没过,考研英语78分经验分享 (23考研)

前言 博主备考时的英语基础&#xff1a;英语四级431分, 六级没过 研究生英语二分数&#xff1a;78分 ps&#xff1a;也许这个分数段不是一些大佬的目标分数 (80)&#xff0c;本篇文章的目的只是帮助一些英语基础差的同学&#xff0c;提供一些备考经验。 一、基础阶段 时间&…

AI与未来文明:人工智能能否重塑人类文化,改变社会生活?

哈喽&#xff0c;大家好&#xff0c;我是木易巷&#xff01; 今天我想和大家深入探讨一个备受关注、广泛讨论的话题&#xff1a;人工智能&#xff08;AI&#xff09;及其对我们人类未来发展的影响&#xff0c;人工智能能否重塑人类文化&#xff0c;改变社会生活&#xff1f; 我…

JVM参数

GC参数 年轻代老年代参数SerialSerial Old-XX:UseSerialGCParallel ScavengeParallel Old-XX:UseParallelGC -XX:UseParallelOldGCParallel NewCMS-XX:UseParNewGC -XX:UseConcMarkSweepGCG1G1-XX:UseG1GCZGCZGC-XX:UseZGC jdk默认GC新生代老年代默认参数jdk8Parallel Scaven…

Ps 毛玻璃效果

哈喽&#xff0c;各位小伙伴&#xff01;今天我们来学习一下如何制作毛玻璃效果&#xff1f; 复制图层 导入一张图片&#xff0c;Ctrlj复制一层&#xff0c;右键—智能对象&#xff08;目的&#xff1a;方便后期更换图片&#xff09; 画矩形 画矩形(不要描边)&#xff0c;…

2023年提供优质客户服务的9种专家方法

随着我们进入 2023年&#xff0c;客户服务从未如此重要。研究表明&#xff0c;86%的客户会为良好的客户服务多支付高达 25%的费用。拥有最佳客户体验的客户比客户体验不佳的客户多花费 140%。 1.确保您拥有一支出色的客户服务团队 创造出色的客户体验意味着拥有合适的团队。但出…

Android 屏幕刷新机制与优化方案~

作者&#xff1a;阿健君 屏幕刷新机制 基本概念 刷新率&#xff1a;屏幕每秒刷新的次数&#xff0c;单位是 Hz&#xff0c;例如 60Hz&#xff0c;刷新率取决于硬件的固定参数。帧率&#xff1a;GPU 在一秒内绘制操作的帧数&#xff0c;单位是 fps。Android 采用的是 60fps&am…

小程序组件的生命周期

组件生命周期 组件的生命周期&#xff0c;指的是组件自身的一些函数&#xff0c;这些函数在特殊的时间点或遇到一些特殊的框架事件时被自动触发。 其中&#xff0c;最重要的生命周期是 created attached detached &#xff0c;包含一个组件实例生命流程的最主要时间点。 …