web后端-SpringCloud-Config分布配置

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS PostgreSQL,集群系列 2核4GB
简介: web后端-SpringCloud-Config分布配置

N.1 SpringCloudConfig介绍

1)Spring Cloud Config 为微服务架构中的微服务提供 集中式的外部配置支持, 配置服务器为各个不同微服务应用的所有环境提供了一个中心化的外部配置

————————————————————————

————————————————————————

2)Spring Cloud Config 分为 服务端与客户端 两个部分:

(1)服务端 config server:

也称为分布式配置中心,它是一个独立的微服务应用,用来连接配置服务器并为客户端提供获取配置信息,加密、解密信息等访问接口。配置服务器官方推荐采用 Git 来存储配置信息,这样就有助于对环境配置进行版本管理,并且可通过Git客户端工具来方便的管理与访问配置信息。

(2)客户端 config client:

通过指定的服务端来管理服务的资源,以及与业务相关的配置内容,并在启动的时候从服务端获取和加载配置信息。

3)作用

(1)集中管理配置文件

(2)不同环境不同配置,动态化的配置更新,根据不同环境部署,如 dev/test/prod

(3)运行期间动态调整配置,不再需要在每个服务部署的机器上编写配置,服务会向配置中心统一拉取自已的配置信息.

(4)当配置发生变动时,服务不需要重启即可感知到配置的变化并使用修改后的配置信息

(5)将配置信息以REST接口的形式暴露

4)与 GitHub 整合配置信息

由于 Spring Cloud Config 官方推荐使用Git来管理配置文件(也可支持其他方式,如:SVN和本地文件),

而且使用https/http访问的形式。

N.2 Config的服务端和客户端配置

N.2.1 创建配置文件与提交Github

———————————————————————— ————————————————————————

————————————————————————

1)git 命令远程窗口克隆复制命令,将远程的窗口复制到本地:

git clone https://github.com/mengxuegu/microservice-cloud-config.git

注意 先在桌面创建好文件夹,方便整理。

————————————————————————

————————————————————————

————————————————————————

————————————————————————

2)将 application.yml 推送到 github 远程库

$ cd microservice-cloud-config

# 添加到暂存区

$ git add microservice-config-application.yml

# 提交到本地库

$ git commit -m "first commit" microservice-config-application.yml

# 推送到远程库origin 的 master 主分支上

$ git push origin master

————————————————————————

————————————————————————

————————————————————————

N.2.2 新建Config服务端模块

1)配置读取规则:

(1)/{application}-{profile}.yml

[1] /读取的配置文件名-环境配置项 (默认为master分支)

[2] 如:http://localhost:5001/microservice-config-application-dev.yml

(2)/{application}/{profile}[/{label}]

[1] /读取的配置文件名/环境配置项/分支名

[2] 如:http://localhost:5001/microservice-config-application/dev/master

(3)/{label}/{application}-{profile}.yml

[1] /分支名/读取的配置文件名/环境配置项

[2] 如:http://localhost:5001/master/microservice-config-application-dev.yml

2)microservice-cloud-11-config-server-5001代码

server:

port: 5001

spring:

application:

name: microservice-config

cloud:

config:

server:

git: # 远程库的git地址

uri: https://github.com/HMTX1/microservice-cloud-config.git

import org.springframework.boot.SpringApplication;

import org.springframework.boot.autoconfigure.SpringBootApplication;

import org.springframework.cloud.config.server.EnableConfigServer;

//开启配置中心功能

@EnableConfigServer //开启配置中心功能

@SpringBootApplication

public class ConfigServer_5001 {

public static void main(String[] args) {

SpringApplication.run(ConfigServer_5001.class, args);

}

}

————————————————————————

————————————————————————

————————————————————————

————————————————————————

————————————————————————

N.2.3 Config客户端服务

1)application.yml

server:

port: 8080 #默认是8080,但是 如果读取了github的文件 就会覆盖

spring:

application:

name: microservice-config-client

2)bootstrap.yml

spring:

cloud:

config:

