说在前头:本人为大二在读学生,书写文章的目的是为了对自己掌握的知识和技术进行一定的记录,同时乐于与大家一起分享,因本人资历尚浅,能力有限,文章难免存在一些错漏之处,还请阅读此文章的大牛们见谅与斧正。若在阅读时有任何的问题,也可通过评论提出,本人将根据自身能力对问题进行一定的解答。

前言

SpringCloud Config为微服务架构中的微服务提供集中化的外部配置支持,配置服务器为各个不同微服务应用的所有环境提供了一个中心化的外部配置。

SpringCloud Config分为服务端和客户端两个部分。

服务端也称为分布式配置中心,它是一个独立的微服务应用,用来连接配置服务器并为客户端提供获取配置信息,加密/解密信息等访问接口。

客户端则是通过指定的配置中心来管理应用资源,以及与业务相关的配置内容,并在启动的时候从配置中心获取和加载配置信息,配置服务器默认采用git来存储配置信息,这样就有助于对环境配置进行版本管理,并且可以通过git客户端工具来方便的管理和访问配置内容。

接下来我们来构建一个服务配置中心。

1.创建eureka-server

①创建一个名为eureka-server的工程,作为配置中心

②依赖配置文件内容

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><parent><artifactId>Bosen</artifactId><groupId>com.bosen.www</groupId><version>1.0-SNAPSHOT</version></parent><modelVersion>4.0.0</modelVersion>
​<artifactId>eureka-server</artifactId>
​<dependencies><!-- eureka-server --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-server</artifactId><version>2.1.0.RELEASE</version></dependency><dependency><groupId>com.google.code.gson</groupId><artifactId>gson</artifactId><version>2.6</version></dependency></dependencies>
</project>

③启动类内容

package com.bosen.eureka.server;
​
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;
​
/*** <p>eureka服务端启动类</p>* @author Bosen 2021/5/20 13:47*/
@SpringBootApplication// springboot启动配置
@EnableEurekaServer// 开启eureka服务发现功能
public class EurekaServerApplication {public static void main(String[] args) {SpringApplication.run(EurekaServerApplication.class, args);}
}
​

④配置文件内容

spring:application:name: eureka-server # 应用名
​
server:port: 8761 # 端口号
​
eureka:instance:hostname: localhostclient:register-with-eureka: false # 是否注册自身serviceUrl:defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/   # 注册地址

⑤启动项目:启动成功后控制台日志输入如下

2.在gitee创建配置仓库

SpringCloudConfig的配置文件一般都放在github中统一托管,但国内访问github相对较慢,因此我们使用国内的gitee作为配置托管中心进行测试。

我们需要在gitee中创建一个保存项目配置文件的操作,当我们启动项目时,项目通过该仓库获取配置信息。

在gitee中注册完成后,创建一个仓库的流程如下:

3.创建config-server

在gitee创建好仓库后,我们接下来需要创建配置中心服务,用于管理各个服务的配置信息。

①创建config-server服务:过程如下图

②依赖配置文件内容

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><parent><artifactId>Bosen</artifactId><groupId>com.bosen.www</groupId><version>1.0-SNAPSHOT</version></parent><modelVersion>4.0.0</modelVersion>
​<artifactId>config-server</artifactId>
​<dependencies><!-- config-server --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-config-server</artifactId><version>2.1.0.RELEASE</version></dependency><!-- eureka-client --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-client</artifactId><version>2.1.0.RELEASE</version></dependency><dependency><groupId>com.google.code.gson</groupId><artifactId>gson</artifactId><version>2.6</version></dependency></dependencies>
</project>

③创建启动类

package com.bosen.config.server;
​
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.config.server.EnableConfigServer;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
​
/*** <p>配置中心启动类</p>* @author Bosen 2021/5/21 13:10*/
@SpringBootApplication
@EnableEurekaClient
@EnableConfigServer
public class ConfigServerApplication {public static void main(String[] args) {SpringApplication.run(ConfigServerApplication.class, args);}
}

④启动类内容说明

  • EnableEurekaClient:声明为eureka客户端,需要向eureka注册中心注册,并依赖注册中心完成各个服务的配置信息装配。

  • EnableConfigServer:开启配置中心服务。

⑤设置配置文件application.yml

