成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

分布式配置中心:Spring Cloud Config

ckllj / 1233人閱讀

摘要:根據(jù)自己維護(hù)的倉庫信息和客戶端傳遞過來的配置定位信息去查找配置信息。通過命令將找到的配置信息下載到的文件系統(tǒng)中。該配置內(nèi)容的優(yōu)先級(jí)高于包內(nèi)部的配置內(nèi)容,在包中重復(fù)的內(nèi)容將不會(huì)被加載。在中配置注冊(cè)中心地址。

構(gòu)建配置中心

創(chuàng)建一個(gè)基礎(chǔ)Spring Boot工程,命名為config-server,并在pom.xml中引入以下依賴:

        
            org.springframework.cloud
            spring-cloud-config-server
        

在程序主類中添加@EnableConfigServer注解

@EnableConfigServer
@SpringBootApplication
public class ConfigServerApplication {

    public static void main(String[] args) {
        SpringApplication.run(ConfigServerApplication.class, args);
    }
}

在application.properties文件中添加配置服務(wù)的基本信息和git倉庫的相關(guān)信息

spring.application.name=config-server
server.port=7001
#git路徑,精確到具體倉庫位置
spring.cloud.config.server.git.uri=https://gitee.com/dongspace/config-file/
#git uri下的相對(duì)搜索位置,可以配置多個(gè),以","分隔
spring.cloud.config.server.git.search-paths=config-client,demo
spring.cloud.config.server.git.username=***
spring.cloud.config.server.git.password=***
Git配置倉庫

新建一個(gè)倉庫,命名為config-file

新建兩個(gè)文件夾,分別命名為config-client和demo

在config-client下新建配置文件application.properties、application-stg1.properties,并添加如下配置

from=master
#stg1中的配置
from=master-stg1

在demo文件夾下新建dongspace.properties、dongspace-stg1.properties,并添加如下配置

from=dong-master
#stg1中的配置
from=dong-master-stg1

配置規(guī)則詳解

配置信息的URL與配置文件的映射關(guān)系如下:

/{application}-{profile}.properties

/{label}/{application}-{profile}.properties

/{application}/{profile}/[/{label}]

上面的URL對(duì)應(yīng){application}-{profile}.properties,其中{application}對(duì)應(yīng)配置文件名,{label}對(duì)應(yīng)代碼分支,默認(rèn)為default
以上通過瀏覽器訪問的路徑對(duì)應(yīng)為:

http://localhost:7001/application-stg1.properties

http://localhost:7001/master/application-stg1.properties

http://localhost:7001/application/default/master

客戶端配置

創(chuàng)建一個(gè)基礎(chǔ)Spring Boot工程,命名為config-client,并在pom.xml中引入以下依賴:

        
            org.springframework.cloud
            spring-cloud-starter-config
        

在bootstrap.properties中加入以下配置:

server.port=7002
spring.application.name=config-client
spring.cloud.config.profile=stg1
spring.cloud.config.label=master
spring.cloud.config.uri=http://localhost:7001/

創(chuàng)建一個(gè)測(cè)試類

@RestController
public class TestConfigController {

    @Value("${from}")
    private String from;
    
    @RequestMapping("/testConfig")
    public Object testConfig() {
        return from;
    }
}
服務(wù)端的占位符配置

實(shí)現(xiàn)多個(gè)服務(wù)對(duì)應(yīng)一個(gè)倉庫中的不同目錄

spring.cloud.config.server.git.uri=https://gitee.com/dongspace/config-file/
#{application}對(duì)應(yīng)訪問服務(wù)的應(yīng)用名
spring.cloud.config.server.git.search-paths={application}

實(shí)現(xiàn)一個(gè)服務(wù)對(duì)應(yīng)目錄下的一個(gè)倉庫

spring.cloud.config.server.git.uri=https://gitee.com/dongspace/{application}-conf
基礎(chǔ)架構(gòu)

客戶端應(yīng)用從config-server中獲取配置信息遵從下面的執(zhí)行流程:

應(yīng)用啟動(dòng)時(shí),根據(jù)bootstrap.properties中配置的{application}、{profile}、{label},向Config Server請(qǐng)求獲取配置信息。

Config Server根據(jù)自己維護(hù)的Git倉庫信息和客戶端傳遞過來的配置定位信息去查找配置信息。

通過git clone命令將找到的配置信息下載到Config Server的文件系統(tǒng)中。

Config Server創(chuàng)建Spring的ApplicationContext實(shí)例,并從Git本地倉庫中加載配置文件,返回給客戶端使用。

