【Spring Cloud】Spring Cloud Config 实现分布…
2019-09-17 10:13:34来源:博客园 阅读 ()
【Spring Cloud】Spring Cloud Config 实现分布式配置中心
Spring Cloud Config 实现分布式配置中心
一、分布式配置中心
分布式系统中,往往拥有大量的服务应用,而每个应用程序都需要有对应的配置文件来协助完成服务环境初始化、运行。因此生产了大量的服务配置文件,Spring Cloud Config 可以实现配置文件的统一管理,它支持将配置服务放置在服务端的内存中(即服务端的本地内存),并且它也默认支持 git
,所以我们也可将配置文件放置在 git
仓库,以便于我们的访问和开发。
二、Spring Cloud Config 起步
实现管理配置的方式有多种,例如使用 Eureka
或者 Spring Cloud Config
以及文件系统等,本次采用 Spring Cloud Config + Git 储存库的方式实现。
在本次的 Spring Cloud Config 组件中,总共有三个角色,一是 Config Server,一个是 Config Client,然后就是 Git 远程仓库。
构建配置中心服务端 Config Server
新建一个 Spring Boot 项目
创建 pom.xml
文件
<?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">
<modelVersion>4.0.0</modelVersion>
<groupId>com.jojo</groupId>
<artifactId>configurationserver</artifactId>
<version>1.0.0-SNAPSHOT</version>
<packaging>jar</packaging>
<name>Config Server</name>
<description>Config Server demo for demo project</description>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<version>2.0.3.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<version>2.0.3.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-server</artifactId>
<version>2.0.0.RELEASE</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<mainClass>com.jojo.configuration.server.ConfigServerApplication</mainClass>
</configuration>
</plugin>
</plugins>
</build>
</project>
创建 Spring Cloud Config 引导类
package com.jojo.configuration.server;
import ch.qos.logback.classic.joran.action.ConfigurationAction;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.config.server.EnableConfigServer;
@SpringBootApplication
@EnableConfigServer
public class ConfigServerApplication {
public static void main(String[] args) {
SpringApplication.run(ConfigurationAction.class, args);
}
}
在 resources
目录下创建 application.yml 配置文件,并做以下配置
spring:
application:
name: Config Server
cloud:
config:
label: master
server:
git:
uri: http://ip:port/path
search-paths: repos
username: username
password: password
server:
port: 8888
配置文件说明:
spring.cloud.config.label
:配置的远程仓库的分支spring.cloud.config.server.git.uri
:配置 Git 仓库地址(Github、GitLab、码云...)spring.cloud.config.server.git.search-paths
:配置 Git 仓库中放置配置文件的目录spring.cloud.config.server.git.username
:配置访问 Git 仓库的用户名spring.cloud.config.server.git.password
:配置访问 Git 仓库的密码
注意实现:
- 如果使用 GitLab 作为仓库的话,
git.uri
需要在结尾加上.git
,GitHub 仓库则不用。
创建分布式配置中心客户端
本次客户端简单得以一个 Spring Boot Admin 程序为例,本地配置文件只做简单得对接配置,将与 Spring Boot Admin 有关的配置放置在远程仓库。
在项目目录下创建 pom.xml
文件
<?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">
<modelVersion>4.0.0</modelVersion>
<groupId>com.jojo</groupId>
<artifactId>configurationclient</artifactId>
<version>1.0.0-SNAPSHOT</version>
<packaging>jar</packaging>
<name>Config Client</name>
<description>Config Client demo for demo project</description>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<java.version>1.8</java.version>
</properties>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.2.RELEASE</version>
</parent>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Finchley.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>
<dependency>
<groupId>org.jolokia</groupId>
<artifactId>jolokia-core</artifactId>
<version>1.6.2</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>de.codecentric</groupId>
<artifactId>spring-boot-admin-starter-server</artifactId>
<version>2.0.0</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<mainClass>com.jojo.configuration.client.ConfigClientApplication</mainClass>
</configuration>
</plugin>
</plugins>
</build>
</project>
配置引导类
package com.jojo.configuration.client;
import de.codecentric.boot.admin.server.config.EnableAdminServer;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
@EnableAdminServer
public class ConfigClientApplication {
public static void main(String[] args) {
SpringApplication.run(ConfigClientApplication.class, args);
}
}
在 resources
目录下创建 application.yml 配置文件,并做以下配置
spring:
cloud:
config:
uri: uri
label: master
name: config-client
profile: dev
接下来对配置文件做说明:
spring.cloud.config.uri
:配置分布式配置中心的网址spring.cloud.config.label
:配置远程 Git 仓库的分支spring.cloud.config.name
:配置此服务对应的远程配置文件名称的前缀spring.cloud.config.profile
:配置文件的环境标识
注意事项:
- 分布式配置中服务器的默认端口为
8888
,如果修改了默认端口,则客户端项目就不能在application.yml
或application.properties
中配置spring.cloud.config.uri
,必须在bootstrap.yml
或是bootstrap.properites
中配置,原因是bootstrap
开头的配置会被优先加载和配置。
配置远程 Git 仓库
在远程 Git 中新建项目,并在项目中创建 repos
目录,在目录下创建 config-client-dev.yml
配置文件,并在文件中做以下配置:
spring:
application:
name: Config Client
server:
port: 8081
management:
endpoint:
health:
show-details: always
endpoints:
web:
exposure:
include: health,info
测试
打开浏览器,访问 http://localhost:8081
,如果能看到下示界面,则表示配置成功!
三、HTTP 请求地址和资源文件映射
- http://ip:port/{application}/{profile}[/{label}]
- http://ip:port/{application}-{profile}.yml
- http://ip:port/{label}/{application}-{profile}.yml
- http://ip:port/{application}-{profile}.properties
- http://ip:port/{label}/{application}-{profile}.properties
原文链接:https://www.cnblogs.com/jojop/p/11490203.html
如有疑问请与原作者联系
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:Java自学-接口与继承 接口
下一篇:Redis集群下过期key监听
- Spring系列.ApplicationContext接口 2020-06-11
- springboot2配置JavaMelody与springMVC配置JavaMelody 2020-06-11
- 给你一份超详细 Spring Boot 知识清单 2020-06-11
- SpringBoot 2.3 整合最新版 ShardingJdbc + Druid + MyBatis 2020-06-11
- 掌握SpringBoot-2.3的容器探针:实战篇 2020-06-11
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash