SpringCloud之分布式服务配置中心(Spring Cloud Config)

来源:互联网 发布:mac 网线转接头 驱动 编辑:程序博客网 时间:2024/04/29 00:25

1.介绍:

在现在的分布式系统中,服务器的数量越来越多;服务的配置文件也越来也繁多,为了统一的管理服务配置文件,就需要一个配置中心,这里SpringCloud为我们提供了一个非常好的插件spring cloud config,它既支持保存在本地的服务配置,有支持保存在git上的服务配置文件(本文主要是讲述git支持的配置中心)

2.服务介绍:(括号内为创建的demo服务名)

1).spring cloud config (config-server):配置中心服务端

2).spring cloud config client (config-client):配置中心客户端

3.config-server:服务配置中心

创建spring-boot 项目,服务名称为config-server,修改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.example</groupId>    <artifactId>config-server</artifactId>    <version>0.0.1-SNAPSHOT</version>    <packaging>jar</packaging>    <name>config-server</name>    <description>Demo project for Spring Boot</description>    <parent>        <groupId>org.springframework.boot</groupId>        <artifactId>spring-boot-starter-parent</artifactId>        <version>1.5.2.RELEASE</version>        <relativePath/> <!-- lookup parent from repository -->    </parent>    <properties>        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>        <java.version>1.8</java.version>    </properties>    <dependencies>        <dependency>            <groupId>org.springframework.cloud</groupId>            <artifactId>spring-cloud-config-server</artifactId>        </dependency>        <dependency>            <groupId>org.springframework.boot</groupId>            <artifactId>spring-boot-starter-test</artifactId>            <scope>test</scope>        </dependency>        <dependency>            <groupId>org.springframework.cloud</groupId>            <artifactId>spring-cloud-starter-eureka</artifactId>        </dependency>    </dependencies>    <dependencyManagement>        <dependencies>            <dependency>                <groupId>org.springframework.cloud</groupId>                <artifactId>spring-cloud-dependencies</artifactId>                <version>Camden.SR6</version>                <type>pom</type>                <scope>import</scope>            </dependency>        </dependencies>    </dependencyManagement>    <build>        <plugins>            <plugin>                <groupId>org.springframework.boot</groupId>                <artifactId>spring-boot-maven-plugin</artifactId>            </plugin>        </plugins>    </build>    <repositories>        <repository>            <id>spring-milestones</id>            <name>Spring Milestones</name>            <url>https://repo.spring.io/milestone</url>            <snapshots>                <enabled>false</enabled>            </snapshots>        </repository>    </repositories></project>

在主类SpringCloudConfig.class添加注解@EnableConfigServer,开启配置中心服务器的功能

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

修改application.properties文件

spring.application.name=config-serverserver.port=8780spring.cloud.config.server.git.uri=https://github.com/qichunlei/springCloud#spring.cloud.config.server.git.searchPaths=springCloudspring.cloud.config.label=masterspring.cloud.config.server.git.username=qichunleispring.cloud.config.server.git.password=****
注:spring.cloud.config.server.git.uri= git仓库地址

spring.cloud.config.label=  git的分支(默认master)

spring.cloud.config.server.git.username=git仓库的用户名

spring.cloud.config.server.git.password=git仓库的密码 

本例远程仓库地址https://github.com/qichunlei/springCloud下有配置文件repo.properties

启动服务,访问http://localhost:8780/repo/master,查看返回集

{"name":"repo","profiles":["master"],"label":"master","version":"9891c5c21249f41fac3b68a11deb3d01568c1a8f","state":null,"propertySources":[{"name":"https://github.com/qichunlei/springCloud/repo.properties","source":{"url":"http://localhost:8983/repo/master","springCloud.zuul.port":"8985","springCloud.client.host":"8984","eureka.client.host":"8982","springCloud.client.name":"springCloudCofigClient","eureka.client.name":"eurekaService","demo.server.host":"8081","springCloud.server.host":"8983","hello":"hello.pro","demo.server.name":"demo-2","springCloud.server.name":"springCloudCofig","springCloud.zuul.name":"spring-Zuul"}}]}

表明配置中心服务器创建成功。

4.confit-client:配置中心客户端

创建springboot项目,修改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.example.demo</groupId><artifactId>config-client</artifactId><version>0.0.1-SNAPSHOT</version><packaging>jar</packaging><name>config-client</name><description>Demo project for Spring Boot</description><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>1.5.2.RELEASE</version><relativePath/> <!-- lookup parent from repository --></parent><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><java.version>1.8</java.version></properties><dependencies>  <dependency>        <groupId>org.springframework.boot</groupId>        <artifactId>spring-boot-starter-test</artifactId>        <scope>test</scope>    </dependency>    <dependency>        <groupId>org.springframework.boot</groupId>        <artifactId>spring-boot-starter-web</artifactId>    </dependency>    <dependency>        <groupId>org.springframework.cloud</groupId>        <artifactId>spring-cloud-starter-config</artifactId>    </dependency>     <dependency>            <groupId>org.springframework.cloud</groupId>            <artifactId>spring-cloud-starter-eureka</artifactId>        </dependency></dependencies><dependencyManagement> <dependencies>        <dependency>            <groupId>org.springframework.cloud</groupId>            <artifactId>spring-cloud-dependencies</artifactId>            <version>Brixton.RELEASE</version>            <type>pom</type>            <scope>import</scope>        </dependency>    </dependencies></dependencyManagement><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build><repositories><repository><id>spring-milestones</id><name>Spring Milestones</name><url>https://repo.spring.io/milestone</url><snapshots><enabled>false</enabled></snapshots></repository></repositories></project>

修改配置文件bootstrap.properties(注:bootstrap.application配置的是服务端信息,一定要由于application.properties启动,否则会报错)

spring.application.name=repospring.cloud.config.profile=repospring.cloud.config.label=master spring.cloud.config.uri=http://localhost:8780

spring.cloud.config.label=仓库分支
spring.cloud.config.uri=服务端地址

spring.cloud.config.profile=配置文件

修改SpringCloudConfigClient.class,添加方法info,代码如下

@SpringBootApplication@EnableEurekaClient@RestControllerpublic class SpringClodeConfigClient {public static void main(String[] args) {SpringApplication.run(SpringClodeConfigClient.class, args);}@Autowiredvoid setEnviroment(Environment env) {    System.err.println("my-config.appName: "         + env.getProperty("hello"));}@Value("${hello}")String hello;@RequestMapping(value = "/info")public String hi(){return hello;}}

启动服务,访问http://localhost:8783/info,获得返回值

hello.pro

自此,服务配置中心配置完成。

阅读全文
0 0