微服务架构与应用从零开始学习SpringBootspringboot

SpringCloud Config 配置中心

2018-08-30  本文已影响29人  BzCoder

好久没写了,首先依旧是相关资料以及注意事项:

简介:

分布式系统中,为了方便服务配置文件统一管理,实时更新,所以需要分布式配置中心组件。在Spring Cloud中,有分布式配置中心组件springCloud Config ,它支持从远程Git仓库中读取配置文件并存放到本地Git仓库。接下来我们来看一下服务端和客户端分别应该如何配置。

服务端

一.Maven配置

在Maven中添加eureka-client,spring-cloud-config-server

  <dependencies>
        <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>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

二.开启配置

还是老套路,添加@EnableConfigServer,@EnableDiscoveryClient注解来分别开启eureka客户端以及配置中心的服务端。

@SpringBootApplication
@EnableConfigServer
@EnableDiscoveryClient
public class ConfigApplication {

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

三.配置文件

主要就是三个设置

spring:
  application:
    name: config
  cloud:
    config:
      server:
        git:
          uri: https://github.com/BzCoder/config-repo
          username:
          password:
eureka:
  instance:
    prefer-ip-address: true
  client:
    service-url:
      defaultZone: http://localhost:8761/eureka

四.创建配置文件并访问

我们在远程仓库中创建了三个对应不同环境的配置文件order-dev.yml,order-test.yml,order-prod.yml,假如在不同环境下有很多共用的配置,我们可以再创建一个order.yml用来存放共同配置,springcloud-config取配置时,会将你的对应环境配置与order.yml合并后再返回。在远程仓库文件配置完毕后,我们就可以直接访问http://localhost:8080/order-dev.yml来获取配置信息。当然我们可以更改文件后缀名来修改配置文件的展现方式,如.json,.properites。

配置文件的路径规则:

/{label}/{name}-{profiles}.{type}

在启动后我们可以看到日志

Adding property source: file:/C:/Users/Administrator/AppData/Local/Temp/config-repo-9115656602637453229/order-dev.yml

这样就把远程仓库的配置文件保存在本地路径Git了。假如需要设置保存到指定路径的话,可以在配置文件中加入basedir。

  server:
        git:
          uri: https://github.com/BzCoder/config-repo
          username:
          password:
          basedir:  D:/Config/basedir

至此服务端就配置完毕了,当然如果你需要保持他高可用性,可以配置ConfigSever集群,只需要配置到不同地址即可。

客户端

一.Maven配置

在Maven中添加eureka-client,config-server

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

二.开启服务发现

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

三.配置文件

在配置文件上就比较讲究了,我们需要创建一个bootstrap.yml.bootstrap的意思是引导程序,我们需要将Eureka的配置信息写到bootstrap中。这里也提一下配置加载的顺序是:

  1. bootstrap 2.远程config的配置 3.application

bootstrap.yml文件

spring:
  application:
    name: client
  cloud:
    config:
      discovery:
        enabled: true
        service-id: CONFIG
      profile: dev
eureka:
  instance:
    prefer-ip-address: true
  client:
    service-url:
      defaultZone: http://localhost:8762/eureka/

配置文件中name对应配置文件的名称,profile对应环境,service-id对应我们配置中心的服务名称。

四.测试

最后我们写一个测试接口,查看是否能正确的读取配置中心的数据:

@RestController
public class ConfigController {
    @Value("${env}")
    private String env;

    @GetMapping("/env")
    public String getEnv()
    {
        return env;
    }
访问成功

到此对于SpringCloud Config的初步学习就到这里了

上一篇下一篇

猜你喜欢

热点阅读