Ich war in letzter Zeit Microservices ausgesetzt und habe diesen Aspekt ein gewisses Verständnis. Ich werde es mit Ihnen teilen.
Spring Cloud ist ein vollständiger Satz von Frameworks für die Implementierung von Microservices basierend auf Spring Boot. Es kann gesagt werden, dass Spring -Boot als Framework und Federwolke als Microservices zusammen ein neues Framework -System bilden, das nicht ignoriert werden kann. Es bietet die Komponenten, die für die Entwicklung von Microservice erforderlich sind, z. B. Konfigurationsmanagement, Service-Erkennung, Leistungsschalter, intelligente Routing, Mikroagenten, Steuerbus, globale Schlösser, Entscheidungskampagnen, verteilte Sitzungen und Cluster-Statusverwaltung, die bequem und einfach zu bedienen sind. Die Spring -Cloud enthält viele Subframes, von denen die Spring Cloud Netflix eines der Frameworks ist, die hauptsächlich Module bereitstellen: Service -Erkennung, Leistungsschalter und Überwachung, intelligentes Routing, Client -Lastausgleich usw.
Merkmal
(1) Eureka, Serviceregistrierung und Erkennung, bietet ein Service Registration Center, Service Discovery Client und eine bequeme Schnittstelle, um alle registrierten Dienste anzuzeigen. Alle Dienste verwenden den Service Discovery Client von Eureka, um sich auf dem Server von Eureka zu registrieren.
(2) Zuul, Gateway, alle Kunden fordern über dieses Gateway auf die Backend -Dienste zu. Es kann bestimmte Routing -Konfigurationen verwenden, um zu bestimmen, welcher Service eine bestimmte URL erledigt. Und erhalten Sie den registrierten Dienst von Eureka, um die Anfrage weiterzuleiten.
(3) Band, das heißt, Lastausgleich. Wenn Zuul Gateway eine Anfrage an eine Anwendung eines bestimmten Dienstes sendet und ein Dienst mehrere Instanzen startet, wird sie über eine bestimmte Lastausgleichsrichtlinie über eine bestimmte Serviceinstanz über eine bestimmte Services Instanz gesendet.
(4) Täuschung, Service -Client, wenn Dienste aufeinander zugreifen müssen, können Sie RastTemplate verwenden oder den Client vorstellen, um zugreifen zu können. Es verwendet standardmäßig das Ribbon, um einen Lastausgleich zu erreichen.
(5) Hytrix-, Überwachungs- und Leistungsschalter. Wir müssen der Serviceschnittstelle nur ein Hystrix -Tag hinzufügen, um die Überwachungs- und Leistungsschalterfunktionen dieser Schnittstelle zu realisieren.
(6) Das Hystrix -Dashboard, das Überwachungsfeld, bietet eine Schnittstelle, mit der die zeitaufwändigen Serviceanrufe für jeden Dienst überwacht werden können.
(7) Turbine, Überwachung der Aggregation unter Verwendung der Hytrixüberwachung müssen wir die Überwachungsinformationen jeder Serviceinstanz öffnen, um sie anzuzeigen. Turbine kann uns helfen, die Überwachungsinformationen aller Serviceinstanzen an einem Ort für die einheitliche Besichtigung zu aggregieren.
Sie können sich auf das Dokument befinden: https://springcloud.cc/spring-cloud-netflix.html
(1) Service Registrierung und Überwachungszentrum:
@SpringBootApplication@enableEureKaserver@enableHyStrixDashboardPublic Class ApplicationRegistry {public static void main (string [] args) {new SpringApplicationBuilder (application.class) .web (true) .run (args); }}Hier zeigt @springbootApplication mithilfe des Spring -Boot -Tags, dass die aktuelle Anwendung eine Spring -Boot -Anwendung ist. Auf diese Weise kann ich die Hauptfunktion direkt verwenden, um die Anwendung in der IDE zu starten, oder ich kann sie nach der Verpackung mit der Befehlszeile starten. Natürlich können Sie das verpackte Kriegspaket auch mit einem Server wie Tomcat starten. Verwenden Sie das Tag @Enableeurekaserver, um die Komponenten des Eureka -Dienstregistrierungss während des Startups zu starten. Es wird standardmäßig auf einen Port 8761 anhören, um die Dienstregistrierung zu erhalten. Und geben Sie eine Webseite an. Nach dem Öffnen können Sie den registrierten Service sehen. Das Hinzufügen von @EnableHystrixDashboard bietet eine Überwachungsseite. Wir können die Adresse des Dienstes eingeben, die darauf überwacht werden sollen, um den Anrufstatus der Schnittstelle mit aktivierter Hystrix -Überwachung anzuzeigen. Um die oben genannten Komponenten zu verwenden, müssen wir natürlich entsprechende Abhängigkeiten in der Maven-POM-Datei hinzufügen, z.
(2) Inter-Service-Anruf:
Es gibt zwei Möglichkeiten, Serviceanrufe, RastTemplate und FeignClient zu tätigen. Unabhängig von der Methode ruft sie die HTTP -Schnittstelle des Dienstes über die REST -Schnittstelle auf, und die Parameter und Ergebnisse werden standardmäßig über Jackson serialisiert und deserialisiert. Da die Schnittstelle, die von RESTCONTROLLER von Spring MVC definiert ist, werden die zurückgegebenen Daten über Jackson in JSON -Daten serialisiert.
Der erste Typ: RestTemplate müssen Sie nur eine RastTemplate -Bean definieren und auf LoadBalanced einstellen:
@ConfigurationPublic Class SomecloudConfiguration {@LoadBalanced @Bean rastTemplate rastTemplate () {return neu rastTemplate zurückgeben; }}Auf diese Weise können wir diese Bohne, wo wir sie brauchen, injizieren:
öffentliche Klasse SomeServiceClass {@autowired private rastTemplate rastTemplate; public String getUserById (Long userID) {userDto -results = restTemplate.getforObject ("http: // user/getUserDetail/" + userId, userDto.class); Rückgabeergebnisse; }}Wenn Benutzer die Service -ID ist, erhalten die Multifunktionsleiste eine Instanz dieses Dienstes aus der Liste der Serviceinstanz, senden Sie eine Anfrage und erhalten das Ergebnis. Das Object UserDto benötigt eine Seriennummer, und seine Anti-Seriennummer wird automatisch abgeschlossen.
Der zweite Typ: tripclient
@FeignClient (value = "user", path = "/user") public interface userCompoSiteService {@RequestMapping (value = "/getUserDetail/{id}", method = RequestMethod.get, produziert = mediatype.application_json_value) userdto -GetSerby (@pathovariable);Wir müssen nur eine Entschuldigung mit @FeignClient definieren. Spring Cloud Feign hilft uns, eine Implementierung zu generieren und Daten aus dem entsprechenden Benutzerdienst zu erhalten. Unter ihnen ist der Wert in @FeignClient (value = "user", path = "/user/getUserDetail") die Service -ID, und Pfad ist das Pfadpräfix dieser Gruppe von Schnittstellen. In der folgenden Methodendefinition, genau wie das Einrichten der Spring MVC -Schnittstelle für diese Methode, ist die entsprechende URL/Benutzer/GetUserDetail/{id}. Dann, wenn Sie es verwenden, genau wie injizieren Sie einen allgemeinen Dienst und verwenden Sie ihn dann:
public class Einige EherServiceClass {@autowired private userCompoSiteService UserService; public void dosomething () {// ...... userDto resultation = userService.getUserById (userId); // andere Operation ...}}(3) Leistungsschalter:
// Leistungsschalter: Um das Problem zu lösen, das die Fallback -Methode aufruft, um die fehlgeschlagene Methode zu ersetzen, wenn ein Methodenaufruf fehlschlägt, wurde die Funktion der Fehlertoleranz/Blockierung von Kaskadenfehlern erreicht. // fallbackMethod gibt die Fallback -Methode @hystrixCommand (fallbackMethod = "dostudentfallback") @requestMapping (value = "dostudent", method = requestMethod.get) public String dostudent () {return "Ihr Name: Geheimnis, Ihr Alter: Heim: HEISE!";Verwenden Sie unter ihnen @EnableCircuitbreaker, um die Unterstützung des Leistungsschalters zu aktivieren. Federwolke bietet eine Konsole, um den Betrieb des Leistungsschalters zu überwachen, der über die Annotation von @EnableHyStrixdashboard aktiviert ist.
Das obige ist eine kurze Einführung in die Spring Cloud Netflix -Komponenten. Ich hoffe, es wird für das Lernen aller hilfreich sein, und ich hoffe, jeder wird Wulin.com mehr unterstützen.