客戶端應(yīng)用獲得外部配置信息后,加載到客戶端的ApplicationContext實(shí)例。該配置內(nèi)容的優(yōu)先級(jí)高于Jar包內(nèi)部的配置內(nèi)容,在jar包中重復(fù)的內(nèi)容將不會(huì)被加載。

健康監(jiān)測(cè)

當(dāng)使用占位符配置URI時(shí),Config Server會(huì)默認(rèn)加載application為app的倉庫,根據(jù)之前的配置規(guī)則,服務(wù)端的健康檢測(cè)器會(huì)不斷檢查https://gitee.com/dongspace/a... 倉庫是否可以連通,這時(shí)訪問配置中心的/health端點(diǎn)時(shí)返回的服務(wù)狀態(tài)為"DOWN",當(dāng)服務(wù)化配置中心時(shí),將影響它的可用性判斷,此時(shí)有兩種解決方案:1.創(chuàng)建名為app-config的倉庫;2.改變健康監(jiān)測(cè)的配置如下

spring.cloud.config.server.health.repositories.check.name=app2
spring.cloud.config.server.health.repositories.check.label=master
spring.cloud.config.server.health.repositories.check.profiles=default
服務(wù)化配置中心 config-server改造

在pom.xml文件中添加eureka依賴,以加入Eureka的服務(wù)治理體系。


    org.springframework.cloud
    spring-cloud-starter-eureka

在入口類上添加@EnableDiscoveryClient注解,表示這是一個(gè)Eureka客戶端。

@SpringBootApplication
@EnableConfigServer
@EnableDiscoveryClient
public class ConfigServerApplication {

    public static void main(String[] args) {
        SpringApplication.run(ConfigServerApplication.class, args);
    }
}

在application.properties中配置eureka注冊(cè)中心地址。

spring.application.name=config-server
server.port=7001
eureka.client.service-url.defaultZone=http://localhost:1111/eureka/

#spring.cloud.config.server.git.uri=https://gitee.com/dongspace/{application}-conf
spring.cloud.config.server.git.uri=https://gitee.com/dongspace/config-file/
#git uri下的相對(duì)搜索位置,可以配置多個(gè)
spring.cloud.config.server.git.search-paths={application}
[email protected]
spring.cloud.config.server.git.password=a1991122911
# 重新設(shè)定git倉庫連接性檢測(cè)的地址,需新建命名為app2的倉庫
#spring.cloud.config.server.health.repositories.check.name=app2
#spring.cloud.config.server.health.repositories.check.label=master
#spring.cloud.config.server.health.repositories.check.profiles=default
config-client改造

前兩步同config-server的改造,最后修改bootstrap.properties配置文件

server.port=7002
spring.application.name=config-client

eureka.client.service-url.defaultZone=http://localhost:1111/eureka/
spring.cloud.config.profile=stg1
spring.cloud.config.label=master
# 開啟通過服務(wù)名來訪問配置中心
spring.cloud.config.discovery.enabled=true
# 配置中心服務(wù)名為config-server
spring.cloud.config.discovery.service-id=config-server
#spring.cloud.config.uri=http://localhost:7001/
測(cè)試

分別啟動(dòng)eureka-server、config-server、config-client,訪問http://localhost:1111,可以看到兩個(gè)應(yīng)用已經(jīng)成功注冊(cè):

測(cè)試config-client的/testConfig接口,結(jié)果如下:

失敗快速響應(yīng)

config-client在啟動(dòng)時(shí),如果訪問不到config-server會(huì)報(bào)錯(cuò),如果不做任務(wù)額外配置,客戶端的響應(yīng)較慢,在報(bào)錯(cuò)時(shí)已經(jīng)打印出很多日志。
添加如下配置,可以讓客戶端在啟動(dòng)時(shí)優(yōu)先檢查配置中心的連接情況:

spring.cloud.config.fail-fast=true
重試機(jī)制

config-client啟動(dòng)無法連接配置中心時(shí),我們希望客戶端能重試連接幾次,這樣可以避免因網(wǎng)絡(luò)抖動(dòng)而導(dǎo)致應(yīng)用無法啟動(dòng)的情況。
首先確??蛻舳说目焖夙憫?yīng)機(jī)制打開,再添加如下重試配置:

