1. 程式人生 > >SpringCloud的分散式配置及訊息匯流排

SpringCloud的分散式配置及訊息匯流排

 

1.在搭建分散式配置時,我們大概看下分散式配置的流程 如圖所示:

當一個系統中的配置檔案發生改變的時候,我們需要重新啟動該服務,才能使得新的配置檔案生效,spring cloud config可以實現微服務中的所有系統的配置檔案的統一管理,而且還可以實現當配置檔案發生變化的時候,系統會自動更新獲取新的配置。目前目前springCloud僅支援RabbitMQ和Kafka ,我採用的市RabbitMQ搭建

2.搭建git地址

在流程中 首先我們應該在git或者碼雲上建立一個資料夾來專門獲取配置 如圖所示:

我的git地址:https://gitee.com/zcggit/study/,其中config專門來放置遠端讀取的配置資訊

3.搭建RabbitMq

安裝RabbitMq前需要安裝erlang  

  無腦下一步即可

 

4.建立Eureka註冊中心

pom.xml引用

5.搭建Config-Server

(1) 引用Maven依賴

<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>zcg.springcloud.com</groupId>
<artifactId>springcloud-configServer</artifactId>
<version>0.0.1-SNAPSHOT</version>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.2.RELEASE</version>
</parent>

<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-bus-parent</artifactId>
<version>2.0.0.RC2</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>

<dependencies>
<!-- SpringBoot整合Web元件 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--spring-cloud 整合 config-server -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-server</artifactId>
<version>2.0.2.RELEASE</version>
</dependency>

<!-- SpringBoot整合eureka客戶端 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
<version>2.0.2.RELEASE</version>
</dependency>

<!--核心jar包 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bus-amqp</artifactId>
</dependency>
<!-- actuator監控中心 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
</dependencies>
<!-- 注意: 這裡必須要新增, 否者各種依賴有問題 -->
<repositories>
<repository>
<id>spring-milestones</id>
<name>Spring Milestones</name>
<url>https://repo.spring.io/libs-milestone</url>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
</repositories>

</project>

(2).引用application.yml配置資訊###服務註冊到eureka地址

其中

cloud:
config:
server:
git:
###git環境地址
uri: https://gitee.com/zcggit/study.git   代表git的地址
force-pull: true     代表強制從git上強制拉取覆蓋本地  我找這個錯就找了一下午

 

####搜尋目錄
search-paths:- config     git上的搜尋路徑
label: master  從git的主幹上讀取

(3)。建立啟動類

 

讀取配置檔案http://127.0.0.1:8763/configclient-dev.yml,如果能夠訪問成功,證明搭建成功 如圖所示:

 

6.搭建Config-Client

(1)引用Maven依賴

<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>zcg.springcloud.com</groupId>
<artifactId>springcloud-configClient</artifactId>
<version>0.0.1-SNAPSHOT</version>

<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.1.RELEASE</version>
</parent>

<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-bus-parent</artifactId>
<version>2.0.0.RC2</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>

<!-- SpringBoot整合Web元件 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-client</artifactId>
<version>2.0.2.RELEASE</version>
</dependency>
<!-- SpringBoot整合eureka客戶端 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
<version>2.0.2.RELEASE</version>
</dependency>
<!--核心jar包 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bus-amqp</artifactId>
</dependency>
<!-- actuator監控中心 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

</dependencies>
<!-- 注意: 這裡必須要新增, 否者各種依賴有問題 -->
<repositories>
<repository>
<id>spring-milestones</id>
<name>Spring Milestones</name>
<url>https://repo.spring.io/libs-milestone</url>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
</repositories>



</project>

(2)bootstrap.yml配置程式碼

 

 

 

這裡客戶端的配置名為bootstrap.yml  這裡有坑  因為Springboot在Spring啟動前就bootstrap.yml,然後再載入application.yml檔案

(3)編寫config-Client的類

其中@RefreshScope代表  如果程式碼中需要動態重新整理配置,在需要的類上加上該註解就行

搭建完成  訪問http://localhost:8882/getUserName  就可以讀取配置上的檔案 如圖所示:

 

當修改git上的配置檔案時,使用postman請求http://127.0.0.1:8882/actuator/bus-refresh  即可將所有的configClient的相關配置修改,重新訪問即可得到配置檔案的最新配置 如圖所示:

如果有疑問,請加我QQ:1051980588  一起探討學習。我會把所有程式碼上傳到gt上  自行下載 看看