1. SpringCloud Config

  • SpringCLoud Config 为微服务架构中的微服务提供集中化的外部配置支持,配置服务器为各个不同微服务应用

    的所有环境提供了一个中心化的外部配置;
  • SpringCloud Config 分为服务端和客户端:
    • 服务端也称为分布式配置中心,它是一个独立的微服务应用,用来连接配置服务器并为客户端提供获取配置信息,

      加密/解密信息等访问接口;
    • 客户端则是通过指定的配置中心来管理应用资源,以及与业务相关的配置内容,并在启动的时候从配置中心获取和

      加载配置信息;
  • 配置服务器默认采用Git来存储配置信息;

1.1 SpringCloud Config服务端配置

GitHub 准备工作

// GitHub 新建一个名为 microservicecloudd-config 的新Repository
// 获得SSH协议的git地址: git@github.com:Noodlescn/microservicecloud-config.git
// 本地硬盘目录上,新建Git仓库,并clone
git clone git@github.com:Noodlescn/microservicecloud-config.git // 本地Git仓库,microservicecloud-config 新建 application.yml
spring:
profiles:
active:
- dev
---
spring:
profiles: dev # 开发环境
application:
name: microservicecloud-config-noodles-dev
---
spring:
profiles: test # 测试环境
application:
name: microservicecloud-config-noodles-test # 文件保存为 UTF-8 格式 // 将application.yml推送到github上

新建 microservicecloud-config-3344(Cloud的配置中心模块)

// pom.xml
<!-- springCloud Config -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-server</artifactId>
</dependency>
<!-- 避免Config的Git插件报错 -->
<dependency>
<groupId>org.eclipse.jgit</groupId>
<artifactId>org.eclipse.jgit</artifactId>
<version>4.10.0.201712302008-r</version>
</dependency> // application.yml
server:
port: 3344 spring:
application:
name: microservicecloud-config
cloud:
config:
server:
git:
uri: git@github.com:Noodlescn/microservicecloud-config.git # GitHub上面的git仓库名字 // 主启动类
@SpringBootApplication
@EnableConfigServer
public class Config_3344_StartSpringCloudApp { public static void main(String[] args) {
SpringApplication.run(Config_3344_StartSpringCloudApp.class, args);
} } // 修改hosts文件,增加映射
// 127.0.0.1 config-3344.com // 测试启动微服务 3344
// http://config-3344.com:3344/application-dev.yml
// http://config-3344.com:3344/application-test.yml

1.2 SpringCloud Config客户端配置

GitHub 准备工作

// 本地 microservicecloud-config 路径下新建文件 microservicecloud-config-client.yml
spring:
profiles:
active
- dev ---
server:
port: 8201
spring:
profiles: dev
application:
name: microservicecloud-config-client
eureka:
client:
service-url:
defaultZone: http://eureka-dev.com:7001/eureka/
---
server:
port: 8202
spring:
profiles: test
application:
name: microservicecloud-config-client
eureka:
client:
service-url:
defaultZone: http://eureka-test.com:7001/eureka/ // 提交到GitHub

新建 microservicecloud-config-client-3355

// pom.xml
<!-- springCloud Config 客户端-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency> // bootstrap.yml(是系统级配置文件,优先级最高)
spring:
cloud:
config:
name: microservicecloud-config-client # 需要从github上读取的资源名称,注意没有yml后缀名
profile: dev # 本次访问的配置项
label: master
uri: http://config-3344.com:3344
# 本微服务启动后,先去找3344号服务,通过SpringCloudConfig获取GitHub的服务地址 // application.yml(是用户级的资源配置项)
spring:
application:
name: microservicecloud-config-client // 修改hosts文件: 127.0.0.1 client-config.com // 新建rest类,验证是否能从GitHub上读取配置
@RestController
public class ConfigClientRest { @Value("${spring.application.name}$")
private String applicationName; @Value("${eureka.client.service-url.defaultZone}$")
private String eurekaServers; @Value("${server.port}$")
private String port; @RequestMapping("/config")
private String getConfig() {
String str = "applicationName:"+applicationName+"\t eurekaServers:"+eurekaServers+"\t port:"+port;
System.out.println("********str:" + str);
return str;
}
} // 主启动类ConfigClient_3355_StartSpringCloudApp
@SpringBootApplication
public class ConfigClient_3355_StartSpringCloudApp { public static void main(String[] args) {
SpringApplication.run(ConfigClient_3355_StartSpringCloudApp.class, args);
} } // 测试访问:
// http://client-config.com:8201/config

2. SpringCloud Config 配置实战

GitHub 准备工作