# 配置重試次數(shù),默認(rèn)為6
spring.cloud.config.retry.max-attempts=6
# 間隔乘數(shù),默認(rèn)1.1,如第一次間隔為1000ms,則第二次間隔為1100ms
spring.cloud.config.retry.multiplier=1.1
# 初始重試間隔時(shí)間,默認(rèn)1000ms
spring.cloud.config.retry.initial-interval=1000
# 最大間隔時(shí)間,默認(rèn)2000ms
spring.cloud.config.retry.max-interval=2000
動(dòng)態(tài)刷新配置 其他配置 安全保護(hù)

在Config Server中引入Spring Security即可實(shí)現(xiàn)配置中心的密碼訪問。
首先在pom.xml文件中添加依賴:


    org.springframework.boot
    spring-boot-starter-security

然后在application.properties中配置用戶名密碼:

security.user.name=admin
security.user.password=admin

最后在配置中心客戶端配置用戶名和密碼:

security.user.name=admin
security.user.password=admin
加密與解密 出現(xiàn)的問題

一、初始提交碼云時(shí)報(bào)push to origin/master was rejected錯(cuò)誤

解決方案如下:

1.切換到自己項(xiàng)目所在的目錄,右鍵選擇GIT BASH Here,Idea中可使用Alt+F12

2.在terminl窗口中依次輸入命令:

git pull

git pull origin master

git pull origin master --allow-unrelated-histories

3.在idea中重新push自己的項(xiàng)目,成功?。?!

參考資料

1.《Spring Cloud微服務(wù)實(shí)戰(zhàn)》

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/73637.html

相關(guān)文章

  • 史上最簡單的SpringCloud教程 | 第六篇: 布式配置中心(Spring Cloud Co

    摘要:程序的入口類打開網(wǎng)址訪問,網(wǎng)頁顯示這就說明,從獲取了的屬性,而是從倉庫讀取的如圖本文源碼下載四參考資料優(yōu)秀文章推薦史上最簡單的教程終章史上最簡單的教程第一篇服務(wù)的注冊(cè)與發(fā)現(xiàn)史上最簡單的教程第七篇高可用的分布式配置中心 轉(zhuǎn)載請(qǐng)標(biāo)明出處: http://blog.csdn.net/forezp/a...本文出自方志朋的博客在上一篇文章講述zuul的時(shí)候,已經(jīng)提到過,使用配置服務(wù)來保存各個(gè)服...

    SQC 評(píng)論0 收藏0
  • 2021 年最新基于 Spring Cloud 的微服務(wù)架構(gòu)分析

    摘要:是一個(gè)相對(duì)比較新的微服務(wù)框架,年才推出的版本雖然時(shí)間最短但是相比等框架提供的全套的分布式系統(tǒng)解決方案。提供線程池不同的服務(wù)走不同的線程池,實(shí)現(xiàn)了不同服務(wù)調(diào)用的隔離,避免了服務(wù)器雪崩的問題。通過互相注冊(cè)的方式來進(jìn)行消息同步和保證高可用。 Spring Cloud 是一個(gè)相對(duì)比較新的微服務(wù)框架,...

    cikenerd 評(píng)論0 收藏0
  • Spring Cloud Consul 之Greenwich版本全攻略

    摘要:在我們的文檔中,我們使用來表明就選舉和事務(wù)的順序達(dá)成一致。提供成員關(guān)系,故障檢測(cè)和事件廣播。這是一個(gè)允許請(qǐng)求的請(qǐng)求響應(yīng)機(jī)制。這包括服務(wù)發(fā)現(xiàn),還包括豐富的運(yùn)行狀況檢查,鎖定,鍵值,多數(shù)據(jù)中心聯(lián)合,事件系統(tǒng)和。 轉(zhuǎn)載請(qǐng)標(biāo)明出處: http://blog.csdn.net/forezp/a...本文出自方志朋的博客 什么是Consul Consul是HashiCorp公司推出的開源軟件,使...

    qingshanli1988 評(píng)論0 收藏0
  • SpringCloud打造微服務(wù)平臺(tái)--概覽

    摘要:授權(quán)框架使第三方應(yīng)用程序來獲取對(duì)服務(wù)的有限訪問機(jī)會(huì)。無論是通過編排資源所有者和服務(wù)之間的交互批準(zhǔn)的資源所有者,或通過允許第三方應(yīng)用程序來獲取自己的訪問權(quán)限。 SpringCloud打造微服務(wù)平臺(tái)--概覽 簡述 SpringCloud是什么 Spring Boot和SpringCloud是什么關(guān)系 Spring Boot是Spring的一套快速WEB開發(fā)的腳手架,可建立獨(dú)立的Sprin...

    siberiawolf 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<