微服務架構:動態配置中心搭建


版權聲明:本文為博主原創文章,轉載請注明出處,歡迎交流學習!

       在微服務架構中,服務之間有着錯綜復雜的依賴關系,每個服務都有自己的依賴配置,在運行期間很多配置會根據訪問流量等因素進行調整,傳統的配置信息處理方式是將配置信息寫入xml、.properties等配置文件中,和應用一起打包,每次修改配置信息,都需要重新進行打包,效率極低,動態配置中心就是為了解決這一問題。動態配置中心也是一個微服務,我們把微服務中需要動態配置的配置文件存放在遠程git私有倉庫上,微服務會去服務器讀取配置信息,當我們在本地修改完代碼push到git服務器,git服務器端hooks自動檢測是否有配置文件更新,如果有,git服務端通過消息隊列給配置中心發消息,通知配置中心刷新配置文件。因此微服務讀取到的就是最新的配置信息,實現了運行期動態配置。理解了配置中心的原理,下面來介紹應用Spring Cloud框架的configserver搭建動態配置中心的整個過程。

       1、Git私有倉庫搭建

       由於所有配置文件放在Git遠程私有倉庫上,我們需要搭建Git私有倉庫。

       1)安裝git

       # cd /etc/yum.repos.d/

       # wget http://geekery.altervista.org/geekery-el5-x86_64.repo

       # cd /data/soft/

       # wget http://packages.sw.be/rpmforge-release/rpmforge-release-0.5.2-2.el5.rf.x86_64.rpm

       # rpm -ivh rpmforge-release-0.5.2-2.el5.rf.x86_64.rpm

       # yum -y install git

       # git --version

       2)搭建git倉庫

       a、創建一個git用戶,用來運行git服務

       命令:$ sudo adduser git

       b、創建證書登錄

       收集所有需要登錄的用戶的公鑰,就是他們自己的id_rsa.pub文件,把所有公鑰加入到/home/git/.ssh/authorized_keys文件里,一行一個。

       c、初始化git倉庫

       選定或創建一個目錄作為Git倉庫,如/home/git/microservice.git,將此目錄初始化為git倉庫

         命令:$ sudo git init --bare microservice.git

 

                 $ sudo chown -R git:git microservice.git

       d、克隆遠程倉庫

       命令:$ git clone git@192.168.0.136:microservice.git

       3)在本地安裝git客戶端

       以上操作完成Git服務端私有倉庫搭建后,需要在本地安裝Git客戶端,並且把公鑰加入到服務端的/.ssh/authorized_keys配置文件中,這樣就可以在本地克隆服務端代碼並向服務端進行推送了。本地Git客戶端的安裝可參照Git教程。

       2、安裝消息隊列

       在遠程機器上安裝消息隊列(rabbitmq)並啟動

       

       3、配置中心相關配置文件

       配置中心(配置服務,例如:sample-config)的配置文件application.yml,添加如下配置:

       

       1)configserver的git配置

       configserver根據配置的Git服務器地址,去服務器上讀取相應的配置文件信息。

       uri: 用戶名、遠程Git服務器地址、私有倉庫地址

       username: Git服務器用戶名(搭建倉庫時創建的用戶)

       password: 用戶密碼

       2)消息隊列配置

       當Git服務端檢測到配置文件有更新時,會通過消息隊列通知configserver刷新配置文件。

       rabbitmq配置:

       host: 消息隊列的地址

       port: 消息隊列端口

       username: 用戶名

       password: 密碼 

       3)Dockerfile配置

       由於采用ssh協議訪問Git服務器時,需要手動輸入確認連接信息,因此在這里我們需要屏蔽此檢查。我們需要新建一個配置文件config(無后綴名)跟Dockerfile一起放在容器中,並在Dockerfile中進行配置(新建/.ssh目錄,將config文件添加到此目錄下)。

       部署在容器中的文件:

       

       config文件配置:

       

       Dockerfile配置:

       

       4、在服務中添加消息總線依賴配置

       在需要將配置文件放到配置中心進行動態配置的服務中,添加消息總線的配置。

       在服務的pom.xml文件中添加依賴:

       <dependency>

            <groupId>org.springframework.cloud</groupId>

            <artifactId>spring-cloud-starter-bus-amqp</artifactId>

        </dependency>

       

       5、在Git服務端編寫服務端hook

       當本地Git客戶端向服務端倉庫推送更新時,Git服務端需要檢測配置文件是否有更新,如果有,則需要向configserver發請求通知它刷新配置文件。這就需要用到服務端hook。在Git服務端的/.git/hooks/目錄下,創建post-receive文件(無后綴名),並添加相應的腳本,當Git客戶端推送更新,服務端更新完文件后會自動執行此post-receive文件腳本。

        

       6、在本地Git客戶端提交修改並推送到Git服務端

       在本地更新配置文件后,提交到本地Git倉庫,然后將本地更新push到Git服務端。

       相關Git命令:

       $ git add xxx.xml xx.yml -------將修改的配置文件xxx.xml、xx.yml添加到暫存區

       $ git commit -m “xxxxxx”-----將暫存區文件提交到本地Git倉庫

       $ git push origin master ------將本地更新推送到服務端

       以上就是利用configserver實現動態配置中心的整個過程,整個配置完成后就可以在本地修改配置文件push到Git服務器,我們的微服務就可以動態讀取到最新的配置了。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM