• 售前

  • 售后

热门帖子
入门百科

七、config 配置中心

[复制链接]
我是的十八簿 显示全部楼层 发表于 2022-1-14 06:41:29 |阅读模式 打印 上一主题 下一主题
为什么需要配置中心

单体应用,配置写在配置文件中,没有什么大问题。如果要切换环境 可以切换不同的profile(2种方式),但在微服务中。

  • 微服务比较多。成百上千,配置很多,需要集中管理。
  • 管理不同环境的配置。
  • 需要动态调整配置参数,更改配置不停服。
配置中心介绍

分布式配置中心包括3个部分:

  • 存放配置的地方:git ,本地文件 等。
  • config server。从 1 读取配置。
  • config client。是 config server 的客户端 消费配置。
服务搭建

基于GITHUB


  • 创建仓库

    登录GitHub创建仓库,并上传几个配置文件
  • 新建微服务作为配置中心服务
    依赖
  1.                 <dependency>
  2.                         <groupId>org.springframework.cloud</groupId>
  3.                         <artifactId>spring-cloud-config-server</artifactId>
  4.                 </dependency>
  5.                
  6.                 <dependency>
  7.                         <groupId>org.springframework.cloud</groupId>
  8.                         <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
  9.                 </dependency>
复制代码
配置文件
  1. spring.cloud.config.server.git.uri=https://github.com/piziniao/config-center.git
  2. spring.cloud.config.label=master
  3. eureka.client.service-url.defaultZone=http://euk1.com:7002/eureka/
复制代码
启动类
  1. package com.mashibing.admin;
  2. import org.springframework.boot.SpringApplication;
  3. import org.springframework.boot.autoconfigure.SpringBootApplication;
  4. import org.springframework.cloud.config.server.EnableConfigServer;
  5. @EnableConfigServer
  6. @SpringBootApplication
  7. public class AConfigApplication {
  8.         public static void main(String[] args) {
  9.                 SpringApplication.run(AConfigApplication.class, args);
  10.         }
  11. }
复制代码

  • 启动测试拉取
启动服务后访问服务
http://localhost:70/master/config-client-dev.properties
正确配置后能读到来自git的配置文件
匹配规则

  1. <code>获取配置规则:根据前缀匹配
  2. /{name}-{profiles}.properties
  3. /{name}-{profiles}.yml
  4. /{name}-{profiles}.json
  5. /{label}/{name}-{profiles}.yml
  6. name 服务名称
  7. profile 环境名称,开发、测试、生产:dev qa prd
  8. lable 仓库分支、默认master分支
  9. 匹配原则:从前缀开始。
复制代码
分支读取
客户端配置

修改 application.properties为bootstrap.properties
  1. #直接URL方式查找配置中心
  2. spring.cloud.config.uri=http://localhost:9999/
  3. #通过注册中心查找
  4. #spring.cloud.config.discovery.enabled=true
  5. #spring.cloud.config.discovery.service-id=a-config
  6. spring.cloud.config.profile=dev
  7. spring.cloud.config.label=dev
复制代码
引入依赖
  1.                 <dependency>
  2.                         <groupId>org.springframework.cloud</groupId>
  3.                         <artifactId>spring-cloud-config-client</artifactId>
  4.                 </dependency>
复制代码
使用远程配置
  1.         @Value("${config.info}")
  2.         String info;
复制代码
consumer-dev.properties
  1. config.info="config-dev,v1"
复制代码
刷新配置

手动配置热更新


  • 开启actuator中的refresh端点
  • Controller中添加@RefreshScope注解
  • 向客户端 url http://localhost:91/actuator/refresh发送Post请求
自动刷新

erlang安装
http://www.erlang.org/downloads
RabbitMQ安装
http://www.rabbitmq.com/install-windows.html
环境变量
path中添加 %ERLANG_HOME%\bin
  1. <code># 开启RabbitMQ节点
  2. rabbitmqctl start_app
  3. # 开启RabbitMQ管理模块的插件,并配置到RabbitMQ节点上
  4. rabbitmq-plugins enable rabbitmq_management
复制代码
管理界面
http://localhost:15672
用户名密码均为guest
服务配置
配置文件
  1. spring.rabbitmq.host=localhost
  2. spring.rabbitmq.port=5672
  3. spring.rabbitmq.username=guest
  4. spring.rabbitmq.password=guest
复制代码
依赖
  1.                 <dependency>
  2.                         <groupId>org.springframework.cloud</groupId>
  3.                         <artifactId>spring-cloud-starter-bus-amqp</artifactId>
  4.                 </dependency>
复制代码
测试
启动两个微服务
修改配置文件后向其中一个端点发送post请求
http://localhost:91/actuator/bus-refresh
观察另一个服务是否也跟着刷新了
完整配置
  1. #################################### common config : ####################################spring.application.name=a-config# 应用服务web访问端口server.port=9999# ActuatorWeb访问端口management.server.port=8081management.endpoints.jmx.exposure.include=*management.endpoints.web.exposure.include=*management.endpoint.health.show-details=alwaysspring.cloud.config.server.git.uri=https://github.com/piziniao/config-center.git
  2. spring.cloud.config.label=master
  3. eureka.client.service-url.defaultZone=http://euk1.com:7002/eureka/spring.rabbitmq.host=localhost
  4. spring.rabbitmq.port=5672
  5. spring.rabbitmq.username=guest
  6. spring.rabbitmq.password=guest
复制代码
启动类
  1. @EnableConfigServer
复制代码
依赖
  1.                 <dependency>
  2.                         <groupId>org.springframework.cloud</groupId>
  3.                         <artifactId>spring-cloud-starter-bus-amqp</artifactId>
  4.                 </dependency>                                                                                org.springframework.boot                        spring-boot-starter-actuator                                                                                        org.springframework.cloud                        spring-cloud-config-server               
复制代码
Consumer
bootstrap.properties
  1. spring.cloud.config.discovery.enabled=truespring.cloud.config.discovery.service-id=a-configspring.cloud.config.profile=devspring.cloud.config.label=devspring.rabbitmq.host=localhost
  2. spring.rabbitmq.port=5672
  3. spring.rabbitmq.username=guest
  4. spring.rabbitmq.password=guest
复制代码
依赖
  1.                 <dependency>
  2.                         <groupId>org.springframework.cloud</groupId>
  3.                         <artifactId>spring-cloud-starter-bus-amqp</artifactId>
  4.                 </dependency>                                                        org.springframework.boot                        spring-boot-starter-actuator                                                <dependency>
  5.                         <groupId>org.springframework.cloud</groupId>
  6.                         <artifactId>spring-cloud-config-client</artifactId>
  7.                 </dependency>
复制代码
远程配置
consumer-dev.properties
  1. config.info="config-dev,v8"
复制代码
来源:https://blog.caogenba.net/fangchao2011/article/details/122453591
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

帖子地址: 

回复

使用道具 举报

分享
推广
火星云矿 | 预约S19Pro,享500抵1000!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

草根技术分享(草根吧)是全球知名中文IT技术交流平台,创建于2021年,包含原创博客、精品问答、职业培训、技术社区、资源下载等产品服务,提供原创、优质、完整内容的专业IT技术开发社区。
  • 官方手机版

  • 微信公众号

  • 商务合作