微服务(七) Spring Cloud Config 分布式配置中心 如何读取仓库配置? 如何创建Spring Cloud 配置中心? 各个服务如何读取配置?

要不解释一下为什么这么久吧?因为鼠标坏了,这个接口好像不至于半个多月。毕竟京东一下子就到了。哎,就是懒,我坦白了。

文章目录

  • 前言
  • 一、简介
  • 二、搭建配置中心服务
    • 创建git仓库(github)
    • 搭建配置中心config-server
    • 测试一下
    • 创建git仓库(gitee)
    • 再次测试
  • 三、获取配置中心配置
    • 添加启动器依赖
    • 修改配置文件
    • 启动测试
  • 四、扯淡


前言

我想有的人肯定会思考这样一个问题,Spring Cloud 是一个服务集群,这么多服务器,如果我们要修改一下配置就得到各个服务器上去改,这样显得很不聪明,所以Spring Cloud 也是提供了一个配置中心的组件,能够达到集中管理配置的需求。


提示:以下是本篇文章正文内容,下面案例可供参考

一、简介

在分布式系统中,由于服务非常多,配置文件分散在不同的微服务项目中,管理不方便。为了方便配置文件集中管理,需要分布式配置中心组件。在 Spring Cloud 中,提供了 Spring Cloud Config,它支持配置文件放在配置服务的本地,也支持放在远程仓库。
使用Spring Cloud Config配置中心后的架构图:
微服务(七) Spring Cloud Config 分布式配置中心 如何读取仓库配置? 如何创建Spring Cloud 配置中心? 各个服务如何读取配置?_第1张图片
配置中心本质也是一个微服务,同样需要注册到Eureka服务注册中心!

二、搭建配置中心服务

目标:创建远程公开git仓库,搭建配置中心微服务config-server

创建git仓库(github)

首先登录github,如果没有账号的话,注册一个然后登录
github
登陆好以后点击create repository 创建仓库
微服务(七) Spring Cloud Config 分布式配置中心 如何读取仓库配置? 如何创建Spring Cloud 配置中心? 各个服务如何读取配置?_第2张图片

微服务(七) Spring Cloud Config 分布式配置中心 如何读取仓库配置? 如何创建Spring Cloud 配置中心? 各个服务如何读取配置?_第3张图片
点击create a new file 创建一个新的文件
微服务(七) Spring Cloud Config 分布式配置中心 如何读取仓库配置? 如何创建Spring Cloud 配置中心? 各个服务如何读取配置?_第4张图片
创建文件的命名方式:{application}-{profile}.properties/yml
application是应用名,如我们的user
profile用于区分开发环境,测试环境,生产环境等
如user-dev.yml,表示用户微服务-开发环境下使用的配置文件
这里将user-service工程的配置文件application.yml文件的内容复制到user-dev.yml中

搭建配置中心config-server

创建新的module:config-server
加入依赖

 
    
      org.springframework.boot
      spring-boot-starter-web
    
    
    
      org.springframework.boot
      spring-boot-devtools
      true
    
    
    
      org.springframework.cloud
      spring-cloud-starter-netflix-eureka-server
      2.2.5.RELEASE
    
    
    
      org.springframework.cloud
      spring-cloud-config-server
      2.2.5.RELEASE
    

创建启动类 org.antry.ConfigServer

@SpringBootApplication
@EnableConfigServer //开启配置服务
public class ConfigServer {
     
    public static void main(String[] args) {
     
        SpringApplication.run(ConfigServer.class, args);
    }
}

配置文件 main/resources/application.yml
这里面git的uri在这里获取
微服务(七) Spring Cloud Config 分布式配置中心 如何读取仓库配置? 如何创建Spring Cloud 配置中心? 各个服务如何读取配置?_第5张图片

server:
  port: 3001
spring:
  application:
    name: config-server
  cloud:
    config:
      server:
        git:
          uri: 你的git地址
          skip-ssl-validation: true #跳过ssl验证
eureka:
  client:
    service-url:
      defaultZone: http://127.0.0.1:11111/eureka

测试一下

同样是先启动注册中心eureka,再启动configserver
微服务(七) Spring Cloud Config 分布式配置中心 如何读取仓库配置? 如何创建Spring Cloud 配置中心? 各个服务如何读取配置?_第6张图片
在控制台看到启动正常。
随后访问http://127.0.0.1:3001/user-dev.yml
微服务(七) Spring Cloud Config 分布式配置中心 如何读取仓库配置? 如何创建Spring Cloud 配置中心? 各个服务如何读取配置?_第7张图片
会报找不到,但是这个和配置没有关系(反正我仔细检查了配置是没有问题,之前我是用的github可以使用,主要就是设置成public,其他默认即可)。既然这边github用不了,所以我决定换gitee(码云)玩玩。
有的人估计要喷了,你tmd不行说个卵子。
哎,年轻人,换个仓库快的很。

创建git仓库(gitee)

