Spring Cloud Config分布式配置中心

Spring Cloud Config是什么?

  Spring Cloud Config 是一个解决分布式系统的配置管理方案。它包含 Client和 Server 两个部分,Server 提供配置文件的存储、以接口的形式将配置文件的内容提供出去,Client 通过接口获取数据、并依据此数据初始化自己的应用。Spring cloud 使用 git 或 svn 存放配置文件,默认情况下使用 git。

构建Springcloud config 配置中心:

创建springcloud config server 项目:

  在 pom.xml 文件中添加如下依赖:

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

  入口类添加@EnableConfigServer注解:

@EnableConfigServer
@SpringBootApplication
public class CloudServerApplication {
    public static void main(String[] args) {
        SpringApplication.run(CloudServerApplication.class,args);
    }
}

  在 application.properties 中配置一下 git 仓库信息,首 先 在 我 的 Github 上 创 建 一 个 名 为spring-cloud-config 的项目,创建之后,再做如下配置:

#内嵌tomcat
server.port=3721
#服务名称
spring.application.name=07springcloudconfigserver

#uri 表示配置中心所在仓库的位置
spring.cloud.config.server.git.uri=https://github.com/nanxiaojiang/spring-cloud-config.git
#search-paths 表示仓库下的子目录
spring.cloud.config.server.git.search-paths=config-center
spring.cloud.config.label=master
#登录GitHub的用户名和密码
spring.cloud.config.server.git.username=username
spring.cloud.config.server.git.password=password

构建 Springcloud config 配置中心仓库:

  在本地新建一个nj/config-center文件夹,然后在文件夹中创建四个配置文件,如下:

application.properties
application-dev.properties
application-test.properties
application-online.properties

  在文件里面分别写入:

url=http://www.baidu.com
url=http://dev.baidu.com
url=http://test.baidu.com
url=http://online.baidu.com

最后使用如下命令将本地文件同步到git仓库当中:
  1、添加提交人的账号信息,git 需要知道提交人的信息作为标识;

git config --global user.name 'nj'
git config --global user.email 'nanjiangdayd@163.com'

  2、将该目录变为 git 可以管理的目录;将文件添加到暂存区;

git init
git add config-center/

  3、把文件提交到本地仓库;

git commit -m 'add config-center'

  4、添加远程主机;

git remote add origin https://github.com/nanxiaojiang/spring-cloud-config.git

  5、将本地的 master 分支推送到 origin 主机;

git push -u origin master

  这样我们的配置文件就上传到 GitHub 上了。可以通过/{application}/{profile}/{label}就能访问到我们的配置文件了;其中:
  {application} 表示配置文件的名字,对应的配置文件即 application,
  {profile} 表示环境,有 dev、test、online 及默认,
  {label} 表示分支,默认我们放在 master 分支上,

返回的 JSON 格式的数据:

  name 表示配置文件名 application 部分,
  profiles 表示环境部分,
  label 表示分支,
  version 表示 GitHub 上提交时产生的版本号,
参数
  同时当我们访问成功后,在控制台会打印了相关的日志信息;当访问成功后配置中心会通过 git clone 命令将远程配置文件在本地也保存一份,以确保在 git 仓库故障时我们的应用还可以继续正常使用。

2021-01-13 18:10:19.217  INFO 22056 --- [nio-3721-exec-5] s.c.a.AnnotationConfigApplicationContext : Refreshing org.springframework.context.annotation.AnnotationConfigApplicationContext@145f3b2: startup date [Wed Jan 13 18:10:19 CST 2021]; root of context hierarchy
2021-01-13 18:10:19.226  INFO 22056 --- [nio-3721-exec-5] o.s.c.c.s.e.NativeEnvironmentRepository  : Adding property source: file:/C:/Users/jinxin/AppData/Local/Temp/config-repo-1717494517461632130/config-center/application-dev.properties
2021-01-13 18:10:19.226  INFO 22056 --- [nio-3721-exec-5] o.s.c.c.s.e.NativeEnvironmentRepository  : Adding property source: file:/C:/Users/jinxin/AppData/Local/Temp/config-repo-1717494517461632130/config-center/application.properties
2021-01-13 18:10:19.226  INFO 22056 --- [nio-3721-exec-5] s.c.a.AnnotationConfigApplicationContext : Closing org.springframework.context.annotation.AnnotationConfigApplicationContext@145f3b2: startup date [Wed Jan 13 18:10:19 CST 2021]; root of context hierarchy

构建 Springcloud config 配置中心客户端:

#创建springcloud config client项目:

1、创建一个SpringBoot项目导入pom依赖坐标:

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

2、创建 bootstrap.properties 文件,用于获取配置信息;
(注意这些信息一定要放在 bootstrap.properties 文件中才有效)

#内嵌tomcat
server.port=3722

#name 对应配置文件中的 application 部分,
#profile 对应了 profile 部分,
#label 对应了 label 部分,
#uri 表示配置中心的地址。
spring.application.name=application
spring.cloud.config.profile=test
spring.cloud.config.label=master
spring.cloud.config.uri=http://localhost:3721/

3、创建Controller进行测试:

@RestController
@RefreshScope
public class ConfigController {
	/**
	* 可以使用@Value绑定获取数据
	**/
    @Value("${url}")
    private String url;

    @Autowired
    private Environment env;

    @RequestMapping("/getUrl1")
    public String getUrl1(){
        return this.url;
    }
    @RequestMapping("/getUrl2")
    public String getUrl2(){
        return env.getProperty("url");
    }
}

Springcloud config 的安全保护:

  生产环境中我们的配置中心肯定是不能随随便便被人访问的,我们可以加上适当的保护机制,由于微服务是构建在 Spring Boot 之上,所以整合 Spring Security是最方便的方式。
1、在 springcloud config server 项目添加依赖:

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

2、在 springcloud config server 项目的 application.properties 中配置用户名密码:

#内嵌tomcat
server.port=3721
#服务名称
spring.application.name=07springcloudconfigserver

#uri 表示配置中心所在仓库的位置
spring.cloud.config.server.git.uri=https://github.com/nanxiaojiang/spring-cloud-config.git
#search-paths 表示仓库下的子目录
spring.cloud.config.server.git.search-paths=config-center
spring.cloud.config.label=master
#登录GitHub的用户名和密码
spring.cloud.config.server.git.username=username
spring.cloud.config.server.git.password=password

#测试整合spring security
spring.security.user.name=nj
spring.security.user.password=111111

3、在 springcloud config client 上 bootstrap.properties 配置用户名和密码:

spring.cloud.config.username=nj
spring.cloud.config.password=111111

启动项目测试查看:
默认有个登陆窗口
登陆失败
登录成功

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值