开发者学堂课程【微服务框架 Spring Cloud 快速入门:SpringCloud Config服务端的配置】学习笔记与课程紧密联系,让用户快速学习知识
课程地址:https://developer.aliyun.com/learning/course/614/detail/9371
SpringCloud Config 服务端的配置
此图其中的 ClientA、B 和 C 统一交给它进行管理之后再和Git发生反应,把我们的配置信息由远程的 GitHub 库下载到本地,然后由 Config Server 这个微服务去和外界的 GitHub 沟通。
所以我们的首要任务是将“大管家”Config Server 与 GitHub 这条路给打通。
在之前已经说过 SpringCloud Corifig 分为服务端和客户端两部分。此时的服务端就是 Config Server
用自己的 GitHub 账号在 GitHub 上新建一个名为
microservicecloud-config 的新 Repository
首先找到的 GitHub 新建一个 New repository,
命名为 microservicecloud-config。
同时在 GitHub 上建的项目下载到本地的时候自身都带了一个隐藏变量.git 文件夹。
此时就获得了这个文件库拷贝。
1. 由上一步获得SSH协议的git地址
git@github.com:zzyybs/microservicecloud-config.git
2. 本地硬盘目录上新建git仓库并clone(克隆)
l 本地地址:D:\44\mySpringCloud(依照自己情况更改)
l git命令:
gitclone git@github.com:zzyybs/microservicecloud-config.git
可以理解为这个 44mySpringCloud 路径是一个和开发无关的运维工程师,他可能要处理一个配置类的东西,他就会提交此到GitHub里面,之后大管家就会从上面获取拉取信息。
首先在此处右键执行 Git 命令,输入 git status 执行,再输入 pwd 可以看到底下显示当前目录下根本没有一个Git库。
所以我们首先输入 git clone 单击我们对应的 Git 相关的下载链接地址回车之后等待克隆。
之后就可以发现目录下显示出了克隆的文件。
我们点击文件夹,首先勾选隐藏的项目,将Git显示出来。我们点进去就可以看见各种本地库和远程库。
在当前目录下面,就检测到是个Git库,当前显示它在master里面,这就全部完成了。
3. 在D:\44\mySpringCloud\microservicecloud-config
里面新建一个application.yml
我们开始模拟运维工程师直接要在刚刚新建的目录下干活,比如新建了一个配置,我们此时就要把这个配置上传然后让大管家获得。
所以我们新建一个文本,然后更改名字以及后缀为application.yml(要以UTF-8的形式保存!否则上传之后会报乱码的问题)
4.1YML内容
spring:
profiles:
active:
- dev
---
(保证了同一个文件不同配置环境的问题)
spring:
profiles: dev
#开发环境
application:|
name: microservicecloud-config-atguigu-dev
---
spring:
profiles: test
#测试环境
application:
name: microservicecloud-config-atguigu-test
#请保存为 UTF-8 格式
保存格式必须为 UTF-8
在另存为的时候要注意切换编码!否则 GitHub 会报错
将上一步的YML文件推送到 github 上
三大命令
git add
git commit -m "init file"
git push origin master
(因为我们在master的分支下)
步骤结果
命令清单
此时要将我们的 yml 文件推送到 github 上使用 git 的三大命令
红色表示此时监控到了我们的目录发生了改变,之后我们要从本地硬盘提交它的临时库,同时要注意一定要写提交的注释信息
5.2.2GitHub
在网速还可以的情况下,我们就可以看到,刷新之后就会显示我们提交的文件信息。
新建 Module 模块 microservicecloud-config-3344 它即为 Cloud 的配置中心模块
选择 Maven Module 命名为 microservicecloud-config-33
POM
修改内容
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-server</artifactId></dependency>
全部内容
<projectxmlns="http:/maven.apache.org/PON/4.0.0”xmIns:xsi="http://ww.w3.org/2001/XNLSchema-instance"xsi:schemaLocation="http://maven.apache.org/PON/4.0.0http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.atguigu.springcloud</groupId><artifactId>microservicecloud
</ artifactId><version>0.0.1-SNAPSHOT</version>
</parent>
<artifactId>microservicecloud-config-3344</artifactId>
<dependencies>
<! -- springCloud Config --><dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-server</artifactId></dependency>
<!--避免 Config 的 Git 插件报错:
ong/eclipse/jgit/api/TransportConfigCallback-->
<dependency>
<groupId>org.eclipse.jgit</groupId>
<artifactId>org.eclipse.jgit</artifactId><version>4.10.0.201712302008-rs/version></dependency>
<!--图形化监控–-><dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId></dependency>
<! --熔断-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-hystrix< /artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</ groupId>
<artifactId>spring-cloud-starter-eureka</ artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud< / groupId>
<artifactId>spring-cloud-starter-config< / artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jetty< / artifactId>
</ dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</ artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</ artifactId>
</dependency>
<热部署插件>
<dependency>
<groupId>org.springframework</groupId><artifactId>springloaded< / artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId>
</dependency>
</dependencies>
</project>
YML
server:
port: 3344
spring:
application:
name:microservicecloud-config
cloud:
config:
server:
git:
uri:git@github.com:zzyybs/microservicecloud-config.git #GitHub
上面的 git 仓库名字
首先新建一个名为 application.yml 的文件,将内容复制进去。我们可以看到uri之后的就是我们前面建立的地址。
主启动类
Config_3344_StartSpringCloudApp --@EnableConfigServer
package com.atguigu.springcloud;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.config.server.EnableConfigServer;
@SpringBootApplication
@EnableConfigserver
public class Config_3344_stlrtSpringCloudApp
{
public static void main(String[ ] args)
{
SpringApplication.run(Config_3344_StartSpringCloudApp.class,args);}
}
4. windows下修改 hosts 文件,增加映射
-127.0.0.1 config-3344.com
5. 测试通过Config微服务是否可以从GitHub上获取配置内容
第一步:启动微服务3344
我们启动时,先打开远端的内容可以发现有两个,说明统一个 yml 文件可以两面配置,这样我们就可以达到一个动态环境的切换。首先我们来看看我们的3344,是否能够成功启动。成功启动。
第二步:
使用http://config-3344.com:3344/application-dev.yml
访问测试是否能够读取到。
application-dev.yml 表示我们要访问 application.yml 中的 -dev 环境,如果顺利的话就会读取到
microservicecloud-config-atguigu-dev。
第三步:访问test环境时,输入以下网址
http://config-3344.com:3344/application-test.yml,出现的-dev就会变成-test。
由此我们就成功的由334连上了我们的Github远程库。同时得到了该库下的两种不同配置环境结果。
http://config-3344.com:3344/application-xxx.yml(不存在的配置)
假设我们输入上方的网址访问了不存在的配置就会报错。
12.配置读取规则
官网
{application}-{profile}.yml
{application}/{profile}[/{label}]
l http://config-3344.com:3344/application/dev/master
l http://config-3344.com:3344/application/test/ma
l http://config-3344.com:3344/application/xxx/mas
{label}/{application}-{profile}.yml
l http://config-3344.com:3344/master/application-dev.yml
l http://config-3344.com:3344/master/application-test.yml
其中的一种演示结果如图,仅仅是把 master 放在前面。依旧能够成功访问。
以上的形式都可以用于访问。
成功实现了用 SpringCloud Config 通过 GitHub 获取配置信息