文档章节

分布式配置中心

lemos
 lemos
发布于 2017/04/16 11:48
字数 788
阅读 58
收藏 0

原文

分布式的配置中心

默认采用 git存储配置信息。当然也提供本地化存储的方式。

 

在 git上创建配置文件

查看项目文件地址

 

构建 config-server

pom中添加 spring-cloud-config-server。

主类上添加 @EnableConfigServer

application.properties 中配置服务信息以及 你的git 信息。

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

# git info
spring.cloud.config.server.git.uri=https://git.oschina.net/lemosd/config-center.git
spring.cloud.config.server.git.searchPaths=config-repo
spring.cloud.config.server.git.username=yourname
spring.cloud.config.server.git.password=yourpassword

Spring Cloud Config也提供本地存储配置的方式。我们只需要设置属性spring.profiles.active=native,Config Server会默认从应用的src/main/resource目录下检索配置文件。也可以通过spring.cloud.config.server.native.searchLocations=file:F:/properties/属性来指定配置文件的位置。虽然Spring Cloud Config提供了这样的功能,但是为了支持更好的管理内容和版本控制的功能,还是推荐使用git的方式。

如果使用 git 方式,则需要在git 服务器创建相关配置文件。创建好相关配置后,通过 url —— /{application}/{profile}[/{label}] 来访问相关的配置文件 。比如:要访问master分支,didispace应用的prod环境,可以通过这个url:http://localhost:7001/didispace/prod/master

 

构建 config-client

在完成并验证了配置服务中心之后,需要从客户端获取配置信息。

pom 中添加 spring-cloud-starter-config。

创建bootstrap.properties配置,来指定config server

spring.application.name=didispace
spring.cloud.config.profile=dev
spring.cloud.config.label=master
spring.cloud.config.uri=http://localhost:7001/
server.port=7002

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

创建一个Rest Api来返回配置中心的from属性,具体如下:

@RefreshScope
@RestController
class TestController {
    @Value("${from}")
    private String from;
    @RequestMapping("/from")
    public String from() {
        return this.from;
    }
}

启动该应用,并访问:http://localhost:7002/from ,我们就可以根据配置内容输出对应环境的from内容了。

 

负载均衡

虽然通过服务端负载均衡已经能够实现,但是作为架构内的配置管理,本身其实也是可以看作架构中的一个微服务。所以,另外一种方式更为简单的方法就是把config-server也注册为服务,这样所有客户端就能以服务的方式进行访问。通过这种方法,只需要启动多个指向同一Git仓库位置的config-server就能实现高可用了。

创建一个 eureka-server 模块,作为服务注册中心

pom 中添加 

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

prop 中

server.port=1111
#eureka.instance.hostname=localhost

eureka.client.register-with-eureka=false
eureka.client.fetch-registry=false
eureka.client.serviceUrl.defaultZone=http://localhost:${server.port}/eureka/

主类上添加 

@EnableEurekaServer

注册 config-server 为服务

在 pom中添加 spring-cloud-starter-eureka,用来注册服务

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

prop 中添加注册中心

# 配置服务注册中心
#eureka.instance.hostname=localhost
eureka.client.serviceUrl.defaultZone=http://localhost:1111/eureka/

主类上添加

@EnableDiscoveryClient

注册 config-client 为服务

同上,需要注意的是 prop中配置

eureka.client.serviceUrl.defaultZone=http://localhost:1111/eureka/
spring.cloud.config.discovery.enabled=true
spring.cloud.config.discovery.serviceId=config-server

配置刷新

在 config-client 中添加 

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

当配置改变后,可以通过 POST请求发送到http://localhost:7002/refresh,我们可以看到返回内容如下,代表from参数的配置内容被更新了

[
  "from"
]

 

© 著作权归作者所有

上一篇: 服务网关
lemos
粉丝 8
博文 193
码字总数 93762
作品 0
芜湖
后端工程师
私信 提问
lishangzhi/springcloud-microservice

springcloud-microservice Spring Cloud 快速搭建微服务 spring cloud 为开发人员提供了快速构建分布式系统的一些工具,包括配置管理、服务发现、断路器、路由、微代理、事件总线、全局锁、决...

lishangzhi
2017/08/29
0
0
SpringCloud(Finchley版)5 - Config-Server

一, 简介 在分布式系统中, 由于服务数量巨多, 为了方便服务配置文件统一管理, 实时更新, 所以需要分布式配置中心组件. 在 spring cloud 中, 有分布式配置中心组件spring cloud config, 它支持...

ge洋
01/11
0
0
SpringCloud学习之soa基础

一、soa简单介绍   1)面向服务的架构(SOA)是一个组件模型,它将应用程序的不同功能单元(称为服务)通过这些服务之间定义良好的接口和契约联系起来。SOA是解决复杂业务模块,提高扩展性...

java~nick
2017/11/13
0
0
Fescar 发布 0.2.3 版本,支持 Redis 和 Apollo

Fescar 是一款开源的分布式事务解决方案,提供高性能和简单易用的分布式事务服务。 本次更新内容如下: 特性 [#478] 支持 Redis 注册中心 [#478] 支持 Apollo 配置中心 Bug 修复 [#462] 分离...

阿里巴巴中间件
03/19
0
0
vmaps/springcloud-app

springcloud-app 系统介绍 springcloud-app 是J2EE集群分布式基础开发平台,架构设计包括(分布式,分布式事务,高可用集群,缓存集群,会话集群,动静分离),技术栈包括(springCloud、MyB...

vmaps
2018/01/08
0
0

没有更多内容

加载失败,请刷新页面

加载更多

4.01、Linux异常

1、无法连接虚拟设备ide1:0,因为主机上没有响应的设备 解决方法:找到“虚拟机” —— 打开“虚拟机设置” —— 单击“CD/DVD(IDE)”,右侧选中“使用ISO映像文件”,然后选中自己的镜像,重启...

静以修身2025
39分钟前
1
0
不允许有匹配 "[xX][mM][lL]" 的处理指令目标

Bug解决方案:org.xml.sax.SAXParseException; lineNumber: 1; columnNumber: 8; 不允许有匹配 "[xX][mM][lL]" 的处理指令目标 Caused by: org.xml.sax.SAXParseException; lineNumber: 1; c......

我叫小糖主
42分钟前
1
0
Mysql InnoDB 行锁和表锁介绍

mysql 的 InnoDB引擎支持行锁,与Oracle不同,mysql的行锁是通过索引加载的,即是行锁是加在索引响应的行上的,要是对应的SQL语句没有走索引,则会全表扫描,行锁则无法实现,取而代之的是表...

嘴角轻扬30
42分钟前
2
0
springboot+jpa 错误信息org.springframework.beans.factory.BeanCreationException

报错信息 org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [org/springframework/boot/a......

冥焱
今天
1
0
威胁快报|新兴挖矿团伙借助shodan作恶,非web应用安全再鸣警钟

近日,阿里云安全发现了一个使用未授权访问漏洞部署恶意Docker镜像进行挖矿的僵尸网络团伙。我们给这一团伙取名为Xulu,因为该团伙使用这个字符串作为挖矿时的用户名。 Xulu并不是第一个攻击...

迷你芊宝宝
今天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部