180425 統一配置中心

2021-09-11 09:54:19 字數 1246 閱讀 9846

對於配置檔案,我們不陌生,它提供我們可以動態修改程式執行能力。引用別人的一句話就是:

系統執行時(runtime)飛行姿態的動態調整

我可以把我們的工作稱之為在快速飛行的飛機上修理零件。我們人類總是無法掌控和預知一切。對於我們系統來說,我們總是需要預留一些控制線條,以便在我們需要的時候做出調整,控制系統方向(如灰度控制、限流調整),這對於擁抱變化的網際網路行業尤為重要。對於單機版,我們稱之為配置(檔案),對於分布式集群系統,我們稱之為配置中心(系統);下面聊聊我們的配置中心。

當我們是乙個單機服務的是,我們的配置通常寫在乙個檔案中的,**發布的時候,把配置檔案和程式推送到機器上去。

當隨著業務的使用者量增加,通常我們會把我們的服務進行多機器(集群)部署。這時候,配置的發布就變成了如下:

行,這樣發配置也能接受 業務的急劇擴張,導致單機服務無法滿業務需求。這時候需要對單體大服務進行切開,服務走向soa(微服務化)。

這樣去部署配置簡直是一場噩夢,而且無法做到快速的動態的調整。失去了配置主要意義之一。這時候就需要今天說的統一配置中心。

配置中心的特點

我們可以設計出如下的簡版配置中心

設計說明點:

很多時候,這樣可以基本上滿足我們對配置系統的基本需求,對配置的增刪改查,能容忍一段時間的資料不一致性。

這種設計,由於所有的配置都存放在集中式快取中,這樣集中式的快取也會有他的效能瓶頸。而且,每次配置的訪問都需要發起rpc請求(網路請求),因此考慮在客戶端引入本地快取(localcache,例如ehcache)。

本地快取可以參考我之前文章:本地快取的選擇及其原理

考慮到,減少網路請求的因素,在客戶端引入localcache,來解決系統的高可用,高效能、可伸縮性。

相對於第一版的改進點是,在客戶端引入localcache。開啟執行緒非同步呼叫配置服務,更新本地配置。 這樣可以減少rpc呼叫。

基於資料的cap原理,該方式只做到了ap,這裡會存在資料的一段時間的不一致性,但最終會保證是配置的最終一致性。如何解決這個資料不一致性問題?

還好,配置通常都只會有乙個入口修改,因此可以考慮在配置修改後,通知應用服務清理本地快取和分布式快取。這裡可以引入mq或zookeeper。

最後通過,推拉相結合的方式,完成資料的一致性。

歡迎關注我的技術部落格,我們一起成長一起進步。

林灣村龍貓:www.jianshu.com/u/5a327aab7…

統一配置中心

1.搭建統一配置專案 建立git倉庫配置檔案 檔案訪問路徑說明 2.spring cloud bus 配置檔案修改後自動重新整理 org.springframework.boot spring boot starter amqp 暴露全路徑介面 management endpoints web ex...

SpringCloud統一配置中心

服務端步驟 1 引用依賴 org.springframework.cloud spring cloud config server 2 啟動類新增註解 enableconfigserver3 修改配置檔案 server port 8091 spring name config server clou...

SpringCloud統一配置中心

目錄config client原專案配置檔案 環境要求 i.實現啟動專案,拉取配置 ii.實現手動post請求,重新整理配置 iii.實現webhooks自動重新整理 org.springframework.cloud spring cloud config server org.springfra...