当前位置: 首页 > 知识库问答 >
问题:

如何覆盖功能区.server列表刷新Spring云功能区中的平均值?

鲁建茗
2023-03-14

我编写了一个简单的Spring Cloud Ribbon应用程序,来调用在Eureka注册的REST服务。

但是如何覆盖ribbon.serverListRefreshInterval值呢?默认值是30秒,我想缩短时间间隔。

提前致谢。

共有2个答案

管翼
2023-03-14

@相互依赖

在application.yml中放入下面的配置后,看起来配置没有生效。

Compute-Service:   
  ribbon:  
    ServerListRefreshInterval: 1000

我注意到Ribbon端的实例列表已经更新(通过eureka . client . registry-fetch-interval-seconds参数),但是Ribbon仍然指出一个死实例:

[tbeatExecutor-0] com.netflix.discovery.DiscoveryClient    : DiscoveryClient_RIBBON-CONSUMER/192.168.1.101:Ribbon-Consumer:3333 - Heartbeat status: 200  
[freshExecutor-0] com.netflix.discovery.DiscoveryClient    : Got delta update with apps hashcode UP_2_  
[freshExecutor-0] com.netflix.discovery.DiscoveryClient    : Added instance 192.168.1.101:Ribbon-Consumer:3333 to the existing apps in region null  
[freshExecutor-0] com.netflix.discovery.DiscoveryClient    : Deleted instance 192.168.1.101:Compute-Service:2222 to the existing apps  
[freshExecutor-0] com.netflix.discovery.DiscoveryClient    : Added instance 192.168.1.101:Compute-Service:1111 to the existing apps in region null  
[freshExecutor-0] com.netflix.discovery.DiscoveryClient    : The total number of instances fetched by the delta processor : 3  
[freshExecutor-0] com.netflix.discovery.DiscoveryClient    : The total number of all instances in the client now is 2  
[freshExecutor-0] com.netflix.discovery.DiscoveryClient    : Completed cache refresh task for discovery. All Apps hash code is Local region apps hashcode: UP_2_, is fetching remote regions? false  
[nio-3333-exec-3] o.a.c.c.C.[.[.[/].[dispatcherServlet]    : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.springframework.web.client.ResourceAccessException: I/O error on GET request for "http://Compute-Service/add": Connection refused; nested exception is java.net.ConnectException: Connection refused] with root cause 

192.168.1.101:计算服务:1111是正确的服务实例,而192.168.1.101:计算服务:2222是死实例,显然,功能区仍然指向死实例,这意味着功能区服务器列表缓存没有刷新。

秦渝
2023-03-14

尝试使用:

myService.ribbon.ServerListRefreshInterval=10000

其中,我的服务是目标微服务的名称。

更新:

在一些源代码挖掘之后,我发现<code>LoadBalancerBuilder<code>调用:

@Deprecated
public ZoneAwareLoadBalancer(IClientConfig clientConfig, IRule rule,
        IPing ping, ServerList<T> serverList, ServerListFilter<T> filter) {
    super(clientConfig, rule, ping, serverList, filter);
}

谁的管理员是:

@Deprecated
public DynamicServerListLoadBalancer(IClientConfig clientConfig, IRule rule, IPing ping, 
        ServerList<T> serverList, ServerListFilter<T> filter) {
    this(
            clientConfig,
            rule,
            ping,
            serverList,
            filter,
            new PollingServerListUpdater()
    );
} 

请注意< code > PollingServerListUpdater 构造函数:

private static int LISTOFSERVERS_CACHE_REPEAT_INTERVAL = 30 * 1000; // msecs;

public PollingServerListUpdater() {
    this(LISTOFSERVERS_CACHE_UPDATE_DELAY, LISTOFSERVERS_CACHE_REPEAT_INTERVAL);
}

public PollingServerListUpdater(IClientConfig clientConfig) {
    this(LISTOFSERVERS_CACHE_UPDATE_DELAY, getRefreshIntervalMs(clientConfig));
}

第二个选项允许我们覆盖默认的刷新间隔。然而它是第一个被调用的,所以它忽略了属性。

更新2:

这有一个公开的问题:https://github.com/spring-cloud/spring-cloud-netflix/issues/1304

 类似资料:
  • 我们的团队正计划从 Spring CloudNetflix功能区到Spring Cloud LoadBalancer,并使用spring-cloud d-kubernetes作为发现客户端。 使用Spring Cloud Gateway而不是Zuul 和Resilience4j而不是Hystrix。 需要进行哪些必要的更改,我们是否需要更改等效属性。您能帮助我们从哪里开始吗?

  • 我正在开发一个模式锁定应用程序。 问题是,当手机屏幕关闭时,我的锁定活动显示为解锁,但当我按下移动主页键时,它就工作了。 在进入解锁模式之前,我想覆盖home key功能(因为它不工作)。 我谷歌了一下,但没有得到任何解决方案。 请帮帮我。

  • 实现点击工具栏中“+”号扩展区域内添加自定义事件,比如添加“最近订单”、“最近商品”: 注:图片需要添加到SDK中对应bundle资源文件中 /** @return 扩展内容 例如: @[@{@"picName": @"图片-(1)",@"highLightPicName": @"图片hover",@"name": @"图片1"}, @{@"picName": @"图片-(1)",@"highLi

  • 问题内容: 我知道python函数默认是虚拟的。假设我有这个: 我不希望他们能够这样做: 有没有办法防止用户重载roo()? 问题答案: 您可以使用元类: 每当创建子类时,就会调用该元类型的 new 。如果您在场,这将导致错误。仅当没有基类时,它才会接受roo的定义。 您可以通过使用注释来声明哪些方法是最终方法,从而使该方法更加理想。然后,您需要检查所有基准并计算所有最终方法,以查看是否有任何基准

  • 问题内容: 如果我上课: 我最初以为我可以通过添加扩展名来覆盖子类而无需子类化: 该代码不会编译,但错误说明了该函数,这很有意义。 我的问题是: 是否仍要重写特定类的功能?换句话说,在某些情况下,例如上面的示例中,我可以替换功能吗?如果没有,是否有其他解决方法或方法来实现该行为(可能声明了另一个协议,idk) 现在,我考虑得更多了,我不得不说这是不可能的,因为是什么阻止某人重写任何标准库函数? 问

  • 功能区1:4大主菜单 Explore Search Git Debug 分别是文件夹,搜索,git和调试 功能区2:二级菜单 点击每个主菜单都会显示对应的二级菜单,比如Explore就是打开的目录,具体在后面讲解 功能区3:编辑区 我们最常用的编码区 功能区4:信息显示区 当前git信息,格式,字符编码等 master+ 0↓ 1↑ master代表当前git分支是master分支 0↓ 代表远端