将Rails从SpringCloudConfig Server连接起来

关于

我从使用Spring Boot的项目转移到使用Rails的项目时,突然想到是否存在一个可以将Rails连接到Spring Cloud Config服务器的客户端Gem,于是进行了调查。

Spring Cloud Config是什么?

使用Git等进行管理配置信息,并通过微服务(Spring Cloud Config Server)充当返回配置信息的服务器的角色来利用配置信息。使用客户端配置的微服务只需加载Spring Cloud Config Client的Jar,并只需使用Config Server的URL等信息即可使用配置。

我要搭建ConfigServer。

我在GitHub上搜索了示例代码,搭建了ConfigServer。我使用了这个资源。

您可以根据README.md中的说明执行,也可以使用mvnw spring-boot:run来执行,但我稍微解释一下内部的内容。

以下是pom.xml(摘录),其中boot的版本是2.3.3.RELEASE,并将spring-cloud-config-server添加为依赖。

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.3.3.RELEASE</version>
        <relativePath/>
    </parent>

    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-config-server</artifactId>
        </dependency>

....

设定情报的数据来源可以在 bootstrap.yml 文件中按以下方式定义。

spring:
  application:
    name: config-server
  cloud:
    config:
      server:
        git:
          uri: https://{設定を保存するリポジトリ}
          searchPaths:  {リポジトリ内で設定を保存するフォルダ}

在Spring Boot应用程序中添加@EnableConfigServer注解如下。

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

使用配置实用程序的客户端微服务应在pom.xml中添加以下内容以添加config client的依赖项。

<dependency>
  <groupId>org.springframework.cloud</groupId>
  <artifactId>spring-cloud-config-client</artifactId>
</dependency>

在bootstrap.yml中,将Config Server的URL设置如下。

pring:
  application:
    name: config-client-test
  cloud:
    config:
      env: default # optional
      label: master # optional
      uri: http://localhost:8888 # optional

关于在Ruby上的使用

在这里,我已经简要介绍了如何在spring-boot中使用config server。接下来,我将介绍如何在Ruby中使用它。
当我在Google上搜索时,

我找到了一个问题,但似乎它没有支持Rails 6。另外,从提交评论来看,config server的支持版本似乎只到v2。同时也有另一个问题,

这是一个例子。通过在Gemfile中添加gem ‘scc_ruby’即可使用。可以按照下面的方式使用。

h = SccRuby::Api.fetch('http://localhost:8888', 'sample', Rails.env)

客户端库是不需要的吗?

在这里我想到的是,由于可以使用HTTP,所以可能不需要使用客户端库,例如可以像下面这样获取。

uri = URI.parse("http://localhost:8888/sample/" + Rails.env)
response = Net::HTTP.get_response(uri)

其他语言的客户端

我没有详细了解,但似乎Python的客户端有以下这些。

spring-config-client自2019年以来未进行更新,但config-client在2021年4月有更新。

我也查了Go语言。

2021 年有一项更新。

总结

    • Spring Cloud Configに他の言語のクライアントから繋ぐことができる

 

    • クライアントライブラリを利用することができるが、ライブラリが古いことがありそう

 

    ライブラリを利用しなくてもHTTPで繋いで設定を取得することができる。
广告
将在 10 秒后关闭
bannerAds