spring:application:name: config-servercloud:config:server:git:uri: https://gitee.com/bosen-once/bosen # 存放配置文件的仓库default-label: master # 分支search-paths: config # 对应的文件夹#username:      # 如果仓库是公共的不需要输入用户名和密码,否则必须要输入#password:      # 密码(可以使用本机公钥)
​
server:port: 8888
​
eureka:client:serviceUrl:defautlZone: http://localhost:8761/eureka/

⑥启动服务:启动成功后如下

⑦访问eureka-server查看config-server是否已经成功注册

访问http://localhost:8761/ 如下

4.创建用于测试的eureka-client客户端

截止到上一步,我们已经成功准备好,服务注册发现中以及服务配置中心,接下来我们需要创建一个用于测试的eureka-client服务

①依赖配置

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><parent><artifactId>Bosen</artifactId><groupId>com.bosen.www</groupId><version>1.0-SNAPSHOT</version></parent><modelVersion>4.0.0</modelVersion>
​<artifactId>eureka-client</artifactId>
​<dependencies><!-- eureka-client --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-client</artifactId><version>2.1.0.RELEASE</version></dependency><dependency><groupId>com.google.code.gson</groupId><artifactId>gson</artifactId><version>2.6</version></dependency><!-- web --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><version>2.1.0.RELEASE</version></dependency><!-- config-client --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-config-client</artifactId><version>2.1.0.RELEASE</version></dependency></dependencies>
</project>

②启动类

package com.bosen.eureka.client;
​
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
​
@SpringBootApplication
@EnableEurekaClient
​
public class EurekaClientApplication {public static void main(String[] args) {SpringApplication.run(EurekaClientApplication.class, args);}
}

③编写一个控制器

package com.bosen.eureka.client.controller;
​
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
​
@RestController
public class IndexController {@RequestMapping("/")public String index() {return "This is IndexController index();";}
}
​

④配置文件

注意:配置文件命名应当使用bootstrap,不建议使用application。原因:bootstrap的优先级大于application,需要从远端获取配置文件时,应该使用优先级大的bootstrap,以免发生不必要的错误)

spring:application:name: eureka-client # 当前服务应用名cloud:config:label: master # 仓库分支discovery:enabled: true # 开启 Config 服务发现与注册client:simple:local:service-id: config-server # 配置中心应用名

⑤在gitee中编写该服务的配置文件

server:port: 8001 # 端口号
​
eureka:instance:hostname: localhostclient:serviceUrl:defaultZone: http://localhost:8761/eureka/   # 注册地址

⑥需要注意的地方

配置文件的配置规则是根据${spring.application.name}-${profiles}.yml的规则来匹配,即保存在gitee中的配置文件命名方式应该以应用名命名,如果配置了启动环境还应当加上环境参数,由于现在是测试阶段,我们没有添加环境参数,直接以服务名命名即可。

当我们的配置文件编写完毕后,启动我们的eureka-client服务,启动成功如下:

5.测试

服务注册发现中心,服务配置中心以及用于测试的客户端服务启动成功后,我们先访问服务注册发现中心http://localhost:8761/,可以看到我们eureka-client以成功注册

并且我们查看eureka-client的日志信息,可以很明确的看到,项目在启动时去访问了http://localhost:8888,这正是服务配置中心的地址,接着通过访问https://gitee.com/bosen-once/bosen/config/eureka-client.yml获取对应的配置文件


6.总结

​本篇我们简单介绍了SpringCloudConfig服务配置中心,并结合eureka实现了远程调用服务配置文件,相信聪明的你们已经学会了SpringCloudConfig使用方法。编程道路还很漫长,让我们一起加油吧。

