0

如何通过 Ribbon 对微服务进行负载均衡(不是 feign)。我有 3 个微服务“M1”、“M2”和“M2_duplication”,“M1”通过 feign 与“M2”通信。我想如果“M2”获得太多流量,请求将被转发到“M2_duplication”。这怎么可能通过@ribbonclient 实现?

聚甲醛 M1:

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

M1中的feign调用:

//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);
    }
}
4

1 回答 1

2

您的问题相当模糊……例如,您明确声明“不假装”,然后显示 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

于 2016-04-25T12:26:16.627 回答