#spring-cloud #spring-cloud-config
#spring-cloud #spring-cloud-config
Вопрос:
В центре настройки запущено три узла, при запуске сервера я обнаружил, что сервер каждый раз извлекает конфигурацию с одного и того же конфигурационного сервера, и только конфигурационный сервер обрабатывает запрос.
Журнал запуска моего сервера:
Multiple Config Server Urls found listed.
Fetching config from server at: http://***:20001/
Located environment: name=onip-boot, profiles=[prod], label=null, version=..., state=null
Я прочитал исходный код ConfigServicePropertySourceLocator.java , в строке 205, я обнаружил, что, похоже, он всегда запрашивает у первого получение конфигурации, а затем возвращает, если только он не завершится неудачей и не зациклит следующий. Итак, Spring Cloud Config не имеет возможности балансировки нагрузки?
for (int i = 0; i < noOfUrls; i ) {
Credentials credentials = properties.getCredentials(i);
String uri = credentials.getUri();
String username = credentials.getUsername();
String password = credentials.getPassword();
logger.info("Fetching config from server at : " uri);
try {
HttpHeaders headers = new HttpHeaders();
addAuthorizationToken(properties, headers, username, password);
if (StringUtils.hasText(token)) {
headers.add(TOKEN_HEADER, token);
}
if (StringUtils.hasText(state) amp;amp; properties.isSendState()) {
headers.add(STATE_HEADER, state);
}
final HttpEntity<Void> entity = new HttpEntity<>((Void) null, headers);
response = restTemplate.exchange(uri path, HttpMethod.GET, entity,
Environment.class, args);
}
catch (HttpClientErrorException e) {
if (e.getStatusCode() != HttpStatus.NOT_FOUND) {
throw e;
}
}
catch (ResourceAccessException e) {
logger.info("Connect Timeout Exception on Url - " uri
". Will be trying the next url if available");
if (i == noOfUrls - 1)
throw e;
else
continue;
}
if (response == null || response.getStatusCode() != HttpStatus.OK) {
return null;
}
Environment result = response.getBody();
return resu<
}
Комментарии:
1. Если под балансировкой нагрузки вы подразумеваете циклический перебор, нет, он этого не делает. Тем не менее, он балансирует нагрузку на запросы с использованием первого алгоритма Alive.
2. Я понял. 3q. На самом деле не обязательно использовать стратегию балансировки нагрузки