使用 Spring-Cloud-Config 而不是 Archaius 的 Hystrix 运行时配置?

Posted

技术标签:

【中文标题】使用 Spring-Cloud-Config 而不是 Archaius 的 Hystrix 运行时配置?【英文标题】:Hystrix runtime configuration with Spring-Cloud-Config instead of Archaius? 【发布时间】:2016-06-30 06:41:31 【问题描述】:

我正在研究 Spring-Cloud-Netflix,我了解到 Archaius 用于 Hystrix 运行时配置。 (https://ahus1.github.io/hystrix-examples/manual.html#archaius)

我还发现 Archaius 从 V1.5.0 (https://github.com/Netflix/Hystrix/pull/1083) 开始是软依赖:“Archaius 现在是 Hystrix 的软依赖,所以你可以提供自己的配置机制。”

我的问题是,在运行时使用 Spring-Cloud-Config 配置 Hystrix 是否容易?我做了一些研究,但没有找到任何例子。

欣赏任何想法。

【问题讨论】:

【参考方案1】:

经过几天的研究,我设法使用 Spring Cloud Config 动态配置 Hystrix 属性。我还做了一个关于在运行时配置 Hystrix 实例属性的小演示。

首先,each Hystrix property has four levels of precendence:

    全局默认值 动态全局默认值 实例默认值 动态实例属性。

第 1 层和第 3 层仅支持静态配置。由于在 Hystrix Wiki 中没有对第二级(动态全局默认)进行大量讨论,因此我选择 Dynamic Instance Property 进行运行时配置。不过,我相信我的方法也应该适用于 Dynamic Global Default

做法很简单。首先使用 @Value 注解从 Spring Cloud Config 中拉取一个配置值:

@Value("timeoutInMilliseconds:1500")
String timeout;

然后在你的 Hystrix 实例中使用字符串timeout

ConfigurationManager.getConfigInstance().setProperty("hystrix.command.HystrixHelloWorld.execution.isolation.thread.timeoutInMilliseconds", timeout);

如果ConfigurationManager.getConfigInstance() 是Archaius method,则返回一个配置实例。 .setProperty() 设置属性

【讨论】:

以上是关于使用 Spring-Cloud-Config 而不是 Archaius 的 Hystrix 运行时配置?的主要内容,如果未能解决你的问题,请参考以下文章

重命名 spring-cloud-config 原生配置文件

spring-cloud-config——Quick Start

问题 spring-cloud-config 和 spring-cloud-bus

为啥 spring-cloud-config 示例测试需要旋转配置服务器?

spring-cloud-config 配置中心快速上手

干货分享微服务spring-cloud(7.配置中心spring-cloud-config)