Spring boot 当属性计数较高时,SpringBoot动态刷新的加载时间过长

Spring boot 当属性计数较高时,SpringBoot动态刷新的加载时间过长,spring-boot,spring-cloud,Spring Boot,Spring Cloud,SpringBoot加载和刷新在大约12000个属性的git文件中配置的动态属性花费的时间太长 我创建了一个带有配置服务器和客户端模块的小型PoC来演示此行为: 我预计只有几秒钟,SpringBoot才会发现在调用/refresh end point时在属性中没有检测到任何更改。但是它需要大约7分钟的时间 在我们的应用程序中,我们必须每60秒检查一次更改,但由于刷新周期较长,CPU始终处于100%使用状态 是否有解决此问题的方法?可能是您应该在刷新范围下拥有较少的属性 将所有内容保持在刷新范围

SpringBoot加载和刷新在大约12000个属性的git文件中配置的动态属性花费的时间太长

我创建了一个带有配置服务器和客户端模块的小型PoC来演示此行为:

我预计只有几秒钟,SpringBoot才会发现在调用/refresh end point时在属性中没有检测到任何更改。但是它需要大约7分钟的时间

在我们的应用程序中,我们必须每60秒检查一次更改,但由于刷新周期较长,CPU始终处于100%使用状态


是否有解决此问题的方法?

可能是您应该在刷新范围下拥有较少的属性

将所有内容保持在刷新范围内会损害您的应用程序。因此,最好将刷新范围缩小到始终需要的位置

除此之外,您还应该检查服务器和git之间的连接,以确保没有出现低延迟


希望这能有所帮助。

换句话说,SpringBoot不是为处理如此多的属性而设计的?帐户信息对我们来说是动态的,因此我们无法将其从刷新范围中删除,除非有其他机制可用。这里没有延迟问题,这纯粹是SpringBoot处理刷新的方式消耗了时间和资源。SpringBoot团队是否会解决这个问题?或者我们应该离开SpringBoot去寻找另一种解决方案?
@RefreshScope
@RestController
class K8sRestController {

    @Autowired
    private K8sProperties k8sProperties;

    @RequestMapping("/k8s-props")
    K8sProperties getK8sProperties() {
        return k8sProperties;
    }
@Data
@Component
@ConfigurationProperties(prefix = "kubernetes")
public class K8sProperties {
  private List<ManagedAccount> accounts = new ArrayList<>();

  @Data
  public static class ManagedAccount {
    private String name;
    private ProviderVersion providerVersion;
    private String environment;
    private String accountType;
    ...

server:
  port: 8888
spring:
  cloud:
    config:
      server:
        git:
          uri: https://github.com/kirangodishala/cloud-config.git
          basedir: /tmp/cd1
  application:
    name: clouddriver