文档章节

spring cloud config-server 高可用配置中心

zhu_kai1
 zhu_kai1
发布于 2017/05/04 13:50
字数 873
阅读 514
收藏 0

spring cloud config 简介

Spring Cloud Config为服务端和客户端提供了分布式系统的外部化配置支持。配置服务器为各应用的所有环境提供了一个中心化的外部配置。

spring cloud config 分布式部署

    部署分布式配置管理分为以下4部

  •     将分布式系统的配置文件集中管理到文件系统上
spring.application.name=config-server
# config server port
server.port=8887

# use file system backend
spring.profiles.active=native
# url of file system where configuration files stored
spring.cloud.config.server.native.searchLocations=file:////root/config-repo

    Spring Cloud Config提供本地存储配置的方式。我们只需要设置属性spring.profiles.active=native,Config Server会默认从应用的src/main/resource目录下检索配置文件。也可以通过spring.cloud.config.server.native.searchLocations=file:////root/config-repo性来指定配置文件的位置,这样的话就可以将所有的配置文件统一管理。当然也可以从git上获取。

   目录config-repo用于存放所有的配置文件

  1. 存放配置文件的目录结构为{label}\{application}-{profile}.properties
  2. {label}可以用于对应prod、test、uat、dev、release等等
  3. {application}为各个模块的名字,如log、order等
  4. {profile}为profile的名字
  •     对集中配置管理服务器进行配置(由于需要高可用那么只需要将config-server也注册为服务,这样所有客户端就能以服务的方式进行访问,然后只需要启动多个指向同一文件位置的config-server就可以)
spring.application.name=config-server
# config server port
server.port=8887

# use file system backend
spring.profiles.active=native
# url of file system where configuration files stored
spring.cloud.config.server.native.searchLocations=file:////root/config-repo

# 配置服务注册中心
eureka.client.serviceUrl.defaultZone=http://test:111@localhost:8761/eureka/,http://test:111@1ocalhost:8762/eureka/
# 在eurake注册的名称是IP地址+端口
eureka.instance.preferIpAddress=true
eureka.instance.instance-id=${spring.cloud.client.ipAddress}:${server.port}

将config-servefr注册服务该怎么做呢?很简单在对应的pom文件中添加如下配置:

<dependencies>
	<dependency>
		<groupId>org.springframework.cloud</groupId>
		<artifactId>spring-cloud-config-server</artifactId>
	</dependency>
	<dependency>
		<groupId>org.springframework.cloud</groupId>
		<artifactId>spring-cloud-starter-eureka</artifactId>
	</dependency>
</dependencies>
  •     对各环境(客户端)进行配置(bootstrap.properties)
spring.application.name=zuul
spring.cloud.config.profile=configInfo
spring.cloud.config.label=devs

eureka.client.serviceUrl.defaultZone=http://test:111@localhost:8761/eureka/,http://test:111@localhost:8762/eureka/

# 在eurake注册的名称是IP地址+端口
eureka.instance.preferIpAddress=true
eureka.instance.instance-id=${spring.cloud.client.ipAddress}:${server.port}

spring.cloud.config.discovery.enabled=true
spring.cloud.config.discovery.serviceId=config-server
  • spring.application.name:对应前配置文件中的{application}部分
  • spring.cloud.config.profile:对应前配置文件中的{profile}部分
  • spring.cloud.config.label:对应前配置文件的config-repo下的目录

这里需要格外注意:上面这些属性必须配置在bootstrap.properties中,config部分内容才能被正确加载。因为config的相关配置会先于application.properties,而bootstrap.properties的加载也是先于application.properties

其中,通过eureka.client.serviceUrl.defaultZone参数指定服务注册中心,用于服务的注册与发现,再将spring.cloud.config.discovery.enabled参数设置为true,开启通过服务来访问Config Server的功能,最后利用spring.cloud.config.discovery.serviceId参数来指定Config Server注册的服务名。这里的spring.application.namespring.cloud.config.profile用来定位config-server的资源。

客户端对应的pom文件中需要添加如下配置

