SpringCloud(八)| Spring Cloud Config 高可用的分布式配置中心

  • spring cloud
  • 2019-04-21 22:23:53
  • 浏览 1029
简介一个服务如何从配置中心读取文件,配置中心如何从远程git读取配置文件,当服务实例很多时,都从配置中心读取文件,这时可以考虑将配置中心做成一个微服务,将其集群化,从而达到高可用,架构图如下选中maven主项目,添加module,命名为eureka-server-config。配置项目application.properties。server.port=8889 eureka.instance.hostname=localhost eureka.server.renewal-percent-th<!--autointro-->

一个服务如何从配置中心读取文件,配置中心如何从远程git读取配置文件,当服务实例很多时,都从配置中心读取文件,这时可以考虑将配置中心做成一个微服务,将其集群化,从而达到高可用,架构图如下

2279594-babe706075d72c58.png

选中maven主项目,添加module,命名为eureka-server-config。

image.png

配置项目application.properties。

server.port=8889
eureka.instance.hostname=localhost
eureka.server.renewal-percent-threshold=0.49
eureka.client.fetch-registry=false
eureka.client.register-with-eureka=false
eureka.client.service-url.defaultZone=http://${eureka.instance.hostname}:${server.port}/eureka/

编辑项目启动类EurekaServerConfigApplication。

@SpringBootApplication
@EnableEurekaServer
public class EurekaServerConfigApplication {

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

运行项目,浏览器访问http://localhost:8889/

image.png

修改原来的config-server工程,加入EurekaClient依赖。

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

修改配置文件application.properties,指定服务注册地址为http://localhost:8889/eureka/。

server.port=8888
spring.application.name=config-server

spring.cloud.config.server.git.uri=https://github.com/365D1/SpringcloudConfig.git
spring.cloud.config.server.git.search-paths=respo
spring.cloud.config.label=master
spring.cloud.config.server.git.username=
spring.cloud.config.server.git.password=

eureka.client.serviceUrl.defaultZone=http://localhost:8889/eureka/

修改启动类文件ConfigServerApplication,加入@EnableEurekaClient。

@SpringBootApplication
@EnableConfigServer
@EnableEurekaClient
public class ConfigServerApplication {

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

运行项目。

image.pngimage.png


修改工程config-client,添加EurekaClient依赖。

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

修改配置文件application.properties。

server.port=8881
spring.application.name=config-client
spring.cloud.config.label=master
spring.cloud.config.profile=dev
#spring.cloud.config.uri= http://localhost:8888/

eureka.client.serviceUrl.defaultZone=http://localhost:8889/eureka/
spring.cloud.config.discovery.enabled=true
spring.cloud.config.discovery.service-id=config-server

修改启动类文件ConfigClientApplication,加入@EnableEurekaClient。

@SpringBootApplication
@RestController
@EnableEurekaClient
public class ConfigClientApplication {

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

    @Value("${foo}")
    String foo;

    @RequestMapping(value = "/hi")
    public String hi(){
        return foo;
    }

}
  • spring.cloud.config.discovery.enabled 是从配置中心读取文件。

  • spring.cloud.config.discovery.serviceId 配置中心的servieId,即服务名。

这时发现,在读取配置文件不再写ip地址,而是服务名,这时如果配置服务部署多份,通过负载均衡,从而高可用。

运行工程。

image.png

访问http://localhost:8881/hi 显示

foo version 3


文章评论