大佬,网址给你安排【gitee】,其实我想说百度gitee第一个,特么自己不会百度吗。
啊,对不起,我暴躁了。
请自行注册登录
微服务(七) Spring Cloud Config 分布式配置中心 如何读取仓库配置? 如何创建Spring Cloud 配置中心? 各个服务如何读取配置?_第8张图片
这两个加号都能创建仓库
微服务(七) Spring Cloud Config 分布式配置中心 如何读取仓库配置? 如何创建Spring Cloud 配置中心? 各个服务如何读取配置?_第9张图片
主要呢就是配置public,其他随便选,目前不重要。
把git的uri换成这个
微服务(七) Spring Cloud Config 分布式配置中心 如何读取仓库配置? 如何创建Spring Cloud 配置中心? 各个服务如何读取配置?_第10张图片
依旧是新建一个文件
微服务(七) Spring Cloud Config 分布式配置中心 如何读取仓库配置? 如何创建Spring Cloud 配置中心? 各个服务如何读取配置?_第11张图片
还是命名为user-dev.yml,把user-service的配置copy过来,提交,完事。
微服务(七) Spring Cloud Config 分布式配置中心 如何读取仓库配置? 如何创建Spring Cloud 配置中心? 各个服务如何读取配置?_第12张图片

再次测试

一样是启动没有报错的话,访问http://127.0.0.1:3001/user-dev.yml
微服务(七) Spring Cloud Config 分布式配置中心 如何读取仓库配置? 如何创建Spring Cloud 配置中心? 各个服务如何读取配置?_第13张图片
这下就可以读到了吧。

三、获取配置中心配置

想必到这里,应该可以想到配置中心的作用,就是通过config-srever获取仓库中的配置,供各个服务器使用,不再使用代码中写死的配置。那么我们接下来就来实现它吧。

添加启动器依赖

因为现在要先让user-service工程使用仓库中的配置,所以先在user-sevice的pom中添加依赖

// A code block
  

    
      org.springframework.cloud
      spring-cloud-starter-config
      2.2.5.RELEASE
    

修改配置文件

删除user-service工程中resources下原本的application.yml,新建一个bootstrap.yml

spring:
spring:
  cloud:
    config:
      #要与仓库中配置文件中的application保持一致
      name: user
      #要与仓库中配置文件中的profile保持一致
      profile: dev
      #要与仓库中所属的分支一样
      label: master
      discovery:
        enabled: true #配置是否发现配置中心
        service-id: config-server #配置中心服务名
eureka:
  client:
    service-url:
      defaultZone: http://127.0.0.1:11111/eureka

这里面的name和profile与仓库中配置文件的命名息息相关。上面提到的创建文件的命名方式:{application}-{profile}.properties/yml,那么仓库中创建的配置文件是user-dev.yml因此name为user,profile为dev
分支的话,我在创建的时候就一个master分支
微服务(七) Spring Cloud Config 分布式配置中心 如何读取仓库配置? 如何创建Spring Cloud 配置中心? 各个服务如何读取配置?_第14张图片
其他还有一个配置就是注册到eureka,以及去配置中心拉取配置。

启动测试

同样是启动玩注册中心和配置中心完之后,再启动user-service工程

2021-04-13 10:26:11.954  INFO 3744 --- [  restartedMain] c.c.c.ConfigServicePropertySourceLocator : Fetching config from server at : http://DESKTOP-U7OD3DQ.localdomain:3001/
2021-04-13 10:26:12.700  INFO 3744 --- [  restartedMain] c.c.c.ConfigServicePropertySourceLocator : Located environment: name=user, profiles=[dev], label=master, version=32b9be0a05722ea618ee3bcb290320eb35394ad6, state=null
2021-04-13 10:26:12.702  INFO 3744 --- [  restartedMain] b.c.PropertySourceBootstrapConfiguration : Located property source: [BootstrapPropertySource {name='bootstrapProperties-configClient'}, BootstrapPropertySource {name='bootstrapProperties-https://gitee.com/T_Antry/springcloudconfig.git/user-dev.yml'}]

通过启动日志前三行可以看到:
第一行是找到了配置中心
第二行是读到了本地配置中配置的要去读取的配置名称和版本
第三行就通过第二行和第一行拿到的信息去获取到配置。
随后访问http://127.0.0.1:1001/user/13 ,可以看到配置生效了,我们是在仓库中配置的端口生效了。
微服务(七) Spring Cloud Config 分布式配置中心 如何读取仓库配置? 如何创建Spring Cloud 配置中心? 各个服务如何读取配置?_第15张图片

四、扯淡

在上面我们已经实现了,user-service的工程读取gitee上的配置,但是这还有个问题,就是没办法实现配置 更新,假设gitee上的配置在user-service工程已经启动之后修改的话,所修改的配置是无效的。原本是打算在这一章节中把内容讲完,但是呢,由于时间拖得比较长,且这个部分还有一部分课外内容需要带入,所以就放到下个章节再介绍一下Spring Cloud bus的内容。

你可能感兴趣的:(spring,cloud,微服务,spring,cloud,config,微服务,微服务架构,git)