一.什么是分布式配置中心?
就是為微服務架構中的微服務提供集中化的外部配置支持,配置中心為各個微服務應用的所有環境提供了中心化的外部配置(可能比較難理解,想知道是什么意思就要知道為什么這么配置:這么配置就是為了解決微服務中很多個provider中的application.properties配置管理問題,以及配置冗余問題,把這些配置集中到一起進行存放,並且把重復的配置提取出來解決冗余)
1 . git hub 上存放我們的配置文件
2 . config-server 遠程連接到 git hub
3 . config-client 連接到config-server
運行:當我們啟動config-client 服務的時候,client 會通過連接的 config-server 拿到遠程git 上面的配置文件,然后通過 Spring 加載到對象中。
一個github賬號可以有很多個倉庫—>一個倉庫只能對應一個項目—>所以倉庫的名稱就是所要提交的項目名
如果是一個新的賬號,就必須先有一個命名空間(也是自己創建的,可以隨意起名)
選擇File–>clone repository–>選擇需要加載到本地的項目
開發環境:
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
當使用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
<dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-config-server</artifactId> </dependency> </dependencies>
#首先還是常規的: 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層的配置中心
<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>
此處的配置文件和之前的有區別,有兩個配置文件 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; } }
初次寫博客,不喜勿噴!!!