服务的所有tomcat服务器上的缓存刷新

时间:2019-09-06 05:50:20

标签: tomcat caching load-balancing

我正在写一个rest api,它刷新服务器上的缓存。通常,如果您的服务在负载平衡器之后运行,则将请求委派给您的服务的服务器之一。我想知道是否有一些配置/方法可以影响所有服务器,因为我想刷新所有服务器上的缓存,而不是由负载均衡器选择的随机服务器上的缓存。

已尝试: 我列出了当前为我的微服务工作的所有服务器的列表。例如。

10.90.65.1 10.90.65.2 10.90.65.3

我正在使用for循环在所有这些服务器上手动命中rest api。

public String[] getBaseUrls(){
        String baseUrlsStr = "http://10.90.65.1:8080","http://10.90.65.2:8080","http://10.90.65.3:8080";
        return baseUrlsStr.split(",");
    }


public void refreshCacheAsync() {
        String[] baseUrls = getBaseUrls();

        Executor executor = Executors.newFixedThreadPool(8);
        for (String baseUrl : baseUrls){
            final String url = baseUrl + "/refreshCache";  // end point
            executor.execute(new Runnable() {
                @Override
                public void run() {
                    try {
                        httpClient.execute(new HttpGet(url));
                    }catch (Exception e){
                        LOGGER.error("error occurred while refreshing cache on url : {}", url);
                    }
                }
            });
        }

    }

有没有更好的方法可以做到这一点。 ?

配置:

Tomcat版本-7.0,

负载均衡器-haproxy

0 个答案:

没有答案