spring cloud之配置中心

news2024/11/28 14:38:30

Config 统一配置中心(*)

1.简介
# 统一配置中心
- 官网:https://cloud.spring.io/spring-cloud-static/spring-cloud-config/2.2.3.RELEASE/reference/html/#_spring_cloud_config_server

- config 分为 config server 和 config client。用来统一管理所有微服务的配置
  • 统一配置中心流程图
    在这里插入图片描述
2.config server 开发
  • 引入依赖
<!-- config server -->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-config-server</artifactId>
</dependency>

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- 健康检查 -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<!-- consul 注册中心 -->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-consul-discovery</artifactId>
</dependency>
  • 配置文件
server.port=8555
# 服务名
spring.application.name=CONFIG-SERVER

# consul 注册中心地址
spring.cloud.consul.host=localhost
spring.cloud.consul.port=8500

# gitee 仓库地址
spring.cloud.config.server.git.uri=https://gitee.com/lwwby/config-center.git
# 指定默认拉取配置信息的分支名
spring.cloud.config.server.default-label=master
# 如果仓库是私有的,需要配置用户名和密码
#spring.cloud.config.username=
#spring.cloud.config.password=
  • 启动类添加注解@EnableConfigServer
@SpringBootApplication
@EnableDiscoveryClient
@EnableConfigServer
public class ConfigServerApplication {

}
3.config client 开发

config client也就是一个个具有实际业务含义的微服务,例如order服务,user服务

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

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- 健康检查 -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<!-- consul 注册中心 -->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-consul-discovery</artifactId>
</dependency>
  • 以gitee作为仓库,在gitee上新建仓库config-center

分别新建 configclient.properties、 configclient-dev.properties、 configclient-test.properties。

在实际开发中,建议以服务名命名,例如order-dev.properties/order-dev.yml
在这里插入图片描述
在这里插入图片描述

  • 项目中配置文件需要命名为bootstrap.properties/bootstrap.yml,容器启动时bootstrap.properties/bootstrap.yml命名会比application.properties/application.yml命名优先加载(先要去配置中心拉去配置到本地缓存)。

    bootstrap.properties 项目本地配置

    # 开启配置发现
    spring.cloud.config.discovery.enabled=true
    # 指定配置中心服务ID,去注册中心获取
    spring.cloud.config.discovery.service-id=CONFIG-SERVER
    
    # consul 注册中心地址
    spring.cloud.consul.host=localhost
    spring.cloud.consul.port=8500
    
    # 指定拉取配置文件的分支
    spring.cloud.config.label=master
    # 指定拉取配置文件的名称
    spring.cloud.config.name=configclient
    # 指定拉取配置文件的环境
    spring.cloud.config.profile=test
    

    测试代码

    @RestController
    public class ConfigController {
    
        @Value("${name}")
        private String name;
    
        @GetMapping("/demo")
        public String demo() {
            return name;
        }
    }
    

    如果命名为application.properties/application.yml,config client启动会报错,ConfigController无法注入name属性(配置文件信息还未加载到本地)

  • 启动类,引入config-client依赖即可,无需加额外注解

@SpringBootApplication
@EnableDiscoveryClient
public class ConfigClientApplication {

}

config server启动后,可以通过地址获取配置信息,例如:http://localhost:8555/configclient-dev.properties
在这里插入图片描述

配置信息= configclient.properties(默认会获取到) + configclient-dev.properties

4.手动配置刷新
- 当远端git仓库中配置发生变化时,不需要重启微服务,就可以读取到修改之后的最新配置信息
  • 1.在需要刷新的类上添加注解@RefreshScope
// 添加注解@RefreshScope,仅作用于当前类ConfigController的配置刷新
@RestController
@RefreshScope
public class ConfigController {

    @Value("${name}")
    private String name;

    @GetMapping("/demo")
    public String demo() {
        return name;
    }
}
  • 2.开启刷新端点
# 注意properties格式为*,yml格式为"*"
# /actuator/refresh端点默认是不开启的。"*"代表开启所有端点
management.endpoints.web.exposure.include=*
  • 3.修改完远端git仓库配置后,向需要刷新配置的微服务发送一个POST请求
