SpringCloud config service+Event Bus+SVN實(shí)現(xiàn)自動(dòng)更新配置_第1頁(yè)
SpringCloud config service+Event Bus+SVN實(shí)現(xiàn)自動(dòng)更新配置_第2頁(yè)
SpringCloud config service+Event Bus+SVN實(shí)現(xiàn)自動(dòng)更新配置_第3頁(yè)
SpringCloud config service+Event Bus+SVN實(shí)現(xiàn)自動(dòng)更新配置_第4頁(yè)
SpringCloud config service+Event Bus+SVN實(shí)現(xiàn)自動(dòng)更新配置_第5頁(yè)
已閱讀5頁(yè),還剩3頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、1. 創(chuàng)建config service服務(wù)引入Maven包:<dependency>   <groupId>org.springframework.cloud</groupId>   <artifactId>spring-cloud-config-server</artifactId>  </dependency>  <dependency>         <groupId>org.spr

2、ingframework.cloud</groupId>         <artifactId>spring-cloud-starter-bus-amqp</artifactId>     </dependency>  <dependency>   <groupId>org.springframework.boot</groupId>   <artifactId>spr

3、ing-boot-starter-web</artifactId>  </dependency>perties# 刷新時(shí),關(guān)閉安全驗(yàn)證management.security.enabled=false#Rabbitmqspring.rabbitmq.host=22spring.rabbitmq.port=5672spring.rabbitmq.username=hjyspring.rabbitmq.password=hjyapplication.ymlserver:  port: 7001spring:

4、  application:    name: config-server  cloud:    config:      enabled: true      server:        svn:          uri: 39/svn/          username: gongzhong

5、0;         password: gongzhong          searchPaths: springcloud        #git:        # uri:         default-label: config  profiles:    active: subversion至此,config service 服務(wù)搭建完成。2

6、. 給SVN服務(wù)器增加hook登錄39服務(wù)器,進(jìn)入svn的倉(cāng)庫(kù)目錄下的hooks目錄:/usr/svnrepos/hnapay2/hooks從post-commit.tmpl拷貝一份post-commit文件:cp post-commit.tmpl post-commit修改post-commit文件內(nèi)容為:#!/bin/shcurl -X POST 52:7001/bus/refresh其中:52:7001為config-server的請(qǐng)求IP及端口修改post-commit文件為可執(zhí)行文件:chmod +x post-com

7、mit到此就實(shí)現(xiàn)了配置中心的配置修改后,其他所有服務(wù)均自動(dòng)重新獲取配置。注意:只有引入了spring-cloud-starter-bus-amqp模塊的服務(wù)才會(huì)重新獲取配置=擴(kuò)展:為指定項(xiàng)目進(jìn)行刷新原理:根據(jù)SVN的hooks獲取到被update的配置文件目錄,再通過/bus/refresh?destination=customers:*指令進(jìn)行刷新要求:SVN的目錄按serviceId命名,當(dāng)然也可以在svn的hooks腳本中進(jìn)行目錄與server對(duì)應(yīng)。如下圖是我測(cè)試時(shí)的一個(gè)配置目錄:其中:gateway與gateway服務(wù)同名,gateway-zuul與gateway-zuul服務(wù)同名修改

8、hooks腳本為以下內(nèi)容:#!/bin/shREPOS="$1"REV="$2"#通過look獲取發(fā)生變更的文件目錄SVNLOOK=/usr/bin/svnlook#發(fā)生變更的文件目錄集合CHANGEDDIRS=$($SVNLOOK dirs-changed $REPOS)#發(fā)生變更的文件目錄集合的第一條MASTERDIR=$(echo "$CHANGEDDIRS" | head -1)#循環(huán)while "$CHANGEDDIRS" != "" ;do   #獲取最后一個(gè)目錄

9、名稱,即服務(wù)名稱   PROJECT=$(echo $MASTERDIR | awk -F / 'print $(NF-1)')   echo $PROJECT >> /usr/svnrepos/hnapay2/hooks/logs   #發(fā)送刷新請(qǐng)求給config server   #將svn目錄名稱與服務(wù)名稱對(duì)應(yīng)   if "$PROJECT" = "gateway" ; then      P

10、ROJECT="exp-gateway"   fi   curl -X POST 52:7001/bus/refresh?destination=$PROJECT:*   #刪除已經(jīng)發(fā)送請(qǐng)求的   CHANGEDDIRS=$(echo "$CHANGEDDIRS" | grep -v "$MASTERDIR")   #獲取最新的發(fā)生變更的文件目錄   MASTERDIR=$(echo &

11、quot;$CHANGEDDIRS" | head -1)done優(yōu)化版本:#!/bin/shREPOS="$1"REV="$2"SVNLOOK=/usr/bin/svnlookCHANGEDDIRS=$($SVNLOOK dirs-changed $REPOS)echo $CHANGEDDIRS >> /usr/svnrepos/hnapay2/hooks/logsMASTERDIR=$(echo "$CHANGEDDIRS" | head -1)#i=0while "$CHANGEDDIRS&quo

12、t; != "" ;do   echo $(echo $MASTERDIR | awk -F / 'print $2') >> /usr/svnrepos/hnapay2/hooks/logs   #獲取行的最后第二列,$NF為最后一列   #PROJECT=$(echo $MASTERDIR | awk -F / 'print $(NF-1)')   #獲取行的第二列   PROJECT=$(echo $MASTERDIR | a

13、wk -F / 'print $2')   #echo $PROJECT >> /usr/svnrepos/hnapay2/hooks/logs   #將SVN目錄與服務(wù)名稱對(duì)應(yīng)   if "$PROJECT" = "gateway" ; then      PROJECT="exp-gateway"   fi   #將PROJECT放入數(shù)組   #arr$i

14、=$PROJECT   #i=expr $i + 1   #連接超時(shí)時(shí)間2s,數(shù)據(jù)傳輸超時(shí)時(shí)間5s   curl -connect-timeout 2 -m 5 -X POST 52:7001/bus/refresh?destination=$PROJECT:* >> /usr/svnrepos/hnapay2/hooks/logs 2>&1   if "$?" != "0" ; then    &#

15、160; echo "got error to refresh $PROJECT" >> /usr/svnrepos/hnapay2/hooks/logs   fi   CHANGEDDIRS=$(echo "$CHANGEDDIRS" | grep -v "$MASTERDIR")   MASTERDIR=$(echo "$CHANGEDDIRS" | head -1)done#echo "$arr" >> /

16、usr/svnrepos/hnapay2/hooks/logs#curl -X POST 52:7001/bus/refresh?destination=$PROJECT:*echo "" >> /usr/svnrepos/hnapay2/hooks/logsecho "=" >> /usr/svnrepos/hnapay2/hooks/logsecho "" >> /usr/svnrepos/hnapay2/hooks/logs=spring cloud config 目錄匹配spring cloud config 的目錄匹配規(guī)則如下:/application/profile/label/application-profile.yml/label/appli

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論