springcloud - spring cloud config(配置中心)

1.理解配置中心

1.1.什么是配置中心

  • 在分布式系统中,由于服务数量巨多,为了方便服务配置文件统一管理,实时更新,所以需要分布式配置中心组件。在Spring Cloud中,有分布式配置中心组件spring cloud config ,它支持配置文件放在配置服务的本地,也支持放在远程Git仓库中。在spring cloud config 组件中,分两个角色,一是config server。

1.2.配置中心工作流程

  • 我们需要把微服务的配置文件上传到Git仓库 , 然后搭建独立的ConfigServer服务,ConfigServer除了要从Git仓库拉取配置之外,还要注册到EurekaServer中,因为ConfigServer也是一个微服务,至于ConfigClient这需要集成到具体的微服务中,如支付服务,订单服务等。其工作流程是,微服务向配中心获取配置,配置中心从GIT仓库获取配置,然后再一路返回给微服务。
  • 需要注意是,EurekaServer的配置不能交给ConfigServer管理,因为必须要先启动EurekaServer才能启动ConfigServer,试问EurekaServer都没配置怎么启动?

在这里插入图片描述

2.Git仓库管理配置

2.1.使用码云创建远程仓库

  • 我们用码云作为git仓库 ,创建码云仓库
    在这里插入图片描述
  • 创建zuul配置 在仓库中创建文件 ,我们先将zuul的配置文件赋值到码云上
    在这里插入图片描述
  • 注意复制好仓库地址,在克隆中取拷贝 , 待会搭建配置中心的时候会用到

3.搭建配置中心

3.1.搭建项目(springcloud_config_server_1060)

3.2.导入依赖

 <dependencies>
     <dependency>
         <groupId>org.springframework.cloud</groupId>
         <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
     </dependency>
     <dependency>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-web</artifactId>
     </dependency>
     <dependency>
         <groupId>org.springframework.cloud</groupId>
         <artifactId>spring-cloud-config-server</artifactId>
     </dependency>
</dependencies>

3.3.开启配置中心

/**
 * @EnableEurekaServer:开启eurekaServer服务端
 * @EnableCircuitBreaker:开启Hystrix断路器注解
 */
@SpringBootApplication
@EnableEurekaClient
@EnableConfigServer
public class ConfigServerApplicationConfig {

    public static void main(String[] args) {
        SpringApplication.run(ConfigServerApplicationConfig.class,args);
    }
}

3.4.配置文件

  • ConfigServer的配置文件做两个事情,1.注册到EurekaServer,2.配置码云地址
eureka:
  client:
    serviceUrl:
      defaultZone: http://peer1:1010/eureka/,http://peer2:1011/eureka/,http://peer3:1012/eureka/ #注册中心地址
  instance:
    prefer-ip-address: true #使用ip地址注册
    instance-id: config-server  #指定服务的id
server:
  port: 1060
spring:
  application:
    name: config-server:1060
  cloud:
    config:
      server:
        git:
          uri: https://gitee.com/wang_ha_ha_1/spring-cloud.git #配置远程仓库地址
          username: 注册的账号	#仓库是私有的需要账号
          password: 注册的密码


3.5.测试配置中心

  • 浏览器访问:http://localhost:1060/application-zuul-dev.yml 你可以看到ConfigServer从Git仓库获取到的zuul的配置文件内容如下:
    在这里插入图片描述

4.Zuul集成ConfigClient

  • 上一步骤我们已经可以通过ConfigServer从码云上获取到配置文件,我们的最终目的是能够让我们的微服务,zuul-server,order-server等都可以从ConfigServer拉取到配置文件,这里功能我们需要给微服务集成ConfigClient来实现。修改“springcloud-zuul-server-1050” zuul工程如下:

4.1.导入依赖

 <dependency>
     <groupId>org.springframework.cloud</groupId>
     <artifactId>spring-cloud-config-client</artifactId>
</dependency>

4.2.创建bootstrap.yml配置文件

  • 需要特别说明一下,虽然我们把zuul的配置文件搬到了码云上面,但是zuul本地依然需要一些基础的配置 ,在ConfigClient需要使用bootstrap.yml来作为基础配置文件,这是因为bootstrap.yml的优先级高于application.yml或者其他配置来源,我们得让微服务优先从码云上拉取配置文件后才能做其他的事情。
  • 创建配置文件 resources/bootstrap.yml,添加如下内容
#配置中心的地址
spring:
  cloud:
    config:
      uri: http://localhost:1060 #zuul要从配置中心拉取文件
      #你要拉取具体的哪个配置文件
      name: application-zuul  #配置文件名字   dev是环境
      profile: dev #环境  组成完整的文件名:application-zuul-dev.yml
      label: master #主分支
  • 提示:我们的Zuul需要从ConfigServer拉取配置文件,所以这里通过…config.uri指向配置中心地址,name属性值得是配置文件的名字 ,profile是环境名字 , name的值和profile的值合在一起组成完整的配置文件名,好处是可以修改profile的值来切换配置环境,label是git的分支,默认是master。

4.配置中心出错的问题解决

如果发现你的微服务启动不成功,有哪些问题造成:

1.配置文件拉取不到

2.配置文件拉取到了,但是配置内容有错

3.项目其他地方错误 - 不是配置文件的问题

4.1.配置拉取不到

  • 观察启动的端口是不是以8080启动的,如果是,一定是配置文件拉取不到(除非你真的就配置的是8080)排查方式:

检查配置中心服务端是否有问题

  • 检查ConfigServer启动没有,端口,地址对不对

  • 打开浏览器访问一下配置文件看能不能拉取到配置文件,如下:
    http://localhost:1060/application-zuul-dev.yml
    如果配置中心能获取到配置文件,那么错误一定在ConfigClient ,或者是内容有问题

  • 如果配置中心拉取不到配置,有两种情况,1是git地址配置错误,2.内容编码错误,格式错误导致拉取不到

  • 检查配置中心的git地址,用户名,密码是否有问题

  • 打开码云确认一下内容是否有问题,格式,编码

检查配置中心客户端-就是的拉取配置的微服务

  • 对比你的 spring.cloud.config.name 和 profile是否和码云上的配置文件一样,以及 label分支是否一致
  • 检查你的 spring.cloud.config.uri 写对了没有,是不是你的配置中心服务的地址
  • 检查你的依赖:spring-cloud-config-client导入没有,导入成功么有,按ctrl去点击一下你的依赖(或者删除本地厂库中的依赖重新下载)

4.2.配置文件拉取到了

  • 如果配置文件拉取到了,服务启动的端口应该就是你配置文件的端口,但是如果启动日志还是有异常,可以把配文件配置成本地方式来排除错误:

  • 注释掉 spring-cloud-config-client包

  • 恢复本地配置文件

    如果本地配置还是启动不能,那就是其他问题,可能是配置文件内容的问题,也可能是代码问题,根据错误日志排查

发布了33 篇原创文章 · 获赞 0 · 访问量 391

猜你喜欢

转载自blog.csdn.net/weixin_45737653/article/details/105001831