前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >微服务架构Day21-SpringCloud之分布式配置中心

微服务架构Day21-SpringCloud之分布式配置中心

作者头像
攻城狮Chova
发布2022-01-22 10:39:34
1710
发布2022-01-22 10:39:34
举报
文章被收录于专栏:攻城狮Chovas攻城狮Chovas

SpringCloud Config

  • SpringCloud整合了微服务中的整体解决方案:分布式配置中心,分布式锁,分布式任务调度平台,分布式事务,分布式日志收集
  • 产生背景:在微服务中如果使用传统的方式管理配置文件,配置文件管理器将会非常复杂;在生产环境中,配置文件改变时,需要重新配置war包,重新读取配置文件信息到JVM中
  • SpringCloud Config分布式配置中心:
    • 在微服务中使用同一个服务器管理所有服务配置文件信息
    • 在服务器运行的过程中,如果配置文件发生改变,不需要重启服务器就可以实时更改配置文件信息
代码语言:javascript
复制
Config配置文件的实时刷新不等同于热部署
热部署的底层实现其实还是重启服务器,不适合于生产环境,只适合于本地的开发测试

Config架构

  • 当一个系统中的配置文件发生改变的时候,需要重新启动该服务,才能使配置文件生效
  • SpringCloud Config可以实现微服务中所有系统的配置文件的统一管理,还可以实现当配置文件发生变化时,系统会自动更新获取新的配置

分布式配置中心框架

  • 阿波罗: 携程的分布式配置中心框架,有图形界面可以管理配置文件信息,配置文件信息存放在数据库中
  • SpringCloud Config: SpringCloud自带的分布式配置中心框架,没有后台可管理的分布式配置中心,配置文件信息存放在版本控制器中,如git,svn
代码语言:javascript
复制
zookeeper实现分布式配置中心,利用持久节点+事件通知实现

分布式配置中心设计原理

设计分布式配置中心的组件

  • web管理系统: 可以在web后台使用图形界面管理配置文件(SpringCloud Config没有图形化管理组件)
  • 存放分布式配置文件的服务器:
    • 使用数据库存放配置文件:Apollo
    • 使用版本控制器(git,svn等)存放配置文件信息:SpringCloud Config
  • ConfigServer: 缓存配置文件的服务器(用于缓存git服务器上的配置文件信息)
  • ConfigClient: 用于读取ConfigServer配置文件信息
代码语言:javascript
复制
存放分布式配置文件的服务器:持久化存储的服务器
ConfigServer:临时缓存存放的服务器

分布式配置中心原理

  • 用户提交配置文件信息到版本控制器:git/SVN服务器上存放
  • ConfigServer缓存从git服务器上获取到的配置文件信息
  • ConfigClient端从ConfigServer端获取配置文件信息
代码语言:javascript
复制
搭建git环境:持久化存储配置文件信息
1.新建项目
2.新建文件夹(git上的文件夹以服务进行区分)
3.把配置文件存放到git文件夹中


搭建ConfigServer环境
1.引入configServer依赖spring-cloud-config-server
2.配置文件
eureka.client.service-url.defaultZone:http://loaclhost:8100/eureka		# 注册中心服务地址
spring.application.name=config-server		# config-server服务注册别名
spring.cloud.config.server.git.url=(git文件夹url地址)	# config-server读取git项目的地址 
spring.cloud.config.server.git.search-paths=- config	# 读取配置文件的目录地址
spring.cloud.config.label=master		# 读取的分支环境
server.port=8888		# 服务端口号
3.在主类上标注@EnableEurekaClient注解注册到注册中心,标注@EnableConfigServer注解开启ConfigServer功能模块


搭建ConfigClient环境
1.引入configClient依赖spring-cloud-config-client
2.配置文件
spring.application.name=config-client		# 服务别名(要与git服务器保存的配置文件名一致)
spring.cloud.config.profile=dev				#读取的版本环境
spring.cloud.config.discovery.service-id=config-server	# 读取的configServer环境,configServer在注册中心的别名
spring.cloud.config.discovery.enable=true	# 开启读取权限
eureka.client.service-url.defaultZone=http://loaclhost:8100/eureka	#注册中心地址
server.port=8889	#服务端口号
3.创建cotroller类读取配置文件信息,标注@RestController注解和@RequestMapping注解
4.创建configClient启动类,标注@EnableEurekaClient注解注册到注册中心
  • git上创建配置文件名称规范:
    • 服务名称-环境.properties(ticket-dev.properties)

Config配置文件实时刷新

默认情况下不能实时刷新配置文件信息,需要重启服务器才能刷新配置文件,这样不是很方便

SpringCloud Config分布式配置中心支持手动刷新和自动刷新:

  • 手动刷新: 需要人工调用接口,读取最新配置文件信息--监控中心
代码语言:javascript
复制
SpringBoot Actuator监控中心
1.引入actuator依赖spring-boot-starter-actuator
2.在配置文件中开启监控端点
management.endpoints.web.exposure.include="*"		# 开启所有端点
3.启动运行configClient
4.在需要刷新的controller类中的bean当标注@RefreshScope注解使actuator刷新生效
  • 自动刷新: 消息总线进行实时通知--springbus
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2021-03-16 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • SpringCloud Config
  • Config架构
  • 分布式配置中心框架
  • 分布式配置中心设计原理
    • 设计分布式配置中心的组件
      • 分布式配置中心原理
      • Config配置文件实时刷新
      相关产品与服务
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档