6_config分佈式配置中心

前言

代碼仍是使用以前的代碼,若是須要完整代碼,請拉倒文章底部獲取java

一、新建工程config-server

1.一、添加pom依賴

<dependency>
         <groupId>org.springframework.cloud</groupId>
         <artifactId>spring-cloud-config-server</artifactId>
      </dependency>
<?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.didispace</groupId>
   <artifactId>config-server</artifactId>
   <version>1.0.0</version>
   <packaging>jar</packaging>

   <name>config-server</name>
   <description>Spring Cloud project</description>

   <parent>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-parent</artifactId>
      <version>1.3.7.RELEASE</version>
      <relativePath/> <!-- lookup parent from repository -->
   </parent>

   <properties>
      <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
      <java.version>1.8</java.version>
   </properties>

   <dependencies>

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

   </dependencies>

   <dependencyManagement>
      <dependencies>
         <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-dependencies</artifactId>
            <version>Brixton.SR5</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>

</project>

1.二、註解添加分佈式配置服務端支持

@EnableConfigServer
@SpringBootApplication
public class Application {

   public static void main(String[] args) {
      new SpringApplicationBuilder(Application.class).web(true).run(args);
   }

}

二、第一種:咱們以github倉庫爲例進行講解

2.一、建立github倉庫SpringcloudConfig

2.1.一、其根目錄下同時建立文件夾respo

2.1.二、該文件夾下建立配置文件 命名規則 :自定義項目名稱-profile.properties,分別寫入內容

from=git-dev-1.0
from=git-prod-1.0
from=git-test-1.0
from=git-default-1.0

ZldYLKEr3bpm4NJT

2.二、配置工程的配置文件,添加git倉庫的屬性,

spring.application.name=config-server
server.port=7001

# git倉庫
spring.cloud.config.server.git.uri=https://github.com/HealerJean/SpringcloudConfig/
spring.cloud.config.server.git.searchPaths=respo
spring.cloud.config.label=master
#公開倉庫不須要寫用戶名和密碼,若是是私有倉庫則須要些用戶名和密碼
spring.cloud.config.server.git.username=
spring.cloud.config.server.git.password=

2.三、測試啓動這個項目7001端口

瀏覽器訪問http://localhost:7001/didispace/prod/master //+分支名稱git

解釋:媽的,竟然真的有顯示,證實配置服務中心能夠從遠程程序獲取配置信息。

name:應用名稱 didispace
label 表示分支名稱 master
version 表示git上對應的版本號

{
	"name": "didispace",
	"profiles": ["prod"],
	"label": "master",
	"version": "68a075d11aea67d4989989c70152a9ac53367e82", 
	"propertySources": [{
		"name": "https://github.com/HealerJean123/SpringcloudConfig/respo/didispace-prod.properties",
		"source": {
			"from": "git-prod-1.0"
		}
	}, {
		"name": "https://github.com/HealerJean123/SpringcloudConfig/respo/didispace.properties",
		"source": {
			"from": "git-default-1.0"
		}
	}]
}

2.四、http請求地址和資源文件映射以下:

•	/{application}/{profile}[/{label}] 上上面的連接http://localhost:7001/didispace/prod/master
•	/{application}-{profile}.yml
•	/{label}/{application}-{profile}.yml
•	/{label}/{application}-{profile}.properties 

•	/{application}-{profile}.properties  http://localhost:7001/didispace-dev.properties

oaE4F5rxWSK3ki8q

三、客戶端映射

3.一、建立工程config-client,pom.xml以下

<dependency>
         <groupId>org.springframework.cloud</groupId>
         <artifactId>spring-cloud-starter-config</artifactId>
      </dependency>
<?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.didispace</groupId>
   <artifactId>config-client</artifactId>
   <version>1.0.0</version>
   <packaging>jar</packaging>

   <name>config-client</name>
   <description>Spring Cloud project</description>

   <parent>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-parent</artifactId>
      <version>1.3.7.RELEASE</version>
      <relativePath/> <!-- lookup parent from repository -->
   </parent>

   <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-web</artifactId>
      </dependency>

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

   <dependencyManagement>
      <dependencies>
         <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-dependencies</artifactId>
            <version>Brixton.SR5</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>

</project>

3.二、建立bootstrap.properties,來獲取配置文件config-server的位置

server.port=7002

spring.application.name=didispace
spring.cloud.config.profile=dev
spring.cloud.config.label=master
spring.cloud.config.uri=http://localhost:7001/

3.三、建立controller開始測試,經過後臺的from(只要在配置文件中,其實都是from)

**@RefreshScope**spring-cloud 實現更新配置不用重啓服務 @FreshScopegithub

@RefreshScope
@RestController
public class TestController {

    @Value("${from}")
    private String from;

    @RequestMapping("/from")
    public String from() {
        return this.from;
    }

}