// 本地microservicecloud-config 下新建:
// microservicecloud-config-eureka-client.yml
spring:
profiles:
active:
- dev
---
server:
port: 7001 spring:
profiles: dev
application:
name: microservicecloud-config-eureka-client eureka:
instance:
hostname: eureka7001.com
client:
register-with-eureka: false # 当前的eureka-server自己不注册进服务列表中
fetch-registry: false # 不通过eureka获取注册信息
service-url:
defaultZone: http://eureka7001.com:7001/eureka/
---
server:
port: 7001 # 注册中心占用7001端口 spring:
profiles: test
application:
name: microservicecloud-config-eureka-client eureka:
instance:
hostname: eureka7001.com
client:
register-with-eureka: false # 当前的eureka-server自己不注册进服务列表中
fetch-registry: false # 不通过eureka获取注册信息
service-url:
defaultZone: http://eureka7001.com:7001/eureka/ // 本地microservicecloud-config 下新建:
// microservicecloud-config-dept-client.yml
spring:
profiles:
active:
- dev
---
server:
port: 8001
spring:
profiles: dev
application:
name: microservicecloud-config-dept-client
datasource:
type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: org.gjt.mm.mysql.Driver
url: jdbc:mysql://localhost:3306/cloudDB01
username: root
password: root
dbcp2:
min-idle: 5
initial-size: 5
max-total: 5
max-wait-millis: 200
mybatis:
config-location: classpath:mybatis/mybatis.cfg.xml
type-aliases-package: com.noodles.springcloud.entities
mapper-locations:
- classpath:mybatis/mapper/**/*.xml eureka:
client: # 客户端注册进eureka服务列表内
service-url:
defaultZone: http://eureka7001.com:7001/eureka
instance:
instance-id: dept-8001.com
prefer-ip-address: true info:
app.name: noodles-microservicecloud-springcloudconfig01
company.name: www.google.com
build.artifactId: $project.artifactId$
build.version: $project.version$
---
server:
port: 8001
spring:
profiles: test
application:
name: microservicecloud-config-dept-client
datasource:
type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: org.gjt.mm.mysql.Driver
url: jdbc:mysql://localhost:3306/cloudDB02
username: root
password: root
dbcp2:
min-idle: 5
initial-size: 5
max-total: 5
max-wait-millis: 200
mybatis:
config-location: classpath:mybatis/mybatis.cfg.xml
type-aliases-package: com.noodles.springcloud.entities
mapper-locations:
- classpath:mybatis/mapper/**/*.xml eureka:
client: # 客户端注册进eureka服务列表内
service-url:
defaultZone: http://eureka7001.com:7001/eureka
instance:
instance-id: dept-8001.com
prefer-ip-address: true info:
app.name: noodles-microservicecloud-springcloudconfig02
company.name: www.google.com
build.artifactId: $project.artifactId$
build.version: $project.version$ // 上传GitHub

新建 microservicecloud-config-eureka-client-7001 工程 (Config版的eureka服务端)

// pom.xml(参照microservicecloud-eureka-7001)
<!-- springCloud Config -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency> // bootstrap.yml
spring:
cloud:
config:
name: microservicecloud-config-eureka-client # 需要从GitHub上读取的资源名称,没有yml后缀名
profile: dev
label: master
uri: http://config-3344.com:3344 # SpringCloudConfig 获取的服务地址 // application.yml
spring:
application:
name: microservicecloud-config-eureka-client // 主启动类
@SpringBootApplication
@EnableEurekaServer // EurekaServer 服务器端启动类,接收其他微服务注册进来
public class Config_Git_EurekaServerApplication { public static void main(String[] args) {
SpringApplication.run(Config_Git_EurekaServerApplication.class, args);
}
} //测试
// 启动 microservicecloud-config-3344
// 启动 microservicecloud-config-eureka-client-7001
// 访问 http://eureka7001.com:7001/

新建 microservicecloud-config-dept-client-8001(Config版的dept微服务)

// pom.xml(参照8001)
<!-- SpringCloud 配置 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency> // bootstrap.yml
spring:
cloud:
config:
name: microservicecloud-config-dept-client # 需要从GitHub上读取的资源名称
# profile 配置什么就读取什么,配置 dev 或 test
profile: test
label: master
uri: http://config-3344.com:3344 # SpringCloudConfig 获取的服务地址 // application.yml
spring:
application:
name: microservicecloud-config-dept-client // 主启动类
@SpringBootApplication
@EnableEurekaClient // 本服务启动后,自动注册进eureka服务中
@EnableDiscoveryClient // 服务发现
public class DeptProvider8001_App { public static void main(String[] args) {
SpringApplication.run(DeptProvider8001_App.class, args);
}
} // 测试
// 默认访问 test 配置: http://localhost:8001/dept/list
// 更换 dev 配置: http://localhost:8001/dept/list

参考资料:

