1. 程式人生 > >分布式配置中心

分布式配置中心

服務配置 緩存 測試環境 什麽是 前綴 zook 會員 信息 問題

1、話題引入:

如果配置文件全部放在resources目錄下,管理起來非常復雜,所以采用分布式配置中心,放在git上

2、產生背景:

在微服務中如果使用傳統的方式管理配置文件,配置文件管理器非常復雜;

如果生產環境配置文件,可能需要發生改變的時候,重新打war,重新讀取配置信息在jvm內存中;

3、什麽是分布式配置中心:

在微服務中使用同一個服務器管理所有服務配置文件信息,能夠實現後臺可管理,當服務器正在運行時,如果配置文件需要發生改變,可以實現不需要重啟服務器實時更改配置文件信息。

4、分布式配置中心框架

1)阿波羅,攜程的,有圖形界面可管理配置文件信息,配置文件信息存放在數據庫裏面

2)SpringCoud Config 沒有後臺可管理分布式配置中心,配置文件信息存放在版本控制器裏面(git/svn)

3)Zookeeper 持久節點+事件通知

5、搭建分布式配置中心所需要的組件:

1)web管理系統,後臺可以使用圖形界面管理配置文件

2)存放分布式配置文件的服務器(持久存儲服務器),使用版本控制器

3)ConfigServer緩存配置文件服務器(臨時緩存存放)

4)ConfigClient讀取ConfigServer配置文件信息

6、git上文件命名規則

1)git環境上文件夾以項目進行區分

member_config 會員服務配置文件

order_config 訂單服務配置文件

2)公司項目中環境是如何區分

dev 開發環境

sit 測試環境

pre 預發布環境

prd 準生產環境

3)客戶端的命名要和git上的服務名稱一樣,因為系統會以該命名為前綴去git上面搜索

配置文件命名規則:服務名稱-環境.properties

7、刷新配置文件

1)默認情況下不能及時的獲取實時變更的配置文件信息,springcloud分布式配置中心可以采用手動刷新或者自動刷新

手動刷新---需要人工調用接口,讀取最新配置文件(監控中心)--建議使用

自動刷新---消息總線進行實時通知,springbus --不建議使用,更加消耗性能

兩者都不需要重啟服務器

2)要實現手動刷新,要用到actuator,在yml中配置,然後在Controller上面加上@RefreshScope註解;

還要手動發一個post請求:http://localhost:9300/actuator/refresh

=》一般來說,會將配置信息放在一個類上面,把@RefreshScope註解放在那個類上面就可以了;肯定不會在所有Controller上面加註解的;

問題

1)config-server搭建好後,sit文件訪問有內容,而prd訪問沒內容

--》可能是gitee的問題,刪掉重新建一個就可以訪問了;這裏不能訪問,後面的config-client也是不能訪問的;

註意這個config-client的yml文件為prd

2)在config-client啟動後,如果某個配置文件不存在(服務名/環境名錯誤),那麽程序就會立馬報錯;

分布式配置中心