- 使用post
http://localhost:8655/actuator/refresh

- 命令行终端
curl -X POST http://localhost:8655/actuator/refresh

在这里插入图片描述

5.Bus组件
- 官方文档: https://spring.io/projects/spring-cloud-bus

- spring cloud bus使用轻量级消息代理将分布式系统的节点连接起来。然后可以使用它来广播状态更改(例如配置更改)或其他管理命令。AMQP和kafka broker(中间件)实现包含在项目中。或者,在类路径上找到任何spring cloud stream绑定器都可以作为传输使用。

- bus称之为spring cloud中消息总线,主要用来在微服务系统中实现远端配置更新时,通过广播形式通知所有客户端刷新配置信息,避免手动重启服务来刷新配置
  • 实现配置刷新原理
    在这里插入图片描述

  • 安装RabbitMQ(todo)

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

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

相关文章

超过5000+企业使用的ETL平台

在当今数据驱动的时代&#xff0c;ETL&#xff08;Extract, Transform, Load&#xff09;工具扮演着关键角色&#xff0c;而ETLCloud作为一款脱颖而出的数据集成平台&#xff0c;正以其独特的特性和强大的功能&#xff0c;成为当前国内最活跃的数据集成平台&#xff0c;目前用户…

2023.11.17 -hivesql调优,数据压缩,数据存储

目录 1.hive命令和参数配置 2.hive数据压缩 3.hive数据存储 0.原文件大小 18.1MB 1.textfile行存储格式, 压缩后size:18MB 2.行存储格式:squencefile ,压缩后大小8.89MB​ 3. 列存储格式 orc - ZILIB ,压缩后大小2.78MB 4.列存储格式 orc-snappy ,压缩后大小3.75MB 5…

springboot327基于Java的医院急诊系统

交流学习&#xff1a; 更多项目&#xff1a; 全网最全的Java成品项目列表 https://docs.qq.com/doc/DUXdsVlhIdVlsemdX 演示 项目功能演示&#xff1a; ————————————————

kafka分布式安装部署

1.集群规划 2.集群部署 官方下载地址&#xff1a;http://kafka.apache.org/downloads.html &#xff08;1&#xff09;上传并解压安装包 [zhangflink9wmwtivvjuibcd2e package]$ tar -zxvf kafka_2.12-3.3.1.tgz -C ../software/&#xff08;2&#xff09;修改解压后的文件…

java 批量更改

直接上代码 void batchUpdateSpecificationId(Param("infos") List<GoodsInfo> infos);<update id"batchUpdateSpecificationId">update goods_infoset specification_id <foreach collection"infos" item"info" open&…

跨界融合 开放共享∣2023中国林草经济发展博鳌大会即将开启

2023第二届中国林草经济发展博鳌大会&#xff08;以下简称“2023 林草大会”&#xff09;将于11月19-20日在海南博鳌亚洲论坛国际会议中心盛大开幕。本次活动由海南省商务厅、海南省林业局支持&#xff0c;中国林业产业联合会、中国林产工业协会、华侨茶业发展研究基金会、北京…

Python语言:面向对象——类与对象初体验

什么是面向对象的编程思想&#xff1f; 我就知道他是一种编程思想&#xff0c;因资历尚浅&#xff0c;没有悟到面向对象的精髓和奥秘所在&#xff0c;只好援引一下chatgpt给我的答案了。 接下来到了分析类与对象的实质是什么了&#xff0c;这个我倒是知道&#xff0c;以下是我的…

数据加解密系统(揭秘数据解密的关键技术)

数据加解密系统是一种用于保护数据安全的系统&#xff0c;它可以将数据加密以防止未经授权的访问和数据泄露&#xff0c;同时也可以将已加密的数据解密以供授权用户使用。 随着网络技术和电子商务的不断发展&#xff0c;数据安全问题越来越受到人们的关注。数据加解密系统被广泛…

C/C++预定义宏、 #line 、#error、 #pragma和泛型选择

