Шаблон отдыха с балансировкой нагрузки - PullRequest
0 голосов
/ 04 ноября 2018

У меня есть два экземпляра сервера Eureka, и на каждом сервере зарегистрированы разные службы (несколько экземпляров). У меня есть клиентское приложение, которое выполняет остальные вызовы к службам, зарегистрированным на каждом из серверов Eureka. Я использую шаблон отдыха, чтобы сделать вызовы покоя этим сервисам через имя сервиса. LoadBalanced остальные шаблон в этом случае не работает. Мне нужны материалы о том, как этого добиться.

@Bean
@LoadBalanced
RestTemplate restTemplate() {
    return new RestTemplate();
}

Это шаблон отдыха, который у меня есть. У меня есть два разных сервера Eureka, которые полностью независимы. Я хочу, чтобы мое приложение могло общаться с приложениями, зарегистрированными на обоих этих серверах, используя имя службы и шаблон отдыха.

Ответы [ 3 ]

0 голосов
/ 05 ноября 2018

Вы можете попробовать это. Это еще один пример того, как получить экземпляр и отправить запрос. Дайте мне знать, поможет ли это.

Свойства изменяются eureka.client.serviceUrl.defaultZone = eureka server1 url, eureka server2 url2

Это загрузит баланс между Eureka и Instances.

import org.springframework.cloud.client.loadbalancer.LoadBalancerClient;
import org.springframework.web.client.RestTemplate;

@RestController
public class HelloController {

    @Autowired
    RestTemplate restTemplate;

    @Autowired
    LoadBalancerClient loadBalancerClient;

    public String calDirectly(String name){

        ServiceInstance serviceinstance = loadBalancerClient.choose("<service name>");

            ResponseEntity<String> restExchange =
                    restTemplate.exchange(
                            "http://"+serviceinstance.getHost()+":"+serviceinstance.getPort()+"<url & other parameter>",
                            HttpMethod.GET,
                            null, String.class, name);

            return restExchange.getBody();
    }

}
0 голосов
/ 08 января 2019

Ваш клиент также должен быть зарегистрирован на сервере Eureka. Только тогда вызов службы по имени будет работать.

0 голосов
/ 05 ноября 2018

Если вы используете Spring ZUUL в качестве шлюза, он автоматически загрузит баланс запроса. Или программно может быть сделано с использованием кода ниже

LoadBalanced является частью общего облака весны https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-commons

import org.springframework.cloud.client.loadbalancer.LoadBalanced;

@Bean
@LoadBalanced
RestTemplate restTemplate() {
    return new RestTemplate();
}
...