3.四、瀏覽器訪問 http://localhost:7002/from

ZoPcnfHkL2m3TXyA

四、添加Eurake服務註冊中心

使用以前的註冊中心 1111web

4.一、配置config-server

4.1.一、添加eurake依賴包

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

4.1.二、啓用註冊發現,和配置服務註冊地址

@EnableDiscoveryClient
@EnableConfigServer
@SpringBootApplication
public class Application {

   public static void main(String[] args) {
      new SpringApplicationBuilder(Application.class).web(true).run(args);
   }

}

4.1.三、指定註冊中心

#eurake
#指定服務註冊中心
eureka.client.serviceUrl.defaultZone=http://localhost:1111/eureka/

4.二、配置config-client

4.2.一、添加eurake依賴包

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

4.2.二、啓用註冊發現

@EnableDiscoveryClient
@SpringBootApplication
public class Application {

   public static void main(String[] args) {
      new SpringApplicationBuilder(Application.class).web(true).run(args);
   }
}

4.2.三、配置服務註冊中心和服務端的config

server.port=7002
spring.application.name=didispace


spring.cloud.config.enabled=true
spring.cloud.config.discovery.service-id=CONFIG-SERVER
spring.cloud.config.profile=dev

4.2.四、開始測試,成功

HealerJean-代碼下載

五、項目實戰中的config

5.一、新建項目sso-config

5.1.一、添加pom依賴

<dependencies>
      <dependency>
         <groupId>org.springframework.cloud</groupId>
         <artifactId>spring-cloud-config-server</artifactId>
      </dependency>
<?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.carl.auth</groupId>
   <artifactId>sso-config</artifactId>
   <version>0.0.1-SNAPSHOT</version>
   <packaging>jar</packaging>

   <name>sso-config</name>
   <description>Demo project for Spring Boot</description>

   <parent>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-parent</artifactId>
      <version>1.5.10.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>
      <spring-cloud.version>Edgware.SR2</spring-cloud.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>
   </dependencies>

   <dependencyManagement>
      <dependencies>
         <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-dependencies</artifactId>
            <version>${spring-cloud.version}</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>


</project>

5.1.二、添加配置管理器支持註解

@EnableConfigServer
@SpringBootApplication
public class SsoConfigApplication {

   public static void main(String[] args) {
      SpringApplication.run(SsoConfigApplication.class, args);
   }
}

5.1.三、編輯config服務端配置文件

server:
  #服務端口
  port: 8888
  #訪問路徑
  context-path: /config
  
#指定日誌輸出文件
logging:
  file: "logs/sso-config.log"
info:
  name : "配置中心"

---

spring:
  profiles:
    #本地配置文件
    active:
      #配置文件本地化
      - native
application:
    #指定應用名稱
    name: sso-config

5.1.四、運行這個spring boot項目,瀏覽器訪問 http://localhost:8888/config/ 說明下面的啓動成功

pX6QROsIqT4lMgLe

5.1.五、配置中心的位置,建立resource 下建立config文件夾,建立sso-dev.propetries 編輯配置文件

一、上面咱們提到配置是放置於配置中心,而不放在服務內
二、因爲配置是放在與本地,那麼spring的默認配置在目錄爲resources/config

寫入內容spring

hello_key=value

h0WCGlpbKfAJZEqk

5.1.六、從新啓動spring boot項目,訪問 http://localhost:8888/config/sso/dev

E5Xazs9mMYUiudtq

name:應用名稱 sso -dev.properties配置文件的名稱
label 表示分支名稱 master
version 表示git上對應的版本號
{
	"name": "sso",
	"profiles": ["dev"],
	"label": null,
	"version": null,
	"state": null,
	"propertySources": [{
		"name": "classpath:/config/sso-dev.properties",
		"source": {
			"hello_key": "value"
		}
	}]
}

5.二、接入客戶端

#指定日誌文件
logging.file=logs/cas.log
info.name=單點登陸系統

#定義application.name的id
spring.application.name=sso
#尋找配置中心爲sso-dev.properties
spring.profiles.active=dev
#指定配置中心地址
spring.cloud.config.uri=http://localhost:8888/config
#開啓配置中心
spring.cloud.config.enabled=true
#支持自動任務去配置中心刷新配置
spring.cloud.config.watch.enabled=true
#30秒刷新一次
spring.cloud.config.watch.initialDelay=30000
#請求配置中心超市
spring.cloud.config.watch.delay=1000
#檢查配置健康
health.config.enabled=true





感興趣的,歡迎添加博主微信,

哈,博主很樂意和各路好友交流,若是滿意,請打賞博主任意金額,感興趣的在微信轉帳的時候,備註您的微信或者其餘聯繫方式。添加博主微信哦。


請下方留言吧。可與博主自由討論哦apache

微信 微信公衆號 支付寶
微信 微信公衆號 支付寶
相關文章
相關標籤/搜索