一.什麼是分散式配置中心? 就是為微服務架構中的微服務提供集中化的外部配置支持,配置中心為各個微服務應用的所有環境提供了中心化的外部配置(可能比較難理解,想知道是什麼意思就要知道為什麼這麼配置:這麼配置就是為瞭解決微服務中很多個provider中的application.properties配置管理 ...
一.什麼是分散式配置中心?
就是為微服務架構中的微服務提供集中化的外部配置支持,配置中心為各個微服務應用的所有環境提供了中心化的外部配置(可能比較難理解,想知道是什麼意思就要知道為什麼這麼配置:這麼配置就是為瞭解決微服務中很多個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;
}
}
初次寫博客,不喜勿噴!!!