springCloud 四.使用config控制 分布式配置问题

1. spring cloud config 了解

spring cloud config 为微服务架构中的各个服务提供了集中化的外部配置,配置服务器为各个不同的微服务环境提供了一个中心化的配置

简单的来说,可以将一些配置信息放在git上面,config通过方式获取git上面的配置信息,在分给需要配置的 分布式服务

解决了部署导致配置文件不好管理的问题,而且配置环境有开发环境测试环境和上线环境,用了config之后就很好的改变配置

2. config具体的使用

2.1 创建一个远程git远程库

这里就不说了,你可以创建github 或者是 码云

创建成功后 复制仓库地址

先留着之后配置需要用

2.2 创建一个新的工程子项目 关联后开始导依赖

<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>
<dependency>
	<groupId>org.springframework.cloud</groupId>
	<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>

记得最好要把这个工程绑定到euerka上面,包也有可以看我前面的文章,这里直说config

2.3 application.yml文件配置


#开放端口
server:
  port: 8989

spring:
  cloud:
    config:
      server:
        git:
          #git上的地址复制到这里
          uri: https://github.com/pretty-cat/spring-cloud-config-center.git
          #如果是私有仓库你需要登录你的账号密码(没有不用谢这两个)
          username: xxxx没有不填写
          password: 没有不写
  application:
    name: cloud-config
    
#eureka的配置
eureka:
  client:
    register-with-eureka: true
    fetch-registry: false
    service-url:
      defaultZone: http://localhost:8761/eureka/
  instance:
    prefer-ip-address: true

2.4 启动类配置

加一个注解 @EnableConfigServer

@SpringBootApplication
@EnableConfigServer
@EnableEurekaClient
public class CloudConfigApplication {
    public static void main( String[] args ) {
        SpringApplication.run(CloudConfigApplication.class, args);
    }
}

3 测试

你可先放一个yml文件放到git上,之后按步骤配置好

在浏览器输入:http://localhost:8989/application-dev.yml

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BksRnw7P-1570769926161)(7091BC22191A449DAB587C81723334E0)]

其中application为github中配置文件的文件名,dev为配置文件中application.profiles的值

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lD5L6fPp-1570769926163)(E07E41828A184F4B913449A67AC3FD84)]

如果测试没问题,说明这个子工程就搞定了

接下来我们就需要去其他需要配置放到git上的子工程操作了

4. 配置客户端

4.1 相关依赖

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

<!--主要的配置包-->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-config</artifactId>
</dependency>

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>

4.2 application.yml配置放到git上

这里注意了:

  1. 我们的子项目都有端口,所以我们为了区分最好要在appplication后加上你的端口号别搞混了
  2. 我们一个子工程的yml配置需要放3份 开发环境下的(dev) 测试的(test) 本身的(不写)
  3. 注意注意一定要分清楚

4.3 bootstrap.yml配置用来指定远端的配置

因为配置都放到远端了,所以我们需要,指定我们要的配置,而且不能用application了

创建一个bootstrap.yml

spring:
  cloud:
    config:
      name: git上的文件名                 #文件名
      profile: dev/test/pro                  #加载哪个文件
      uri: http://localhost:8989        #config服务器的地址

注意:因为application.yml文件我们放到了git中,所以我们在代码中就不需要application.yml了,可以重命名成bootstrap.yml在放入一下代码,不然会配置文件冲突导致开启不了(报一大堆到不到配置的错)

之后运行,就没问题了!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章