欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

spring cloud config配置中心

程序员文章站 2022-07-15 09:49:01
...
 一、spring cloud简介    基于spring boot
       Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智能路由,微代理,控制总线)。
分布式系统的协调导致了样板模式, 使用Spring Cloud开发人员可以快速地支持实现这些模式的服务和应用程序

         中文文档:https://springcloud.cc/

         官方文档:http://projects.spring.io/spring-cloud/#quick-start

   二、spring cloud config配置中心
    Spring Cloud Config就是我们通常意义上的配置中心。Spring Cloud Config-把应用原本放在本地文件的配置抽取出来放在中心服务器,本质是配置信息从本地迁移到云端。从而能够提供更好的管理、发布能力。
        Spring Cloud Config分服务端和客户端,服务端负责将git(svn)中存储的配置文件发布成REST接口,客户端可以从服务端REST接口获取配置。

但客户端并不能主动感知到配置的变化,从而主动去获取新的配置,这需要每个客户端通过POST方法触发各自的/refresh。


一个简单的案例

需要在github上创建一个项目  把连接数据的四要素(properties文件)放在该项目下    该配置文件分为三个阶段

jdbc-dev.properties======开发版  ip配置localhost
jdbc-test.properties======测试版  ip配置局域网
jdbc-pro.properties=======上线版  ip配置公网地址


spring cloud config配置中心


服务端的配置

    pom.xml中的配置

<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>cn.et</groupId>  
  <artifactId>SPRINGCLOUD_CONFIGSERVER</artifactId>  
  <version>0.0.1-SNAPSHOT</version>  
    
    
    
  <parent>  
        <groupId>org.springframework.boot</groupId>  
        <artifactId>spring-boot-starter-parent</artifactId>  
        <version>1.5.9.RELEASE</version>  
    </parent>  
    <dependencyManagement>  
        <dependencies>  
            <dependency>  
                <groupId>org.springframework.cloud</groupId>  
                <artifactId>spring-cloud-dependencies</artifactId>  
                <version>Dalston.SR4</version>  
                <type>pom</type>  
                <scope>import</scope>  
            </dependency>  
        </dependencies>  
    </dependencyManagement>  
    <dependencies>  
        <dependency>  
            <groupId>org.springframework.cloud</groupId>  
            <artifactId>spring-cloud-config-server</artifactId>     服务器  
        </dependency>  
    </dependencies>  
</project>  

  在resource中创建一个application.properties文件  配置如下

spring.cloud.config.server.git.uri=https://github.com/panhaigang/distributedFile     用于连接远程(github)  
server.port=8089     对外暴露端口  

 启动服务端

package cn.et;  
  
import org.springframework.boot.SpringApplication;  
import org.springframework.boot.autoconfigure.SpringBootApplication;  
import org.springframework.cloud.config.server.EnableConfigServer;  
/*  
 * 启动分布式配置中心  读取远程git仓库配置文件  
 *   
 * 所有spring的配置中心的配置文件 都有以下几种格式组成  
 *   1 配置文件属于哪个应用的(Application)  
 *   2 配置文件属于哪个阶段(profile)     开发阶段   测试阶段   产品阶段  
 *   
 *   
 *   
 */  
@EnableConfigServer  
@SpringBootApplication  
public class Main {  
    public static void main(String[] args) {  
        SpringApplication.run(Main.class, args);  
    }  
}  


检查是否能正常使用

spring cloud config配置中心


客户端的配置

      需要一个连接服务器的配置    默认为bootstrap.properties文件

spring.cloud.config.uri=http://localhost:8089    连接服务器的地址  
spring.application.name=jdbc    那个应用的配置文件         
spring.profiles.active=pro      那个阶段的配置文件 

因为spring cloud是基于spring boot 任就需要一个application.properties文件

    pom.xml配置

<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>cn.et</groupId>  
  <artifactId>SPRINGCLOUD-CONFINGCLIENT</artifactId>  
  <version>0.0.1-SNAPSHOT</version>  
  <packaging>war</packaging>  
    
    
    
    <parent>  
        <groupId>org.springframework.boot</groupId>  
        <artifactId>spring-boot-starter-parent</artifactId>  
        <version>1.5.9.RELEASE</version>  
    </parent>  
    <dependencyManagement>  
        <dependencies>  
            <dependency>  
                <groupId>org.springframework.cloud</groupId>  
                <artifactId>spring-cloud-dependencies</artifactId>  
                <version>Dalston.SR4</version>  
                <type>pom</type>  
                <scope>import</scope>  
            </dependency>  
        </dependencies>  
    </dependencyManagement>  
    <dependencies>  
        <dependency>  
            <groupId>org.springframework.cloud</groupId>  
            <artifactId>spring-cloud-starter-config</artifactId>     客户端  
        </dependency>  
    <dependencies>  

 接收从远程云端连接数据库的四要素的类

package cn.et.works;  
  
import javax.sql.DataSource;  
  
import org.springframework.beans.factory.annotation.Value;  
import org.springframework.context.annotation.Bean;  
import org.springframework.context.annotation.Configuration;  
  
import com.alibaba.druid.pool.DruidDataSource;  
  
  
@Configuration  
public class Configjdbc {  
      
      
    @Value("${username1}")  
    private String username1;  
      
    @Value("${password}")  
    private String password;  
      
    @Value("${driverClass}")  
    private String driverClass;  
      
      
    @Value("${url}")  
    private String url;  
      
      
      
      
    @Bean  
    public DataSource myDataSource(){  
        DruidDataSource dds=new DruidDataSource();  
        dds.setUrl(url);  
        dds.setPassword(password);  
        dds.setUsername(username1);  
        dds.setDriverClassName(driverClass);  
        return dds;  
    }  
      
}  

 启动客户端     可以用一个项目来测试一下是否成功

package cn.et.works;  
  
  
import org.springframework.boot.SpringApplication;  
import org.springframework.boot.autoconfigure.SpringBootApplication;  
  
@SpringBootApplication  
public class Main {  
     public static void main(String[] args) {  
        SpringApplication.run(Main.class, args);  
    }  
}