【问题标题】:External URL configuration in microservice微服务中的外部 URL 配置
【发布时间】:2019-05-26 01:06:42
【问题描述】:

我有多个通过 REST 调用相互通信的微服务。 我使用了 spring boot 和 spring rest,并在 application.properties 文件中配置了 rest 端点的 URL。 现在的问题是,如果一个端点的 URL 发生变化,那么我必须手动修改调用已更改的特定端点的服务的所有属性文件。

是否有解决此问题的方法,以便可以以某种方式将 URLS 放置在集中位置,这样任何修改都不会影响正在使用它的其他服务。

【问题讨论】:

    标签: java spring rest spring-boot microservices


    【解决方案1】:

    您可以使用 spring-cloud 来实现这一点。 spring-cloud 中使用的通常方法是在 git repo 中配置所需的属性。然后,您可以通过任何微服务以最少的配置访问这些属性。你可以参考projects in this repo limits-services 充当需要在spring-cloud-config-server 中配置的某些属性的客户端。希望这会有所帮助。

    【讨论】:

    • 如果您遇到任何身份验证问题refer this
    【解决方案2】:

    如果是微服务,您可以使用 Spring Cloud Config (Spring Cloud Config, Spring Cloud Config Server)。它非常有用,您可以在运行时更新配置。

    Spring Cloud Config 为分布式系统中的外部化配置提供服务器和客户端支持。使用配置服务器,您可以在所有环境中管理应用程序的外部属性。客户端和服务器上的概念与 Spring Environment 和 PropertySource 抽象映射相同,因此它们非常适合 Spring 应用程序,但可以用于以任何语言运行的任何应用程序。当应用程序通过部署管道从开发到测试再进入生产时,您可以管理这些环境之间的配置,并确保应用程序在迁移时具备运行所需的一切。

    【讨论】:

      【解决方案3】:

      正如其他人所提到的,您可以使用Spring Cloud Config Server 远程加载您的应用程序配置。您只需要包含您的配置的git 存储库。

      Spring Cloud 配置支持 Git,数据库作为你的配置存储。

      想法是创建一个可以为其他应用程序提供配置的 spring-boot 应用程序。

      @SpringBootApplication
      @EnableConfigServer
      public class ConfigServer {
        public static void main(String[] args) {
          SpringApplication.run(ConfigServer.class, args);
        }
      }
      

      您可以使用密钥 spring.cloud.config.server 配置端口并提供您的 git 存储库

      server.port: 8888
      spring.cloud.config.server.git.uri: file://${user.home}/config-repo
      

      在客户端,如果您的类路径中有 spring-config,应用程序将尝试连接到端口 8888 上运行的应用程序以检索配置。

      更多信息可以在here找到。

      【讨论】:

        【解决方案4】:

        可以将配置放入数据库中。
        之后需要有一个集中缓存服务供其他服务使用,可以是.jar服务,
        然后可以在此服务的缓存类中加载这些值,
        然后在前端需要有更新按钮,用于在修改数据库中的 URL 值后更新缓存,这样所有受影响的服务都可以使用新值。
        并且更容易可能有独立的 UI 来更新这些配置,而不是直接更新数据库。

        【讨论】:

          【解决方案5】:

          您可以使用Microconfig.IO 来管理您的服务配置,它的占位符功能可以从其他服务中引用某些服务的配置值。因此,在您的情况下,您在服务器中配置部署 url 并在客户端中放置占位符。这允许您只在一个地方编辑值,然后依赖它的每个人都会自动获得它。

          【讨论】:

            猜你喜欢
            • 2020-08-02
            • 2018-04-28
            • 1970-01-01
            • 1970-01-01
            • 2020-05-06
            • 2019-10-22
            • 1970-01-01
            • 1970-01-01
            • 2019-11-27
            相关资源
            最近更新 更多