程序员

Apollo配置中心 原理分析

2020-11-11  本文已影响0人  凡毓不凡
  • 关键字Apollo原理、Apollo动态刷新机制

什么是Apollo?

Apollo得原理

配置发布后的实时推送设计: 配置发布后的实时推送

大致过程:
① 用户在Portal操作配置发布
② Portal调用Admin Service的接口操作发布
③ Admin Service发布配置后,发送ReleaseMessage给各个Config Service
④ Config Service收到ReleaseMessage后,通知对应的客户端
发送ReleaseMessage的实现方式
Config Service通知客户端的实现方式

客户端设计
客户端设计

实现原理:
① 客户端和服务端保持了一个长连接,从而能第一时间获得配置更新的推送。(通过Http Long Polling实现)
② 客户端还会定时从Apollo配置中心服务端拉取应用的最新配置。

和Spring集成的原理

Apollo在Spring环境下实现配置优先级原理

应用属性动态刷新原理与示例
    @Value("${test.refresh}")
    private String refresh;

此种引入apollo-client客户端之后,启动类加上@EnableApolloConfig,如果有涉及到属性发布,即可刷新

@Data
@ConfigurationProperties(prefix = "test")
public class DaaSProperties {
    private boolean refresh;
}

以@ConfigurationProperties得形式得属性,需要额外添加监听器Bean,方法上加上注解@ApolloConfigChangeListener。例如:

    @Configuration
    @Slf4j
    public static class ConfigChangeListener implements ApplicationEventPublisherAware {

        private static ApplicationEventPublisher applicationEventPublisher;

        @ApolloConfigChangeListener(value = "O2O.test.daas")
        private void onChanged(ConfigChangeEvent configChangeEvent){

            Set<String> strings = configChangeEvent.changedKeys();

            strings.forEach( s ->{

                ConfigChange change = configChangeEvent.getChange(s);
                change.getOldValue();

                log.info("【配置变更】Key:{},OldValue:{},NewValue:{}",change.getPropertyName(),change.getOldValue(),change.getNewValue());

            });

            applicationEventPublisher.publishEvent(new EnvironmentChangeEvent(strings));// 刷新ConfigurationProperties Bean
        }

        @Override
        public void setApplicationEventPublisher(ApplicationEventPublisher applicationEventPublisher) {

            ConfigChangeListener.applicationEventPublisher = applicationEventPublisher;
        }
    }
  1. ☛ 文章要是勘误或者知识点说的不正确,欢迎评论,毕竟这也是作者通过阅读源码获得的知识,难免会有疏忽!
  2. 要是感觉文章对你有所帮助,不妨点个关注,或者移驾看一下作者的其他文集,也都是干活多多哦,文章也在全力更新中。
  3. 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处!
上一篇下一篇

猜你喜欢

热点阅读