文章目录 预定义宏_ _func_ _是C语言的预定义标识符 #line和#error#pragma泛型选择&#xff08;C11&#xff09;参考 预定义宏 C标准规定了一些预定义宏&#xff1a; _ _func_ _是C语言的预定义标识符 C99 标准提供一个名为_ _func_ _的预定义标识符&#xff0c;它展开为一…

无线WiFi安全渗透与攻防(十二)之WPA-自动化渗透WPA加密

WPA-自动化渗透WPA加密 WPA-自动化渗透WPA加密WPA-自动化渗透WPA加密 ip a1.开启监听模式 airmon-ng start wlan02.指定密码破解 wifite --dict passwd.txt --dict:</

11月编程语言排行榜出炉:C#超越Java已成定局!

TIOBE最新的编程语言排行榜刚刚出炉了&#xff0c;本月Java依然大幅下跌3.63%&#xff0c;C#本月上涨3.4%&#xff0c;C#和Java仅相差0.7%。 就像网友评论说的&#xff1a;Java成于互联网的兴起&#xff0c;败于互联网的衰落。 一直以来我也都是从事互联网行业、主要是电商行业…

分享一个图像轮播效果

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站。 话不多说&#xff0c;先看效果&#xff1a; 根据图片的播放&#xff0c;页面背景会被替换为当前图片。 老规矩&#xff0c;源码自己拿…

Mysql-体系结构

MySQL体系结构 1). 连接层 最上层是一些客户端和链接服务&#xff0c;包含本地sock 通信和大多数基于客户端/服务端工具实现的类似于 TCP/IP的通信。主要完成一些类似于连接处理、授权认证、及相关的安全方案。在该层上引入了线程 池的概念&#xff0c;为通过认证安全接入的客…

【第2章 Node.js基础】2.7 Node.js 的流(一)可写流

&#x1f308;可写流 &#x1f680;什么是可写流 可写流是对数据被写入的目的地的一种抽象。 所有可写流都实现了 stream.Writable类定义的接口。 可写流的例子包括&#xff0c;也都是实现了可写流接口的双工流 客户端的 HTTP 请求、服务器的HTTP 响应、fs 的写入流、zlib…

VC6.0 添加CMarkup文件,程序编译不成功

报错信息 Generating Code... Linking...Creating library Release/Iodevcfg.lib and object Release/Iodevcfg.exp ItemConfigDlg.obj : error LNK2001: unresolved external symbol "public: __thiscall CMarkup::~CMarkup(void)" (??1CMarkupQAEXZ) ItemConfigD…

免费最强下载工具IDM,没有之一

IDM(Internet Download Manager)下载工具是我见过的最强下载工具&#xff0c;没有之一。主要以下特点&#xff1a; 下载程度超快实时检测下载行为下载任何文件探测视频下载地址&#xff0c;几分钟下载高清视频可多进程下载&#xff0c;可多线程下载 IDM官网地址&#xff1a;下…

《C++ Primer》第9章 顺序容器(二)

参考资料&#xff1a; 《C Primer》第5版《C Primer 习题集》第5版 9.3 顺序容器操作&#xff08;P305&#xff09; 9.3.1 向容器中添加元素&#xff08;P305&#xff09; 使用push_back 除 array 和 forward_list 外&#xff0c;每个顺序容器都支持 push_back &#xff1a…

MTK联发科MT8766核心板 4G智能模块安卓开发板方案定制

MT8766 是一款基于 MTK 平台工业级高性能、可运行 android12.0 操作系统的 4G智能模块,三款模块硬件是相互兼容&#xff0c;支持 LTE-FDD&#xff08;CAT-7&#xff09;/LTE-TDD&#xff08;CAT-7&#xff09;/WCDMA/TD-SCDMA/EVDO/GSM 等多种制式&#xff1b;支持 WiFi5 802.1…

(Matalb分类预测)WOA-BP鲸鱼算法优化BP神经网络的多维分类预测

目录 一、程序及算法内容介绍&#xff1a; 基本内容&#xff1a; 亮点与优势&#xff1a; 二、实际运行效果&#xff1a; 三、部分程序&#xff1a; 四、完整代码数据使用手册下载&#xff1a; 一、程序及算法内容介绍&#xff1a; 基本内容&#xff1a; 本代码基于Matalb…