【微服務】之三:從零開始,輕鬆搞定SpringCloud微服務-配置中心
官方解釋
Spring Cloud provides tools for developers to quickly build some of the common patterns in distributed systems (e.g. configuration management, service discovery, circuit breakers, intelligent routing, micro-proxy, control bus, one-time tokens, global locks, leadership election, distributed sessions, cluster state). Coordination of distributed systems leads to boiler plate patterns, and using Spring Cloud developers can quickly stand up services and applications that implement those patterns. They will work well in any distributed environment, including the developer's own laptop, bare metal data centres, and managed platforms such as Cloud Foundry.
本系列博文目錄
【微服務】從零開始,輕鬆搞定SpringCloud微服務目錄
說明:本系列原始碼持續更新,開始本篇之前先了解前面幾篇文章。
開始起飛
基本思路:本文采用Git倉庫作為配置檔案的存放地址,通過建立一個配置中心伺服器啟動服務,然後再通過建立一個配置中心的客戶端進行測試是否正常運轉。
建立配置中心倉庫
在原有的父類專案下建立一個普通的子專案,可以刪除無關的檔案,只留下空白專案。然後再建立一個測試的配置檔案。
配置檔案中加入測試資料
#隨意設定的一個引數
myblog:
name: 千萬之路剛開始-author-hyh
url: http://www.hanyahong.com
location: BeiJing
建立配置中心服務端
建立子專案
POM檔案配置
在pom.xml檔案中做一下配置
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-server</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
配置專案resource配置檔案
注:整個部落格是對各個子專案整合,因此加入了服務註冊中心的相關配置
在resources資料夾下建立application.yml檔案。並加入以下配置:
#服務埠
server:
port: 8082
#服務註冊中心配置
eureka:
client:
serviceUrl:
defaultZone: http://localhost:8081/eureka/
#spring設定
spring:
application:
name: config-server
cloud:
config:
server:
git:
uri: https://github.com/hanyahong/spring-cloud-microservice.git
searchPaths: cloud-hyh-config-repo
建立主方法類
在建立完包以後,建立主方法。
@EnableDiscoveryClient
@SpringBootApplication
@EnableConfigServer
public class ConfigApplication {
public static void main(String[] args) {
SpringApplication.run(ConfigApplication.class, args);
}
}
至此,服務端配置完畢,啟動伺服器即可,等待客戶端驗證。
建立客戶端
建立一個配置客戶端,對剛剛的服務進行測試。
@EnableDiscoveryClient: 服務發現客戶端註解,用於被發現。
@EnableConfigServer: 開啟配置中心伺服器配置。
建立客戶端子專案
配置pom檔案
在子專案pom.xml中加入一下依賴及外掛。
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
建立配置檔案
在子專案中resources資料夾下,建立bootstrap.yml檔案。加入一下配置。
spring:
application:
#本專案名稱
name: config-client
cloud:
config:
#配置中心伺服器地址配置
uri: http://localhost:8082/
profile: default
label: master
retry:
# 配置重試次數,預設為6
max-attempts: 6
# 間隔乘數 預設1.1
multiplier: 1.1
# 初始重試間隔時間,預設1000ms
initial-interval: 1000
# 最大間隔時間,預設2000ms
max-interval: 2000
server:
port: 8091
#服務發現配置
eureka:
client:
service-url:
defaultZone: http://localhost:8081/eureka/
建立程式入口
建立預設包以後建立ConfgClientApplication.java 檔案。
/**
* @Description :配置中心啟動類
* @Author hanyahong
* @Date 2017/12/6- 14:06
*/
@SpringBootApplication
public class ConfigClientApplication {
public static void main(String[] args) {
SpringApplication.run(ConfigClientApplication.class, args);
}
}
建立測試API
建立一個測試API檔案,TestApi.java。
/**
* @Description :配置中心-客戶端展示API
* @Author hanyahong
* @Date 2017/12/6- 16:39
*/
@RefreshScope
@RestController
public class TestApi {
@Value("${myblog.name}")
private String name;
@Value("${myblog.url}")
private String url;
@Value("${myblog.location}")
private String location;
@RequestMapping("/blog-info")
public String getBlogInfo() {
return "從Github倉庫中獲取得到我部落格資訊:【"+location+","+","+url+","+name+"】";
}
}
@RefreshScope:開啟重新整理
至此,配置中心測試的客戶端基本完畢。
對於子專案來說有三個子專案:
cloud-hyh-config 埠號:8082
cloud-hyh-config-client 埠號:8091
cloud-hyh-config-repo 純儲存使用,該文件下面的配置檔案一定要上傳到倉庫後,才可以遠端獲取。
啟動專案並測試
對服務註冊中心(上篇有寫)、服務配置中心、服務客戶端分別進行啟動。
可以通過註冊中心檢視是否都已經被納入管理。
測試一: 註冊中心測試
首先通過訪問配置中心伺服器的地址可以進行測試是否獲取成功。
訪問 http://localhost:8082/config-client.yml 對倉庫中資原始檔 測試是否返回結果。
另外也可以通過 http://localhost:8082/config-client/master 進行訪問。瀏覽器顯示返回結果:
"name":"config-client","profiles":["master"],"label":null,"version":"7169e90f628c85d582f3f9d5fceda36696ebd751","state":null,"propertySources":[{"name":"https://github.com/hanyahong/spring-cloud-microservice.git/cloud-hyh-config-repo/config-client.yml","source":{"myblog.name":"千萬之路剛開始-author-hyh","myblog.url":"http://www.hanyahong.com","myblog.location":"BeiJing","config-client.name":"test"}}]}
測試二: 客戶端訪問API測試
通過客戶端訪問API http://localhost:8091/blog-info 顯示結果:從Github倉庫中獲取得到我部落格資訊:【BeiJing-Customs,,http://www.hanyahong.com,千萬之路剛開始-author-hyh】
測試成功!
測試三: 動態更新引數測試
配置中心一個重要的功能就是你無須重啟去生效一些引數配置,系統可以通過訪問/refresh 進行動態重新整理,將引數生效。
- 修改配置檔案資訊,上傳git倉庫。
- 使用PostMan 或其他工具進行一次POST請求 API:
http://localhost:8091/refresh
(一定要看清楚,POST請求,瀏覽器直接訪問無效,會報Request method 'GET' not supported 錯誤)。 - 再一次訪問 http://localhost:8091/blog-info ,可以看到已在未重啟的情況下,配置動態更新。
後續說明
因配置中心涉及很多資料的更新,不可能每次通過這種方式去動態更新,後續會有專門訊息匯流排模組的講解,將通過訊息匯流排的機制去進行配置的傳輸。
相關文章
- 從零開始,使用Dapr簡化微服務微服務
- 帶你十天輕鬆搞定 Go 微服務系列(五)Go微服務
- 帶你十天輕鬆搞定 Go 微服務系列(六)Go微服務
- 帶你十天輕鬆搞定 Go 微服務系列(七)Go微服務
- 帶你十天輕鬆搞定 Go 微服務系列(一)Go微服務
- 帶你十天輕鬆搞定 Go 微服務系列(二)Go微服務
- 帶你十天輕鬆搞定 Go 微服務系列(三)Go微服務
- 帶你十天輕鬆搞定 Go 微服務系列(四)Go微服務
- springcloud 微服務 之 Eureka 配置SpringGCCloud微服務
- 帶你十天輕鬆搞定 Go 微服務系列(八、服務監控)Go微服務
- 帶你十天輕鬆搞定 Go 微服務之大結局(分散式事務)Go微服務分散式
- 微服務框架/配置中心/註冊中心微服務框架
- SpringCloud微服務系列- 分散式能力建設之配置中心SpringGCCloud微服務分散式
- 微服務之分散式配置中心微服務分散式
- 微服務配置中心完全解讀微服務
- 微服務架構之「 配置中心 」微服務架構
- 【Nacos】微服務配置中心介紹微服務
- 【SpringCloud】微服務Eureka高可用配置SpringGCCloud微服務
- hyperf從零開始構建微服務(一)——構建服務提供者微服務
- hyperf從零開始構建微服務(二)——構建服務消費者微服務
- SpringCloud——Eureka-微服務的註冊中心SpringGCCloud微服務
- silky微服務快速開始微服務
- 微服務SpringCloud之Spring Cloud Config配置中心Git微服務SpringGCCloudGit
- SpringCloud微服務治理SpringGCCloud微服務
- springcloud 微服務面試SpringGCCloud微服務面試
- go微服務系列之三Go微服務
- SpringCloud(1) ——回顧微服務和微服務架構SpringGCCloud微服務架構
- springcloud微服務實戰 學習筆記四 分散式配置中心SpringGCCloud微服務筆記分散式
- 帶你十天輕鬆搞定 Go 微服務系列(九、鏈路追蹤)Go微服務
- 學習筆記:帶你十天輕鬆搞定 Go 微服務系列(一)筆記Go微服務
- 學習筆記:帶你十天輕鬆搞定 Go 微服務系列(二)筆記Go微服務
- SpringCloud微服務基礎SpringGCCloud微服務
- SpringCloud微服務理解(一)SpringGCCloud微服務
- SpringCloud微服務整合DubboSpringGCCloud微服務
- SpringCloud 微服務最佳開發實踐SpringGCCloud微服務
- SpringCloud微服務實戰——搭建企業級開發框架(九):使用Nacos發現、配置和管理微服務SpringGCCloud微服務框架
- 使用Prometheus搞定微服務監控Prometheus微服務
- 如何快速搞定微服務架構?微服務架構