Java SpringCloud系列(二) —— config(配置中心)简介以及搭建

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/liboyang71/article/details/81124733

首先,整个课程系列需要同学们有一定的基础技能,分别是java、springboot、github以及基础的Linux的知识,其中springboot是各位同学一定要掌握的,如果没有springboot基础可以查看我之前的博客对 java 搭建基于springboot的ssm(spring + springmvc + mybatis)的maven项目java 搭建基于springboot的ssh(spring + springmvc + hibernate)的gradle项目(基础篇) 进行学习,关于github以及Linux方面可以在使用到的时候再进行学习以及准备。
现在我们开始进入springcloud系列第二篇,关于config(配置中心的简介以及搭建)。

1.config(配置中心)简介

Spring Cloud Config 是用来为分布式系统中的基础设置和微服务应用提供集中化的外部配置支持,它是一个独立的微服务应用,直白的将,就是你可以将你的项目的数据库等配置抽取到一个外部(github、gitlab、svn等)并进行读取和使用,并支持在不重启项目的情况下读取到的配置文件可实时更新(配合spring cloud bus,后面文章我们会进行讲解)。

2.使用原因

在我们使用任何一个功能或者在我们做任何一件事之前,一定要知道使用它的原因以及它能带来的好处。
1.为什么我们要使用config?

1.我们希望使用config提供的配置文件抽取到外部进行读取的功能
2.我们希望达到在不重启项目的基础上将能达到配置文件内容会我修改后自动更新。

2.为什么我想要上面两个功能?

功能一:在微服务架构中,我们的每一个服务一定会进行多套的负载,以数据库配置举例来说,如果我的服务A做了100套负载A1,A2…A99,A100,这时候我需要在每一个服务中写100次数据库配置,这个时候如果我的数据库变了,我居然要改100个服务的配置文件!想一想这是不是一个巨大的工作量,但是如果我将配置统一抽取到一个外部(例如:github的某一个仓库中),我的每一个A负载服务想要调取数据库配置时,只要去远程仓库区对应的数据即可,并且在我想要修改数据库的时候,我只要将github仓库中的一条数据库配置进行修改,就会进行一概全改。有的同学会说,真正开发的时候怎么会改生产环境的数据库地址,这里我只是举一个例子,那如果只是一个抽取到配置文件的变量呢?例如验证码失效时间或者token失效时间等这些有可能变动的值呢?所以这个功能还是很有必要的。
功能二:在我修改了外部的配置文件后,我不可能把我的100个服务只因为一个变量的修改就全部重启吧,这工作量确实有点大。所以这时候我会使用spring cloud bus(消息总线)来实现不重启服务来拿去最新的配置文件内容,关于消息总线的实现我会在后面的文章中进行详细的配置讲解,我们这篇文章还是以config的搭建为主。

3.config搭建

上面已经说明了为什么我们要使用config将配置文件进行外部抽取,首先说明一下,在微服务架构体系中,config不是必备的,但是我个人认为在实际的开发和生产环境中,config是一个十分必要的功能。好了,我们开始搭建。

3.1 环境准备

开发工具:idea
开发环境:JDK8
spring boot 版本: 2.0.3
构建工具: gradle4.5(因为springboot使用2.0所以gradle要使用4.0以上版本)

3.2 服务端

1.创建springboot项目
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
2.改造为config配置中心
这里写图片描述
这里写图片描述

#服务名称
spring.application.name=config
#git地址(具体其中目录结构同学们自己根据url去看,这里就不截图了)
spring.cloud.config.server.git.uri=https://github.com/beyondLi71/csdn-config-demo.git
#账号密码
spring.cloud.config.server.git.username=beyondLi71
spring.cloud.config.server.git.password=你的密码
#对应的文件夹下(看需求使用)
#spring.cloud.config.server.git.search-paths=dev
#指定配置文件缩放位置(生产使用)
#spring.cloud.config.server.git.basedir=
#eureka注册地址
eureka.client.service-url.defaultZone=http://localhost:8761/eureka/

我们先启动我们的eureka,之后再启动我们的config,访问我们的eureka查看config是否被注册。如下图所示表示配置中心注册成功

这里写图片描述
3.通过url获取配置中心配置内容

首先我们先科普几个概念
name:服务名
profiles:环境
label:分支
好了,科普完以上的名词,我们的访问url规则如下
/{name}-{profiles}.properties

/{label}/{name}-{profiles}.properties
现在我们访问一下url,如下图所示。

这里写图片描述

细心的同学会发现,其实我们的develop分支的csdn-dev文件中根本没有name这个配置,那为什么还会能取到name呢?这里是因为config会默认将不带环境的文件作为一个基础数据,无论哪个环境都会拿到这些基础数据。

3.3 客户端

1.准备服务以及github地址

首先我们要创建出来两个服务,分别为csdn-client-one和csdn-client-two服务,当然对应的两个conf地址也要提前准备出来,地址如下
https://github.com/beyondLi71/csdn-client-one-conf.git
https://github.com/beyondLi71/csdn-client-two-conf.git

2.改造config

我们要支持多个服务拿不同配置文件,肯定要将config进行改造,我们需要将配置文件改为如下
这里写图片描述

#服务名称
spring.application.name=config
#git地址
spring.cloud.config.server.git.uri=https://github.com/beyondLi71/{application}-conf.git
#账号密码
spring.cloud.config.server.git.username=beyondLi71
spring.cloud.config.server.git.password=你的密码
#对应的文件夹下(看需求使用)
#spring.cloud.config.server.git.search-paths=dev
#指定配置文件缩放位置(生产使用)
#spring.cloud.config.server.git.basedir=
#eureka注册地址
eureka.client.service-url.defaultZone=http://localhost:8761/eureka/

3.创建客户端项目

选择依赖包如下,其余创建过程与上面相同

这里写图片描述

创建目录结构如下
这里写图片描述

4.改造为读取config的客户端
这里写图片描述
这里写图片描述
这里写图片描述

#服务名称(需要与config中的{application}位置正好拼成相应的git地址)
spring.application.name=csdn-client-one
#注册中心
eureka.client.service-url.defaultZone=http://localhost:8761/eureka/
#config配置中心
#开启通过服务来访问ConfigServer功能
spring.cloud.config.discovery.enabled=true
#配置要连接的注册中心名称
spring.cloud.config.discovery.service-id=config
#设置访问分支(默认master)
#spring.cloud.config.label=develop

结果如下图所示,当我不设置label时,配置文件是从master分支读取,所以我启动时的端口是8081,当设置label时,读取的是develop分支。

这里写图片描述
这里写图片描述

好了,client-two的就不给各位同学一一截图了,和上面一样,大概的config搭建、使用情况以及语法就是这样,在真正的开发以及生产环境中可以各种组合去控制不同分支和环境的配置文件,没有一个具体的标准,到时候就看各位同学自由发挥了。

猜你喜欢

转载自blog.csdn.net/liboyang71/article/details/81124733