分布式配置中心Apollo踩坑日记之Spring Cloud

Apollo(阿波罗)是携程框架部门研发的配置管理平台,能够集中化管理应用不同环境、不同集群的配置,配置修改后能够实时推送到应用端。

 在SpringCloud 项目使用apollo时,当使用到@ConfigurationProperties相关的配置时,有两种动态刷新的方案:EnvironmentChangeEvent或RefreshScope(注意是类而非注解)
ranrefreshScope.refresh方案对eureka、zuul等第三方框架不兼容的问题

refreshScope.refresh方案对eureka、zuul等第三方框架不兼容的问题

官方给出的方案是通过refresh指定name的bean的方式来刷新该配置类。

该方法会抛出含有指定bean名称的RefreshScopeRefreshedEvent的Spring事件。

然而由于eureka也有对该事件的监听,并且eureka并没有判断bean的名称,直接下线再上线服务。

这样就导致,标注了@ConfigurationProperties的apollo相关配置,在运行时如果想动态更新,势必会引起如Eureka之类的第三方框架的“刷新”动作。

使用EnvironmentChangeEvent方案【推荐】

在springcloud的context中,EnvironmentChangeEvent被定义为环境变更的事件,适用于环境配置的重新绑定。而一般第三方框架也很少会对该事件做出“功能性”的刷新动作。

接入方式:

发表评论
留言与评论(共有 0 条评论)
   
验证码:

相关文章

推荐文章

'); })();