<dependencies>
	<dependency>
		<groupId>org.springframework.cloud</groupId>
		<artifactId>spring-cloud-starter-config</artifactId>
	</dependency>
	<dependency>
		<groupId>org.springframework.cloud</groupId>
		<artifactId>spring-cloud-starter-eureka</artifactId>
	</dependency>
</dependencies>
  •     客户端取得配置文件并使用
spring.datasource.url=jdbc\:db2\://localhost\:50000/hrxtdev
spring.datasource.username=
spring.datasource.password=
spring.datasource.driver-class-name=com.ibm.db2.jcc.DB2Driver\
config.server.url=http://localhost:8080
server.port =8180
server.context-path =/log


@Component
@ConfigurationProperties(prefix = "config.server")
public class ConfigServerProperties{
    private String url;

    public String getUrl() {
        return url;
    }

    public void setUrl(String url) {
        this.url = url;
    }

}

    

 

© 著作权归作者所有

zhu_kai1
粉丝 5
博文 34
码字总数 30384
作品 0
私信 提问
白话SpringCloud | 第八章:分布式配置中心的服务化及动态刷新

前言 上一章节,简单介绍了分布式配置中心的使用。同时,我们也遗漏了一些问题,比如如何配置实时生效,当服务端地址变更或者集群部署时,如何指定服务端地址?回想,在服务注册章节,服务提...

oKong
2018/10/11
0
0
SpringCloud配置中心高可用搭建

本文通过config server连接git仓库来实现配置中心,除了git还可以使用svn或者系统本地目录都行。 引入依赖 spring-cloud-config-server这个就是配置中心server的依赖。 配置中心做到高可用本...

Java技术栈
2018/05/22
0
0
史上最简单的SpringCloud教程 | 第七篇: 高可用的分布式配置中心(Spring Cloud Config)(Finchley版本)

版权声明:本文为博主原创文章,欢迎转载,转载请注明作者、原文超链接 ,博主地址:http://blog.csdn.net/forezp。 https://blog.csdn.net/forezp/article/details/81041045 转载请标明出处...

方志朋
2018/07/14
0
0
SpringCloud之高可用的分布式配置中心(Spring Cloud Config)(七)

当服务实例很多时,都从配置中心读取文件,这时可以考虑将配置中心做成一个微服务,将其集群化,从而达到高可用,架构图如下: 准备工作 继续使用上一篇文章的工程,创建一个eureka-server工...

明理萝
2018/09/05
0
0
企业分布式微服务云SpringCloud SpringBoot mybatis (七)高可用的分布式配置中心(Spring Cloud Config)

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

itcloud
02/22
0
0

没有更多内容

加载失败,请刷新页面

加载更多

八、RabbitMQ的集群原理

集群架构 写在前面 RabbitMQ集群是按照低延迟环境设计的,千万不要跨越WAN或者互联网来搭建RabbitMQ集群。如果一定要在高延迟环境下使用RabbitMQ集群,可以参考使用Shovel和Federation工具。...

XuePeng77
今天
1
0
mac系统下,brew 安装mysql,用终端可以连接,navicat却连接不上?

问题: 1.报错? 2059 - Authentication plugin 'caching_sha2_password' cannot be loaded: dlopen(../Frameworks/caching_sha2_password.so, 2): image not found 2.自己通过设置,已经把密......

写bug的攻城狮
昨天
2
0
老生常谈,HashMap的死循环

问题 最近的几次面试中,我都问了是否了解HashMap在并发使用时可能发生死循环,导致cpu100%,结果让我很意外,都表示不知道有这样的问题,让我意外的是面试者的工作年限都不短。 由于HashMap...

群星纪元
昨天
5
0
拉普拉斯算子

拉普拉斯算子是二阶微分算子。 我们知道,一维离散信号一阶微分公式如下: 相应的,一维离散信号二阶微分公式如下: 由于图像有x和y两个方向,因此图像信号属于二维离散信号。其在x,y两个...

yepanl
昨天
3
0
记录"正则表达式"

详细请查看我的博客:https://blog.enjoytoshare.club/article/RegularExpression.html 1 写在前面 正则表达式(Regular Expression)在代码中常常简写为regex。正则表达式通常被用来检索、替...

wugenqiang
昨天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部