Springcloud 2.x 版本 分布式配置中心


一.什么是分布式配置中心?

  就是為微服務架構中的微服務提供集中化的外部配置支持,配置中心為各個微服務應用的所有環境提供了中心化的外部配置(可能比較難理解,想知道是什么意思就要知道為什么這么配置:這么配置就是為了解決微服務中很多個provider中的application.properties配置管理問題,以及配置冗余問題,把這些配置集中到一起進行存放,並且把重復的配置提取出來解決冗余)

二.圖解運行

在這里插入圖片描述
  1 . git hub 上存放我們的配置文件
  2 . config-server 遠程連接到 git hub
  3 . config-client 連接到config-server
  運行:當我們啟動config-client 服務的時候,client 會通過連接的 config-server 拿到遠程git 上面的配置文件,然后通過 Spring 加載到對象中。

三.如何簡單實現springcloud config的分布式配置中心

1.創建github賬號

2.在github上面創建repository(倉庫)

  一個github賬號可以有很多個倉庫—>一個倉庫只能對應一個項目—>所以倉庫的名稱就是所要提交的項目名
  如果是一個新的賬號,就必須先有一個命名空間(也是自己創建的,可以隨意起名)
在這里插入圖片描述

3.使用github desktop把項目加載到本地

  選擇File–>clone repository–>選擇需要加載到本地的項目
在這里插入圖片描述

4.創建三個文件(分為dev:開發環境,test:測試環境,pro:上線環境)

  開發環境:
  application-dev.properties   spring.profiles=dev   server.port=3081        spring.application.name=application-dev   spring.datasource.driver-class-name=com.mysql.jdbc.Driver   spring.datasource.url=jdbc:mysql://localhost:3306/dev?useSSL=false   spring.datasource.username=root   spring.datasource.password=root   spring.datasource.type=com.alibaba.druid.pool.DruidDataSource 
  測試環境:
  application-test.properties   spring.profiles=test   server.port=3081   spring.application.name=application-test   spring.datasource.driver-class-name=com.mysql.jdbc.Driver   spring.datasource.url=jdbc:mysql://localhost:3306/test?useSSL=false   spring.datasource.username=root   spring.datasource.password=root   spring.datasource.type=com.alibaba.druid.pool.DruidDataSource 

5.把配置好的三個文件提交到github上

  當使用github desktop提交代碼到github上的時候,只能一個一個的提交,不能一起提交
  選擇commit to master(記住這個master)
  選擇repository選擇–>push

四.分布式配置中心的訪問規則:

  無論是yml還是properties都可以使用該規則進行訪問:
  /{application}/{profile}[/{label}]

  properties文件:
  /{application}-{profile}.properties
  /{label(分支)}/{application}-{profile}.properties

  yml文件:
  /{application}-{profile}.yml
  /{label}/{application}-{profile}.yml

五.配置springcloud config

  5.1 server層的配置

    5.1.1 jar包
    <dependencies>      <dependency>      <groupId>org.springframework.cloud</groupId>      <artifactId>spring-cloud-config-server</artifactId>       </dependency>     </dependencies> 
    5.1.2 application.properties配置
    #首先還是常規的:     server.port=4081     server.servlet.context-path=/     #配置application.name (可配置,可不配置) ,在此配置是為了提醒eureka中的這個配置(因為eureka中服務的發現就是找的這個名字),不要忘記     spring.application.name=springcloud-config-server-4081     #開始配置GitHub
    #先配置GitHub的倉庫的地址(在瀏覽器的地址欄上,直接復制就好)     spring.cloud.config.server.git.uri=https://github.com/命名空間/倉庫名     #配置GitHub的賬號和密碼     spring.cloud.config.server.git.username=郵箱/賬號     spring.cloud.config.server.git.password=密碼     #配置GitHub的倉庫的搜索路徑(固定的不要補全!!!)     spring.cloud.config.server.git.search-paths=config-repo     #跳過SSL的認證     spring.cloud.config.server.git.skip-ssl-validation=true   
  5.1.3 ApplicationRun啟動類注解
    除了常規的@@SpringBootApplication外,還有一個@EnableConfigServer,標明是server層的配置中心

 5.2 client 層的配置

  5.2.1 jar包
  <dependencies>    <dependency>    <groupId>com.wlx.springcloud</groupId>    <artifactId>20191108-management-model</artifactId>    <version>1.0-SNAPSHOT</version>    </dependency>    <dependency>    <groupId>mysql</groupId>    <artifactId>mysql-connector-java</artifactId>    </dependency>    <dependency>    <groupId>com.alibaba</groupId>    <artifactId>druid</artifactId>    </dependency>    <dependency>    <groupId>org.mybatis.spring.boot</groupId>    <artifactId>mybatis-spring-boot-starter</artifactId>    </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>   </dependencies> 
  5.2.2 配置config 文件

  此處的配置文件和之前的有區別,有兩個配置文件 bootstrap.properties 和 application.properties 文件,配置兩個文件的作用就是:查漏補缺。
把相同的配置放到了GitHub上,有差異的配置放在了application文件中,加載的時候會把這兩個文件進行合並
  Bootstrap.properties文件:

  #從github上讀取所要配置的文件的名稱   #從GitHub上的repository讀取文件名   #根據讀取的規則:不要加后綴名 .properties或.yml   spring.cloud.config.name=application-dev   #配置prpfile的名稱   #必須要和GitHub上文件配置中心中的spring.profile的值一致,否則匹配不到   spring.cloud.config.profile=dev   #配置label(master) 如果使用默認的就不需要配置   spring.cloud.config.label=master   #配置config的 服務器端 的地址及端口   spring.cloud.config.uri=http://localhost:端口號 

  Application.properties文件:

  #一定要和bootstrap.properties中的spring.cloud.config.name的值一致,否則映射不到`   spring.application.name=application-dev 
  5.2.3 測試是否鏈接成功server層的服務器,加載雲端的配置文件

  新創建一個controller目錄 –-> 創建一個controller測試類 TestController ,利用@Value注解獲取配置文件中的值

  @RestController   public class TestController {      @Value("${spring.datasource.driver-class-name}")    private String driverClassName; @RequestMapping("/test") public String test(){ return driverClassName; } } 

初次寫博客,不喜勿噴!!!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM