1.傳統配置文件與分布式配置文件區別
傳統配置文件:如果修改了配置文件,需要重新打包發布,重新發布服務,而且每個環境的變更配置文件,比較繁瑣。
分布式配置文件:將配置文件注冊到配置中心上去,可以使用分布式配置中心實時更新配置文件,統一管理配置文件,不需要重新打包發布。
2.常用的分布式配置中心框架有哪些
disconf(依賴於Zookeeper)、Zookeeper(通過Watch事件監聽實現)、diamond(阿里產品)、攜程(apollo)、Redis、xxl-config。
3.攜程apollo介紹
Apollo(阿波羅)是攜程框架部門研發的分布式配置中心,能夠集中化管理應用不同環境、不同集群的配置,配置修改后能夠實時推送到應用端,並且具備規范的權限、流程治理等特性,適用於微服務配置管理場景。
服務端基於Spring Boot和Spring Cloud開發,打包后可以直接運行,不需要額外安裝Tomcat等應用容器。
Java客戶端不依賴任何框架,能夠運行於所有Java運行時環境,同時對Spring/Spring Boot環境也有較好的支持。
.Net客戶端不依賴任何框架,能夠運行於所有.Net運行時環境。
官網地址:https://github.com/ctripcorp/apollo/
4.apollo分布式配置中心 原理
4.1項目啟動的時候連接 apollo配置中心平台。
4.2項目進行掃包獲取當前包下的類。
4.3如果屬性上加上了@Value("${name:sun}") 注解,使用key 在遠程服務器上獲取對應的value信息。@Value("${name:sun}") 意思 如果在apollo上面沒有找到name對應的value,則用sun 表示該value值。
4.4 獲取對應的value值,然后緩存在本地的jvm中。
4.5 流程圖
描述:當客戶端啟動的時候會與apollo分布式配置中心管理平台建立連接進行監聽、並讀取服務器上配置文件信息並把配置文件信息緩存到本地的jvm中,當配置文件改變的時候,apollo分布式配置中心會把修改過的配置文件推送給客戶端,然后客戶端會刷新本地的jvm緩存。
5.springboot集成apollo需要注意事項
項目啟動之前,需要在本地新建文件
(Mac/Linux)環境:修改/opt/settings/server.properties
(Windows)環境:C:\opt\settings\server.properties文件,設置env為DEV:
env=DEV
application.properties 不同環境 文件配置如下:
apollo-env.properties
local.meta=http://192.168.212.162:8080
dev.meta=http://192.168.212.162:8080
fat.meta=${fat_meta}
uat.meta=${uat_meta}
lpt.meta=${lpt_meta}
pro.meta=${pro_meta}
在META-INF文件夾創建app.properties 指定appid
appid=應用id,應用id指的是apollo頁面上面對應的appid。
如果apollo配置在外網,需要在 demo.sh 文件中 配置一下 -Deureka.instance.ip-address=外網ip