Apollo和分布式配置


傳統配置文件有什么缺點

如果修改了配置文件,需要重新打包發布,而且每個環境變量配置文件復雜。

分布式配置中心

將配置文件注冊到配置中心平台上,可以使用分布式配置中心實時更新配置文件,統一管理,不需要重新打包發布

 

 后面定義的所有相關配置文件信息:除了 server port  其他的不寫在本地哦

 

什么是分布式配置中心

項目中配置文件比較繁雜,而且不同環境的不同配置修改相對頻繁,每次發布都需要對應修改配置,如果配置出現錯誤,需要重新打包發布,時間成本較高,因此需要做統一的分布式注冊中心,能做到自動更新配置文件信息,解決以上問題

 

常用分布式配置中心框架

市面上常見的:

Disconf(依賴於zookpeer)、Zookpeer、diamond(阿里巴巴)、Apollo(攜程)、Redis、xxl-conf

 

ZK的原理:保證配置文件信息實時更新(事件通知) 

 

大型互聯網公司自己內部都有自己獨立分布式配置中心

獨立RPC、獨立分布式各種解決方案

注冊中心解決 rpc服務治理

分布式配置中心 解決分布式配置文件管理

Apollo阿波羅簡介

 

Apollo(阿波羅)是攜程框架部門研發的分布式配置中心,能夠集中化管理應用不同環境、不同集群的配置,配置修改后能夠實時推送到應用端,並且具備規范的權限、流程治理等特性,適用於微服務配置管理場景。

Apollo阿波羅特點

用戶在Apollo修改完配置並發布后,客戶端能實時(1秒)接收到最新的配置,並通知到應用程序。

統一管理不同環境、不同集群的配置

 

所有的配置發布都有版本概念,從而可以方便的支持配置的回滾。

配置修改實時生效(熱發布)

用戶在Apollo修改完配置並發布后,客戶端能實時(1秒)接收到最新的配置,並通知到應用程序

版本發布管理

所有的配置發布都有版本概念,從而可以方便的支持配置的回滾

灰度發布

支持配置的灰度發布,比如點了發布后,只對部分應用實例生效,等觀察一段時間沒問題后再推給所有應用實例。

權限管理、發布審核、操作審計

應用和配置的管理都有完善的權限管理機制,對配置的管理還分為了編輯和發布兩個環節,從而減少人為的錯誤。

所有的操作都有審計日志,可以方便的追蹤問題。

客戶端配置信息監控

可以方便的看到配置在被哪些實例使用

提供Java和.Net原生客戶端

提供了Java和.Net的原生客戶端,方便應用集成

支持Spring Placeholder, Annotation和Spring Boot的ConfigurationProperties,方便應用使用(需要Spring 3.1.1+)

同時提供了Http接口,非Java和.Net應用也可以方便的使用

提供開放平台API

Apollo自身提供了比較完善的統一配置管理界面,支持多環境、多數據中心配置管理、權限、流程治理等特性。

不過Apollo出於通用性考慮,對配置的修改不會做過多限制,只要符合基本的格式就能夠保存。

在我們的調研中發現,對於有些使用方,它們的配置可能會有比較復雜的格式,如xml, json,需要對格式做校驗。

還有一些使用方如DAL,不僅有特定的格式,而且對輸入的值也需要進行校驗后方可保存,如檢查數據庫、用戶名和密碼是否匹配。

對於這類應用,Apollo支持應用方通過開放接口在Apollo進行配置的修改和發布,並且具備完善的授權和權限控制

部署簡單

配置中心作為基礎服務,可用性要求非常高,這就要求Apollo對外部依賴盡可能地少

目前唯一的外部依賴是MySQL,所以部署非常簡單,只要安裝好Java和MySQL就可以讓Apollo跑起來

Apollo還提供了打包腳本,一鍵就可以生成所有需要的安裝包,並且支持自定義運行時參數

 

Apollo整體架構原理

 

 

官網: https://github.com/nobodyiam/apollo

 

原理解讀:

分布式中心管理平台

  作用: 增刪改查 配置

 

項目啟動時候 連接阿波羅配置中心平台 

 項目進項掃包 獲取當前包下的類 只要屬性加上 @value注解  

  如果屬性上加上了@Value注解 使用key(value的值)在遠程服務器上面獲取對應value信息

  緩存到對應的jvm

 

 

 

應用端向阿波羅服務器獲取配置文件信息

阿波羅平台提供key查詢配置文件信息接口

 


免責聲明!

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



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