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都有解决方案