0

Как загрузить балансировку микросервиса через ленту (не симулировать). У меня есть 3 микросервиса «M1», «M2» и «M2_duplication», «M1» связывается с «M2» с помощью симуляции. Я хочу, если «M2» получит слишком большой трафик, запросы будут перенаправлены на «M2_duplication». Как это возможно через @ribbonclient?весеннее облако + лента + симулирование + zuul + eureka

POM M1:

<dependency> 
     <groupId>org.springframework.cloud</groupId> 
     <artifactId>spring-cloud-starter-ribbon</artifactId> 
    </dependency> 

симулировать вызов в М1:

//name is taken from Eureka(service registry) 
    @FeignClient(name = "M1") 
    public interface M1ServiceClient { 
     @RequestMapping(method = RequestMethod.GET, value = "/getAllM2") 
     Map<String, String> getAllM2(); 
    } 

Применение M1:

@EnableConfigurationProperties() 
@SpringBootApplication 
@EnableEurekaClient 
@EnableFeignClients 
public class PortefeuilleApplication { 
    public static void main(String[] args) { 
     SpringApplication.run(PortefeuilleApplication.class, args); 
    } 
} 
+0

микро услуги может регистрироваться и общаться через Eureka, но если добавить к пружине boot app class @RibbonClient (name = "administration") // больше не требуется связи между M1 и M2 – xGenius

ответ

2

Ваш вопрос довольно расплывчатым ... например, вы специально state 'not feign', а затем показать FeignClient. Тем не менее, похоже, вы спрашиваете, как реализовать шаблон доступности для вашего балансировщика ленты. Для этого вы создаете класс конфигурации ленты и затем переопределяете правило стратегии балансировки нагрузки. Например:

@Configuration 
public class MyConfiguration { 
    @Bean 
    public IRule ribbonRule() { 
    return new RoundRobinRule(); 
    } 
} 

Существует множество существующих правил правила ленты вокруг доступности, например. AvailabilityFilteringRule или BestAvailableFilter, но если ни один из них не подходит, вы также можете написать свое собственное правило. Если у вас есть класс, изменить свое RibbonClient аннотации ссылаться на него, например:

@RibbonClient(name = "myClient", configuration = MyConfiguration.class) 

Вы можете найти более подробную информацию здесь: https://github.com/Netflix/ribbon/wiki/Working-with-load-balancers

+0

Спасибо RobP, это почти то, что я хочу, я хочу установить правило, если M2 имеет 60% зарядов, M2_duplication будет обрабатывать связи. возможно ли это с лентой? – xGenius

+0

Я рад, что мой ответ помог. Что вы подразумеваете под обвинениями? Вызовы? Вы хотите 60% звонков на M2 и 40% на M2_duplication? Или? Параметр AvailabilityFilteringRule позволяет указать лимит активных подключений (см. Ссылку в ответе), возможно, это поможет? – RobP

+0

Да, ссылка, которую вы мне прислали, была очень полезной, но что, если я хочу каждый раз отправлять на каждое сообщение в другую службу Micro? – xGenius

Смежные вопросы