# 14.6 远程刷新配置属性

在我写这一章的时候，我在一架飞机上，这架飞机因为维修问题返航了。这没什么大不了的，因为大家都知道飞机的维修人员会很好的处理这个问题。即便如此，这件事的有趣之处在于，维修飞机必须在地面上进行。飞机在飞行途中没有太多的维修工作可以做。

相比之下，在《星球大战》电影中，如果 `卢克·天行者` 或 `波·达默龙` 的 X 战斗机需要维修，那么维修机器人可以随时来解决 这个问题，即使 X 战斗机正在战斗之中。

传统上，应用程序维护（包括配置更改）需要重新部署或至少重新启动应用程序。也就是说即使是进行一个很小的配置调整，应用程序由于缺少一个维修机器人，也需要返航维修。但这对云原生应用来说是不可接受的。我们希望能够动态更改配置属性，甚至应用程序都不需要下线停机。

幸运的是，Spring Cloud Config Server 支持零停机刷新应用程序属性配置的能力。一旦配置修改被推送到后端 Git 存储库或 Vault 加密存储库，每个微服务应用程序都可以立即使用下面的两种方式刷新配置：

* 手动 —— Config Server 客户端暴露接口 `/actuator/refresh`。通过对些接口发送 HTTP POST 请求，强制客户端从 Config Server 后端检索最新的配置。
* 自动 —— 通过 Git 存储库中的提交钩子触发 Config Server 的所有客户端进行刷新。这涉及到另一个 Spring Cloud Bus 的项目，用于在 Config Server 以及它的客户端之间进行通信。

每种选择都有其利弊。手动刷新可以更精确地控制哪些服务更新为新的配置，但它需要单独的向每个微服务的每个实例发出 HTTP 请求。自动刷新将更新的配置立即应用到所有微服务，这是由配置存储库的提交触发的（可能对某些项目来说这有点不适合）。

让我们看看每个选项。然后再决定在您的项目中使用哪种方式。
