Apollo的優勢
統一管理不同環境、不同集羣的配置
Apollo提供了一個統一界面集中式管理不同環境(environment)、不同集羣(cluster)、不同命名空間(namespace)的配置。
權限管理、發佈審覈、操作審計
應用和配置的管理都有完善的權限管理機制,對配置的管理還分爲了編輯和發佈兩個環節,從而減少人爲的錯誤。
配置修改實時生效(熱發佈)
用戶在Apollo修改完配置併發布後,客戶端能實時(1秒)接收到最新的配置,並通知到應用程序。
版本發佈管理
所有的配置發佈都有版本概念,從而可以方便的支持配置的回滾。
灰度發佈
支持配置的灰度發佈,比如點了發佈後,只對部分應用實例生效,等觀察一段時間沒問題後再推給所有應用實例。
客戶端配置信息監控
可以在界面上方便地看到配置在被哪些實例使用
支持緩存
支持郵件模板
在配置發佈時候,可以發佈信息郵件通知到相關的負責人
性能強大
性能報告:https://github.com/ctripcorp/apollo/wiki/Apollo%E6%80%A7%E8%83%BD%E6%B5%8B%E8%AF%95
提供第三方接口
https://github.com/ctripcorp/apollo/wiki/Apollo%E5%BC%80%E6%94%BE%E5%B9%B3%E5%8F%B0
部署簡單
配置中心作爲基礎服務,可用性要求非常高,這就要求Apollo對外部依賴儘可能地少
目前唯一的外部依賴是MySQL,所以部署非常簡單,只要安裝好Java和MySQL就可以讓Apollo跑起來
Apollo還提供了打包腳本,一鍵就可以生成所有需要的安裝包,並且支持自定義運行時參數
代碼開源
可以自定義開發
用途實例
項目地址:https://github.com/ctripcorp/apollo-use-cases
展示Apollo配置中心的各種使用場景和示例代碼,目前包含了以下示例項目:
- spring-boot-logger:演示Spring Boot Logging如何通過Apollo配置中心實現動態調整Logging Level
- spring-cloud-logger:演示Spring Boot Logging在Spring Cloud環境下如何通過Apollo配置中心方便地實現動態調整Logging Level
- spring-cloud-zuul:演示Spring Cloud Zuul如何通過Apollo配置中心實現動態路由
- spring-cloud-zuul-ratelimit:演示Spring Cloud Zuul的第三方限流插件marcosbarbero/spring-cloud-zuul-ratelimit如何通過Apollo配置中心實現動態限流
- spring-cloud-gateway:演示Spring Cloud Gateway如何通過Apollo配置中心實現動態路由
- spring-boot-encrypt:演示如何結合jasypt-spring-boot實現Apollo中存儲加密配置
- dynamic-datasource:演示Spring Boot默認的HikariCP DataSource如何通過Apollo配置中心實現動態切換數據源(其它類型的DataSource也是類似的,可以依樣畫葫蘆)
- dubbo: 演示Dubbo如何通過Apollo配置中心實現中心化配置
- spring-boot-dubbo: 演示Dubbo Spring Boot Starter如何通過Apollo配置中心實現中心化配置
- 該項目同時也演示瞭如何通過apollo管理logback的配置,詳見logback-spring.xml
- netflix-archaius: 演示Netflix Archaius如何使用Apollo配置中心作爲其服務端使用
- sentinel: 演示Sentinel如何通過Apollo配置中心實現中心化流控規則配置
- properties-keeper: 演示如何通過apollo管理啓動前需要加載的properties文件配置
- spring-boot-agent: 演示如何通過java agent探針技術實現應用無縫接入Apollo配置中心
與spring cloud config優勢
項目的可用性考慮
需要的場景
1:提供統一的管理配置的接口,且提供可視化界面。
2:支持熱部署,更改立刻生效。
3:支持集羣。
4:不停機更新。(動態更改路由)
5:優秀的性能。見以上性能報告
6:日誌記錄與回滾功能。(防止實施人員扯皮)
7:代碼開源 如需要可以定製開發 (成本較大)
以上需求Apollo都有解決方案