0

Wie loadbalance micro services über Ribbon (nicht vorgeben). Ich habe 3 Mikrodienste "M1", "M2" und "M2_duplication", "M1" kommuniziert mit "M2" über Täuschung. Ich möchte, wenn "M2" zu viel Verkehr bekommen, werden die Anfragen an die "M2_duplication" weitergeleitet. Wie ist das mit @ribbonclient möglich?federwolke + band + vorzeichen + zuul + eureka

POM M1:

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

Der feign Anruf in M1:

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

Anwendung M1:

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

die Mikrodienste können über Eureka registrieren und kommunizieren, aber wenn auf der Feder hinzufügen Boot App-Klasse @RibbonClient (Name = "Verwaltung") // keine Kommunikation zwischen M1 und M2 – xGenius

Antwort

2

Ihre Frage ist eher vage ... Sie zum Beispiel speziell gib 'nicht vor' und zeige dann einen FeignClient. Nichtsdestotrotz scheint es, als würden Sie fragen, wie Sie ein Verfügbarkeitsmuster für Ihren Farbband-Lastenausgleich implementieren. Um dies zu tun, erstellen Sie eine Ribbon-Konfigurationsklasse und überschreiben dann die Load-Balancer-Strategie-Regel. Zum Beispiel:

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

Es gibt eine Reihe von vorhandenen Ribbon Rule-Strategien um die Verfügbarkeit, z. AvailabilityFilteringRule oder BestAvailableFilter, aber wenn keine davon passt, können Sie auch Ihre eigene Regel schreiben. Sobald Sie Ihre Klasse haben, ändern Sie Ihre RibbonClient Annotation es zu verweisen, zum Beispiel:

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

Sie weitere Informationen finden Sie hier: https://github.com/Netflix/ribbon/wiki/Working-with-load-balancers

+0

Vielen Dank RobP, das ist fast das, was ich will, ich möchte eine Regel festlegen, wenn M2 60% der Gebühren haben, wird M2_duplication behandeln die Kommunikation. Ist das mit Band möglich? – xGenius

+0

Ich bin froh, dass meine Antwort geholfen hat. Was meinst du mit Gebühren? Anrufe? Möchten Sie 60% der Anrufe an M2 und 40% an M2_duplication? Oder? Mit AvailabilityFilteringRule können Sie ein Limit für aktive Verbindungen angeben (siehe den Link in der Antwort). Vielleicht hilft Ihnen das? – RobP

+0

Ja, der Link, den Sie mir geschickt haben, war sehr hilfreich, aber was ist, wenn ich jedes Mal für jede Kommunikation einen anderen Micro-Dienst senden möchte? – xGenius