name: microservice-config-application #github上的配置名称,注意没有yml后缀名

profile: prod #本次访问的环境配置项 那么使用的端口就是为4002 会覆盖8080

label: master #远程库的分支名

uri: http://localhost:5001 #Config配置中心地址,通过它获取microservice-configapplication.yml配置信息

import org.springframework.beans.factory.annotation.Value;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.RestController;

@RestController

public class ConfigClient {

//会从github中的microservice-config-application.yml中获取

@Value("${spring.application.name}") //注意 远程文件 不能背直接加载,所以 ,是通过本地的文件 简介加载的 所以才可以反问

private String applicationName;

@Value("${server.port}")

private String port;

//请求访问

@RequestMapping("/config")

public String getConfig() {

String content = "applicationName:" + applicationName + ", port:" + port;

System.out.println("content: " + content);

return content;

}

}

import org.springframework.boot.SpringApplication;

import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication

public class ConfigClient_8080 {

public static void main(String[] args) {

SpringApplication.run(ConfigClient_8080.class, args);

}

}

————————————————————————

———————————————————————— ————————————————————————

N.3 Config配置实战

N.3.1 本地文件存到github

1)microservice-config-eureka.yml

#注意:如果在记事本上编写,下面的缩进不要使用Tab来缩进,不然报错

spring:

profiles:

active: dev # 激活开发环境配置

---

server:

port: 6001 #端口号

spring:

profiles: dev # 开发环境

application:

name: microservice-config-eureka

eureka:

instance:

hostname: eureka6001.com

client:

registerWithEureka: false

fetchRegistry: false

serviceUrl:

defaultZone: http://eureka6001.com:6001/eureka/

server:

enable-self-preservation: false # 禁用自我保护机制*****************

---

server:

port: 6001 #端口号

spring:

profiles: prod # 生产环境

application:

name: microservice-config-eureka

eureka:

instance:

hostname: eureka6001.com

client:

registerWithEureka: false

fetchRegistry: false

serviceUrl:

defaultZone: http://eureka6001.com:6001/eureka/

server:

enable-self-preservation: true # 开启自我保护机制*****************

#保存时注意,选择 UTF-8 保存

2)microservice-config-product.yml

#注意:如果在记事本上编写,下面的缩进不要使用Tab来缩进,不然报错

spring:

profiles:

active: dev # 激活开发环境配置

---

server:

port: 8001

mybatis:

config-location: classpath:mybatis/mybatis.cfg.xml

type-aliases-package: com.mengxuegu.springcloud.entities

mapper-locations: classpath:mybatis/mapper/**/*.xml

spring:

profiles: dev # 开发环境

application:

name: microservice-product-config # ******服务名*******

datasource:

type: com.alibaba.druid.pool.DruidDataSource

driver-class-name: com.mysql.cj.jdbc.Driver

url: jdbc:mysql://127.0.0.1:3306/springcloud_db01?serverTimezone=GMT%2B8 #数据库连接地址,*****注意库名 db01***************

username: root

password: a

dbcp2:

min-idle: 5

initial-size: 5

max-total: 5

max-wait-millis: 150

eureka:

client:

registerWithEureka: true

fetchRegistry: true

serviceUrl:

defaultZone: http://eureka6001.com:6001/eureka

instance:

instanceId: ${spring.application.name}:${server.port}

prefer-ip-address: true

---

server:

port: 8001

mybatis:

config-location: classpath:mybatis/mybatis.cfg.xml

type-aliases-package: com.mengxuegu.springcloud.entities

mapper-locations: classpath:mybatis/mapper/**/*.xml

spring:

profiles: prod # 生产环境

application:

name: microservice-product-config # ******服务名*******

datasource:

type: com.alibaba.druid.pool.DruidDataSource

driver-class-name: com.mysql.cj.jdbc.Driver

url: jdbc:mysql://127.0.0.1:3306/springcloud_db02?serverTimezone=GMT%2B8 #数据库连接地址,*****注意库名 db02***************

username: root

password: a

dbcp2:

min-idle: 5

initial-size: 5