《微服务系列:SpringCloudConfig配置中心》相关推荐

  1. ComeFuture英伽学院——2020年 全国大学生英语竞赛【C类初赛真题解析】(持续更新)

    视频:ComeFuture英伽学院--2019年 全国大学生英语竞赛[C类初赛真题解析]大小作文--详细解析 课件:[课件]2019年大学生英语竞赛C类初赛.pdf 视频:2020年全国大学生英语竞赛 ...

  2. ComeFuture英伽学院——2019年 全国大学生英语竞赛【C类初赛真题解析】大小作文——详细解析

    视频:ComeFuture英伽学院--2019年 全国大学生英语竞赛[C类初赛真题解析]大小作文--详细解析 课件:[课件]2019年大学生英语竞赛C类初赛.pdf 视频:2020年全国大学生英语竞赛 ...

  3. 信息学奥赛真题解析(玩具谜题)

    玩具谜题(2016年信息学奥赛提高组真题) 题目描述 小南有一套可爱的玩具小人, 它们各有不同的职业.有一天, 这些玩具小人把小南的眼镜藏了起来.小南发现玩具小人们围成了一个圈,它们有的面朝圈内,有的 ...

  4. 信息学奥赛之初赛 第1轮 讲解(01-08课)

    信息学奥赛之初赛讲解 01 计算机概述 系统基本结构 信息学奥赛之初赛讲解 01 计算机概述 系统基本结构_哔哩哔哩_bilibili 信息学奥赛之初赛讲解 02 软件系统 计算机语言 进制转换 信息 ...

  5. 信息学奥赛一本通习题答案(五)

    最近在给小学生做C++的入门培训,用的教程是信息学奥赛一本通,刷题网址 http://ybt.ssoier.cn:8088/index.php 现将部分习题的答案放在博客上,希望能给其他有需要的人带来 ...

  6. 信息学奥赛一本通习题答案(三)

    最近在给小学生做C++的入门培训,用的教程是信息学奥赛一本通,刷题网址 http://ybt.ssoier.cn:8088/index.php 现将部分习题的答案放在博客上,希望能给其他有需要的人带来 ...

  7. 信息学奥赛一本通 提高篇 第六部分 数学基础 相关的真题

    第1章   快速幂 1875:[13NOIP提高组]转圈游戏 信息学奥赛一本通(C++版)在线评测系统 第2 章  素数 第 3 章  约数 第 4 章  同余问题 第 5 章  矩阵乘法 第 6 章 ...

  8. 信息学奥赛一本通题目代码(非题库)

    为了完善自己学c++,很多人都去读相关文献,就比如<信息学奥赛一本通>,可又对题目无从下手,从今天开始,我将把书上的题目一 一的解析下来,可以做参考,如果有错,可以告诉我,将在下次解析里重 ...

  9. 信息学奥赛一本通(C++版) 刷题 记录

    总目录详见:https://blog.csdn.net/mrcrack/article/details/86501716 信息学奥赛一本通(C++版) 刷题 记录 http://ybt.ssoier. ...

  10. 最近公共祖先三种算法详解 + 模板题 建议新手收藏 例题: 信息学奥赛一本通 祖孙询问 距离

    首先什么是最近公共祖先?? 如图:红色节点的祖先为红色的1, 2, 3. 绿色节点的祖先为绿色的1, 2, 3, 4. 他们的最近公共祖先即他们最先相交的地方,如在上图中黄色的点就是他们的最近公共祖先 ...

最新文章

  1. javascript判断输入的值是不是正整数
  2. ajax 遍历select 下拉框
  3. [云炬Python学习笔记] Python读取指定文件夹下的文件
  4. redis存储java对象存储_Spring-Data-Redis存储对象(redisTemplate)
  5. gnu linux空间包括什么,不知道这十项Linux常识,就别说自己玩过Linux
  6. 1205: 正序数(归并排序统计正序数)
  7. 算法提高 c++_ch02_01 (强制类型转换)
  8. 特斯拉全自动驾驶订阅包来了:199美元包月 老用户99美元
  9. 美团王兴:互联网下半场基本功不过关 活下去都很难
  10. leetcode第一刷_Unique Binary Search Trees
  11. identifier is too long 异常处理
  12. FPGA智能传感系统(一)Verilog基础入门
  13. Runner站立会议03
  14. 处理数据spss乱码
  15. Boost常用库介绍
  16. 遥感图像超分辨重建综述
  17. TSP问题(推销员问题)
  18. [转载]通过插件支持,Geronimo 提供了 one-click 升级
  19. ​云队友丨两次疫情冲击,却两次成功上市,携程是怎么做到的?
  20. storyBoard中TopLayout和SuperView

热门文章

  1. linux 删除行首空格
  2. 通过以太坊实现自己的ICO
  3. Maven - 国内Maven仓库之阿里云Aliyun仓库地址及设置
  4. 基于AKF可扩展模型的微服务拆分方式
  5. 字节跳动智力题-分金块问题
  6. gstreamer教程(一)-基本概念
  7. 一文读懂 协方差矩阵
  8. 图像特征之SURF特征匹配
  9. python 不能被2,3整除的数字
  10. 两个div并排 左边div宽固定 右边自适应