apollo

apollo是一个分布式配置中心(其实也是一个微服务项目)。

原理就是把配置文件中的key,value的值存到Apollo中,然后项目启动的时候从Apollo中读取

1、为什么使用apollo

在我们开发分布式微服务项目的时候,那些配置一旦变更,就需要重启服务,这样非常不友好。因此我们考虑动态更改配置文件当中的配置,所以把那些配置全部存放在apollo当中,这样就能达到动态的效果,并且不用重启服务。

2、主要功能

  • 能够集中式管理不同环境(environment)、不同集群(cluster)、不同命名空间(namespace)的配置。

生产环境、预览环境、测试环境、开发环境

  • 用户在 Apollo 修改完配置并发布后,客户端能实时(1s)接收到最新的配置,并通知到应用程序。
  • 所有的配置发布都有版本概念,从而可以方便地支持配置的回滚。
  • 支持配置的灰度发布,比如点击发布后,只对部分应用实例生效,等观察一段时间,确定没问题后再推给所有应用实例。
  • 应用和配置的管理都有完善的权限管理机制,对配置的管理还分为编辑和发布两个环节,从而减少人为的错误。所有的操作都有审计日志,方便追踪问题。
  • apollo 出于通用性考虑,对配置的修改不会做过多限制,只要符合基本的格式就能够保存,可能有xml、json等格式。

3、Springboot集成apollo

(1)添加apollo依赖

(2)在yml中配置apollo

apollo.meta: Apollo 配置中心地址

apollo.bootstrap.enabled:是否开启 Apollo

apollo.cluster: 指定使用某个集群下的配置

apollo.autoUpdateInjectedSpringProperties: Spring应用通常会使用 Placeholder 来注入配置,如${someKey:someDefaultValue},冒号前面的是 key,冒号后面的是默认值。如果想关闭 placeholder 在运行时自动更新功能,可以设置为 false

apollo.appid:项目名称

apollo.environment:生产环境、预览环境、测试环境、开发环境

(3)在springboot启动类中添加注解@EnableApolloConfig

(4)使用apollo中配置的值

  1. 使用@Value(key)注解:
@Value("${test-data}")
  1. 使用@ApolloConfig注解
@ApolloConfig
private Config testConfig;

String property = testConfig.getProperty(key, null);