springCloud 四.使用config控制 分佈式配置問題

1. spring cloud config 瞭解

spring cloud config 爲微服務架構中的各個服務提供了集中化的外部配置,配置服務器爲各個不同的微服務環境提供了一個中心化的配置

簡單的來說,可以將一些配置信息放在git上面,config通過方式獲取git上面的配置信息,在分給需要配置的 分佈式服務

解決了部署導致配置文件不好管理的問題,而且配置環境有開發環境測試環境和上線環境,用了config之後就很好的改變配置

2. config具體的使用

2.1 創建一個遠程git遠程庫

這裏就不說了,你可以創建github 或者是 碼雲

創建成功後 複製倉庫地址

先留着之後配置需要用

2.2 創建一個新的工程子項目 關聯後開始導依賴

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-config-server</artifactId>
</dependency>
<dependency>
	<groupId>org.springframework.cloud</groupId>
	<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>

記得最好要把這個工程綁定到euerka上面,包也有可以看我前面的文章,這裏直說config

2.3 application.yml文件配置


#開放端口
server:
  port: 8989

spring:
  cloud:
    config:
      server:
        git:
          #git上的地址複製到這裏
          uri: https://github.com/pretty-cat/spring-cloud-config-center.git
          #如果是私有倉庫你需要登錄你的賬號密碼(沒有不用謝這兩個)
          username: xxxx沒有不填寫
          password: 沒有不寫
  application:
    name: cloud-config
    
#eureka的配置
eureka:
  client:
    register-with-eureka: true
    fetch-registry: false
    service-url:
      defaultZone: http://localhost:8761/eureka/
  instance:
    prefer-ip-address: true

2.4 啓動類配置

加一個註解 @EnableConfigServer

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

3 測試

你可先放一個yml文件放到git上,之後按步驟配置好

在瀏覽器輸入:http://localhost:8989/application-dev.yml

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-BksRnw7P-1570769926161)(7091BC22191A449DAB587C81723334E0)]

其中application爲github中配置文件的文件名,dev爲配置文件中application.profiles的值

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-lD5L6fPp-1570769926163)(E07E41828A184F4B913449A67AC3FD84)]

如果測試沒問題,說明這個子工程就搞定了

接下來我們就需要去其他需要配置放到git上的子工程操作了

4. 配置客戶端

4.1 相關依賴

<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-netflix-eureka-client</artifactId>
</dependency>

4.2 application.yml配置放到git上

這裏注意了:

  1. 我們的子項目都有端口,所以我們爲了區分最好要在appplication後加上你的端口號別搞混了
  2. 我們一個子工程的yml配置需要放3份 開發環境下的(dev) 測試的(test) 本身的(不寫)
  3. 注意注意一定要分清楚

4.3 bootstrap.yml配置用來指定遠端的配置

因爲配置都放到遠端了,所以我們需要,指定我們要的配置,而且不能用application了

創建一個bootstrap.yml

spring:
  cloud:
    config:
      name: git上的文件名                 #文件名
      profile: dev/test/pro                  #加載哪個文件
      uri: http://localhost:8989        #config服務器的地址

注意:因爲application.yml文件我們放到了git中,所以我們在代碼中就不需要application.yml了,可以重命名成bootstrap.yml在放入一下代碼,不然會配置文件衝突導致開啓不了(報一大堆到不到配置的錯)

之後運行,就沒問題了!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章