Apollo配置中心是基于文件吗(apollo配置中心的缺点)

Apollo配置中心是基于文件吗(apollo配置中心的缺点)Apollo 配置中心源码分析 1 apollo 的核心代码分享 SpringApplic 启动的关键步骤 在 SpringApplic 中 会加载所有实现了 Init 方法的类 通过上述步骤 Apollo 自己实现的 ApplicationC 也就 被加载到容器中了 具体的加载流程如下 2 Apollo 启动一览 2 1

大家好,我是讯享网,很高兴认识大家。



Apollo配置中心源码分析

1. apollo的核心代码分享
  • SpringApplication启动的关键步骤
  • 在SpringApplication中,会加载所有实现了Init方法的类
  • 通过上述步骤,Apollo自己实现的ApplicationContextInitializer也就 被加载到容器中了。具体的加载流程如下:
2.Apollo启动一览
2.1 ApolloApplicationContextInitializer的作用

定义apollo的容器启动的时候具体的工作事项

容器启动的时候调用init方法

终上,在容器启动的时候,会调用RemoteConfigRepository的构造方法,而实现配置中心的同步主要是调用trySync,schedulePeriodicRefresh,scheduleLongPollingRefresh这个三个方法来实现配置的实时同步

2.2trySync()
2.3 schedulePeriodicRefresh

开启多线程,调用 trySync();

2.4 scheduleLongPollingRefresh

整个apollo配置中心的逻辑就是这样,简单的说就是无线循环的去获取配置信息,当获取到的配置信息与上次获取到的不同那么就刷新容器缓存的配置项并且更新客户端缓存的配置信息。


讯享网

3. 注解ApolloConfigChangeListener分析
3.1@ApolloConfigChangeListener实现原理

Apollo配置中心有声明一个后置处理器,所以在程序启动的时候,spring容器会自动加载这个PostProcessor。

类图如下

由ApolloProcessor的具体实现可以看到,在postProcessBeforeInitialization(后置处理器生成之前,会调用子类的processField、processMethod方法)。就是说在ApolloProcessor构造后置处理器之前,会调用ApolloAnnotationProcessor的processMethod

ApolloAnnotationProcessor的具体实现

在配置文件发生变动的时候,调用顺序就跟第一大节说的顺序一致。

4 实际使用
4.1配置多个环境列表(一个portal管理多个环境的配置)

在启动portal的时候需要添加参数来指定某个环境对应的注册中心是什么。如下:

在启动Portal的时候,当点击的是dev也签,调用的注册中心是dev_meta;

在apollo中,可以支持多个环境列表的,通过阅读源码可以知道;在portal模块启动的时候,Apollo会将PortalDB库中的ServerConfig表中的数据添加到运行变量中去,其中就有环境列表的信息,这里需要手动加上去,并且用逗号隔开,添加的值也只能是它规定的那几个值。代码如下:

  • 获取表中的数据并将它们设置到环境变量中
4.2 指定运行环境
  • 1.在默认路径 /opt/settings/server.properties中指定代码的运行时环境。在项目启动的时候,会找到classpath路径下面的 apollo-env.properties,由它来指定具体的环境与注册中心的对应关系。这样,就不需要添加-Dapollo.mata这个变量了

小讯
上一篇 2025-05-25 13:56
下一篇 2025-05-23 12:32

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/175929.html