我正在写一个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