max-total: 5

max-wait-millis: 150

eureka:

client:

registerWithEureka: true

fetchRegistry: true

serviceUrl:

defaultZone: http://eureka6001.com:6001/eureka

instance:

instanceId: ${spring.application.name}:${server.port}

prefer-ip-address: true

————————————————————————

————————————————————————

————————————————————————

N.3.2 构建Config版的Eureka和Product

————————————————————————

————————————————————————

————————————————————————

————————————————————————

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
2月前
|
算法 安全 Java
微服务(四)-config配置中心的配置加解密
微服务(四)-config配置中心的配置加解密
|
14天前
|
JavaScript 前端开发 应用服务中间件
vue前端开发中,通过vue.config.js配置和nginx配置,实现多个入口文件的实现方法
vue前端开发中,通过vue.config.js配置和nginx配置,实现多个入口文件的实现方法
85 0
|
19天前
|
机器学习/深度学习 移动开发 自然语言处理
基于人工智能技术的智能导诊系统源码,SpringBoot作为后端服务的框架,提供快速开发,自动配置和生产级特性
当身体不适却不知该挂哪个科室时,智能导诊系统应运而生。患者只需选择不适部位和症状,系统即可迅速推荐正确科室,避免排错队浪费时间。该系统基于SpringBoot、Redis、MyBatis Plus等技术架构,支持多渠道接入,具备自然语言理解和多输入方式,确保高效精准的导诊体验。无论是线上医疗平台还是大型医院,智能导诊系统均能有效优化就诊流程。
|
2月前
|
JavaScript
Vue3基础(19)___vite.config.js中配置路径别名
本文介绍了如何在Vue 3的Vite配置文件`vite.config.js`中设置路径别名,以及如何在页面中使用这些别名导入模块。
57 0
Vue3基础(19)___vite.config.js中配置路径别名
|
21天前
|
前端开发 JavaScript
vite vue3 config配置
【10月更文挑战第5天】
40 0
|
3月前
|
移动开发 JavaScript 前端开发
UniApp H5 跨域代理配置并使用(配置manifest.json、vue.config.js)
这篇文章介绍了在UniApp H5项目中处理跨域问题的两种方法:通过修改manifest.json文件配置h5设置,或在项目根目录创建vue.config.js文件进行代理配置,并提供了具体的配置代码示例。
UniApp H5 跨域代理配置并使用(配置manifest.json、vue.config.js)
|
3月前
|
JSON 前端开发 JavaScript
vue.config.js配置详解
【8月更文挑战第16天】vue.config.js配置详解
46 1
vue.config.js配置详解
|
3月前
|
安全 Java 数据库连接
后端框架的学习----mybatis框架(3、配置解析)
这篇文章详细介绍了MyBatis框架的核心配置文件解析,包括环境配置、属性配置、类型别名设置、映射器注册以及SqlSessionFactory和SqlSession的生命周期和作用域管理。
后端框架的学习----mybatis框架(3、配置解析)
|
3月前
|
JSON 缓存 监控
go语言后端开发学习(五)——如何在项目中使用Viper来配置环境
Viper 是一个强大的 Go 语言配置管理库,适用于各类应用,包括 Twelve-Factor Apps。相比仅支持 `.ini` 格式的 `go-ini`,Viper 支持更多配置格式如 JSON、TOML、YAML
go语言后端开发学习(五)——如何在项目中使用Viper来配置环境
|
3月前
|
前端开发 开发者 Apache
揭秘Apache Wicket项目结构:如何打造Web应用的钢铁长城,告别混乱代码!
【8月更文挑战第31天】Apache Wicket凭借其组件化设计深受Java Web开发者青睐。本文详细解析了Wicket项目结构,帮助你构建可维护的大型Web应用。通过示例展示了如何使用Maven管理依赖,并组织页面、组件及业务逻辑,确保代码清晰易懂。Wicket提供的页面继承、组件重用等功能进一步增强了项目的可维护性和扩展性。掌握这些技巧,能够显著提升开发效率,构建更稳定的Web应用。
93 0