So erhalten Sie eine Spring-Cloud zuul, um eine andere Schaltung für verschiedene Dienste zu verwenden

8

Ich versuche, Spring-Cloud-Starter-Zuul zu verwenden. Ich habe Eureka eingerichtet und einen einfachen Service registriert, den ich als Eureka-Client geschrieben habe. Ich registriere zwei Instanzen auf zwei verschiedenen Hosts mit zwei verschiedenen Anwendungsnamen, also sind sie zwei verschiedene Dienste in Eureka. Mein Ziel ist es, sicherzustellen, dass, wenn ServiceA gut funktioniert und ServiceB schlecht funktioniert, das Proxying auf ServiceA nicht von einem Fehler beim Proxying auf ServiceB betroffen ist.

Wenn ich den Lasttest-Service A alleine durch zuul betreibe, kann ich meinen Durchsatz von 400 TPS problemlos aufrechterhalten. Wenn ich dann in serviceB werfe und es total überladen und es überall auslaufen lasse, würde ich erwarten, dass serviceA bei 400 fortsetzt, während serviceB flundern, aber stattdessen fällt serviceA auf weniger als 50 TPS Erfolgsrate und hat eine Reihe von Fehlern als gut.

Es scheint, dass alle vom RibbonRoutingFilter erzeugten RibbonCommands die gleiche Schaltung in der Hystrix teilen, was für mich keinen Sinn ergibt. Wenn ich im RibbonRoutingFilter sehe, wo es den RibbonCommand erstellt, sehe ich keine Möglichkeit, es so zu konfigurieren, dass es einen anderen verwendet.

In RibbonRoutingFilter:

%Vor%

Ich habe validiert, dass der restClient für serviceA und serviceB unterschiedlich ist, also verwenden sie ihre eigene Konfiguration des Verbindungspools, wie ich sie in der application.yml-Datei angegeben habe, aber es gibt immer noch eine Menge Cross-Kontamination in Servicequalität zwischen serviceA und serviceB.

Es scheint einen anderen Konstruktor für RibbonCommand zu geben, der einen "commandKey" als ersten Parameter verwendet, und der Verweis, den ich referenziere, wird einfach an diesen mit einem commandKey-Wert von "default" übergeben. Ich sehe keine Schalter oder Optionen, um das im RibbonRoutingFilter zu überschreiben. Für mich bedeutet dies eine ernsthafte Beeinträchtigung der Lebensfähigkeit von Zuul, wenn es aus dem Frühjahrs-Cloud-Projekt verwendet wird.

Gibt es eine Möglichkeit für mich, dies so zu konfigurieren, dass jeder Dienst seinen eigenen Schaltkreis hat?

Anwendbare Portionen meines Pom:

%Vor%

application.yml:

%Vor%

Meine Anwendungsklasse:

%Vor%     
digitaljoel 21.01.2015, 23:03
quelle

1 Antwort

5

Ich denke, wenn Sie einen Snapshot verwenden, der bereits der Standard ist (andere Schaltung pro Backend): Ссылка .

    
Dave Syer 22.01.2015, 09:23
quelle