SpringCloud 进阶之分布式配置中心(SpringCloud Config)的更多相关文章

  1. springcloud 高可用分布式配置中心

    SpringCloud教程七:高可用的分布式配置中心(SpringCloud Config) 当服务有很多 都要从服务中心获取配置时 这是可以将服务中心分布式处理 是系统具备在集群下的大数据处理 主要 ...

  2. springcloud学习之路: (五) springcloud集成SpringCloudConfig分布式配置中心

    SpringCloud全家桶中的分布式配置中心SpringCloudConfig, 它使用git来管理配置文件, 在修改配置文件后只需要调用一个接口就可以让新配置生效, 非常方便. SpringClo ...

  3. SpringCloud系列之分布式配置中心极速入门与实践

    SpringCloud系列之分布式配置中心极速入门与实践 @ 目录 1.分布式配置中心简介 2.什么是SpringCloud Config? 3.例子实验环境准备 4.Config Server代码实 ...

  4. 《springcloud 三》分布式配置中心

    Git环境搭建 使用码云环境搭建git服务器端 码云环境地址:https://gitee.com/majie2018 服务端详解 项目名称:springboot2.0-config_server Ma ...

  5. SpringCloud学习系列之四-----配置中心(Config)使用详解

    前言 本篇主要介绍的是SpringCloud中的分布式配置中心(SpringCloud Config)的相关使用教程. SpringCloud Config Config 介绍 Spring Clou ...

  6. Spring-cloud微服务实战【九】:分布式配置中心config

      回忆一下,在前面的文章中,我们使用了spring cloud eureka/ribbon/feign/hystrix/zuul搭建了一个完整的微服务系统,不管是队内还是对外都已经比较完善了,那我们 ...

  7. SpringCloud学习系列之五-----配置中心(Config)和消息总线(Bus)完美使用版

    前言 在上篇中介绍了SpringCloud Config的使用,本篇则介绍基于SpringCloud(基于SpringBoot2.x,.SpringCloud Finchley版)中的分布式配置中心( ...

  8. SpringCloud全家桶学习之分布式配置中心----Config(七)

    一.概述 (1)背景 微服务意味着将单体应用中的业务拆分成一个个子服务,每个服务的粒度相对较小,因此系统中出现大量的服务.由于每个服务都需要配置必要的配置信息才能运行,所以一套集中式的.动态的配置管理 ...

  9. SpringCloud(6)分布式配置中心Spring Cloud Config

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

随机推荐

  1. [CS]C#操作word

    近期在做的项目已经改了好几版,近期这一版用到了word,当然不是直接使用word,而是使用第三方的ActiveX控件:dsoframer.ocx.此控件的使用和其它控件的使用流程没有不论什么差别.接下 ...

  2. QT把widget转换成图片后打印

    from PyQt5.QtWidgets import (QApplication, QWidget, QTableWidget,QPushButton, QVBoxLayout, QTableWid ...

  3. Uniprot 数据库-最常用的蛋白质数据库

    Uniprot 数据库是收录信息最全面的蛋白质数据库,包含swissport, uniparc, TrEMBL 3个子数据库: 其中swiss-prot 是手工核对过的 ,非冗余, 有详细注释信息的蛋 ...

  4. vector deque list

    vector ,deque 和 list 顺序性容器: 向量 vector :   是一个线性顺序结构.相当于数组,但其大小可以不预先指定,并且自动扩展.它可以像数组一样被操作,由于它的特性我们完全可 ...

  5. angular学习(十五)——Provider

    转载请写明来源地址:http://blog.csdn.net/lastsweetop/article/details/60966263 Provider简单介绍 每一个web应用都是由多个对象协作完毕 ...

  6. Android中使用UncaughtExceptionHandler来处理未捕获的异常

    原文在sparkyuan.me上.转载注明出处:http://sparkyuan.github.io/2016/03/28/使用UncaughtExceptionHandler来处理未捕获的异常/ 全 ...

  7. Linux,unix,cygwin,centeros下的tar压缩解压缩命令具体解释

    tar Examples:   tar -cf archive.tar foo bar  # Create archive.tar from files foo and bar.   tar -tvf ...

  8. 如何才能知道外线是FSK还是DTMF制式?

    在直线上接上来电显示话机,然后用手机或其他电话拨接电话的外线号码. 1.如果是先振铃后来显,就是FSK制式. 2.如果先送来显,再振铃或来显和振铃同时响应,就是DTMF制式 交换机默认配置是FSK制式 ...

  9. 【RF库Collections测试】Copy Dictionary

    Name: Copy DictionarySource:Collections <test library>Arguments:[ dictionary ]Returns a copy o ...

  10. Zookeeper(一)-- 简介以及单机部署和集群部署

    一.分布式系统 由多个计算机组成解决同一个问题的系统,提高业务的并发,解决高并发问题. 二.分布式环境下常见问题 1.节点失效 2.配置信息的创建及更新 3.分布式锁 三.Zookeeper 1.定义 ...