1. Einführung
Im vorherigen Artikel haben wir die Überwachung einer einzelnen Serviceinstanz implementiert. In den tatsächlichen Anwendungen ist natürlich die Überwachungsdaten einer einzelnen Instanz nicht sehr wertvoll. Was wir mehr brauchen, sind die Überwachungsinformationen eines Cluster -Systems. Zu diesem Zeitpunkt müssen wir Turbine vorstellen. Turbine kann Überwachungsinformationen sammeln und die aggregierten Informationen an das Hystrix -Dashboard für eine zentralisierte Anzeige und Überwachung bereitstellen.
2. Erstellen Sie Überwachungsbüros und -Dienste
2.1 Gesamtstruktur und Vorbereitung
Die technische Implementierung dieses Artikels basiert auf dem Projekt des vorherigen Artikels. Durch die Einführung von Turbinen aggregiert es die Überwachungsinformationen des Service-Ribbon-Dienstes und gibt sie für die Anzeige an das Hystrix-Dashboard aus. Da wir ein Dashboard für mehrere Dienste benötigen, erstellen wir einen Service-Ribbon-Cluster und müssen ein neues Service-Turbinenprojekt erstellen, um Informationen zu aggregieren und anzuzeigen. Die endgültige Gesamtstruktur ist wie folgt:
2.2 Erstellen Sie eine Service-Turbine
Erstellen Sie ein neues Spring Boot-Projekt mit dem Namen Service-Turbine und importieren Sie die erforderlichen Abhängigkeiten in pom.xml:
<? xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.dan</groupId> <artifactId>service-turbine</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>jar</packaging> <name>service-turbine</name> <description>Demo project for Spring Boot</description> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.5.9.RELEASE</version> <relativePath/> <!-SOKOUP PORTER aus Repository-> </übergeordnet> <Properties> <projekt.build.SourceCoding> UTF-8 </project.build.SourceCoding> <project.reporting.outputcoding> utf-8 </Project.Reporting.outputencoding> <java.version> 1.8 </projecting.versioning> <java.version> 1.8 </projavaversion> <java.version> 1.8; <spring-cloud.version> edgware.sr1 </spring-cloud.version> </properties> <endellungen> <depeopentcy> <GroupId> org.springFramework <artifactId> Spring-Cloud-Netflix-Turbine </artifactId> </abhängig> <depeopcy> <gruppe> org.springFramework.boot </Groupid> <artifactId> Spring-Boot-Starter-Actuator </artifactId> </abhängig> <Epent> <grupping> org.SPRINGEFRAME. <artifactId> Spring-Boot-Starter-Test </artifactId> <Schops> Test </scope> </abhängig> </abhängigkeiten> <DeponcyManagement> <Abhängigkeiten> <Depopentcy> <gruppe-org. <Typ> pom </type> <scope> import </scope> </abhängig> </abhängig> </abhängigManagement> <builds> <plogins> <plugin> <gruppe> org.springFramework
Fügen Sie die Annotation @Enableturbine zur Projektstart -Klasse hinzu und aktivieren Sie Turbine. Die Annotation enthält bereits die @EnablediscoveryClient Annotation, dh der Registrierungsdienst wurde aktiviert:
@SpringbootApplication @enableturbine public class serviceturbineApplication {public static void main (String [] args) {Springapplication.run (serviceturbineApplication.class, args); }} Fügen Sie Eureka und Turbinenbezogene Konfigurationen in application.properties hinzu, wie folgt:
Spring.Application.Name = Service-Turbine Server.port = 8766 Security.basic.Enabled = False Eureka.client.serviceurl.Defaultzone = http: // localhost: 8761/eurka turbine.aggregator turbine.cluster-name-expression = "default" turbine.combine-host-port = true
In der obigen Konfiguration konfiguriert die Turbine.App-Config-Parameter die Service-ID-Liste in Eureka, um anzugeben, welche Dienste überwacht werden. Der Parameter Turbine.cluster-name-expression gibt den Clusternamen als Standard an. Wenn es eine große Anzahl von Diensten gibt, können mehrere Turbinendienste begonnen werden, um unterschiedliche Aggregationscluster aufzubauen. Dieser Parameter kann verwendet werden, um diese verschiedenen Aggregationscluster zu unterscheiden. Gleichzeitig kann der Parameterwert verwendet werden, um verschiedene Aggregationscluster im Hytrix -Dashboard zu lokalisieren. Geben Sie einfach den Cluster -Parameter in der URL des Hytrix -Streams an. Der Parameter Turbine.combine-host-Port ist auf True eingestellt, sodass Dienste auf demselben Host durch die Kombination aus Hostname und Portnummer unterschieden werden können. Standardmäßig werden verschiedene Dienste durch den Host unterschieden, wodurch die verschiedenen Dienste auf dem lokalen Maschinenaggregation zu einem Dienst für Statistiken während des Debuggens führen.
3. Cluster -Überwachung
Starten Sie das Eureka-Server-Projekt mit der Portnummer 8761;
Starten Sie das Eureka-Client-Projekt mit den Portnummern 8762 und 8763;
Starten Sie das Service-Ribbon-Projekt mit den Portnummern 8764 und 8765;
Starten Sie das Service-Turbinenprojekt mit der Portnummer 8766.
Besuchen Sie http: // localhost: 8766/turbine.stream zu sehen:
Besuchen Sie http: // localhost: 8765/hystrix, geben Sie den Überwachungsstrom http: // localhost: 8766/turbine.stream ein.
Wie Sie in der Abbildung sehen können, zeigt die Überwachungsseite, obwohl wir zwei Service-Ribbons gestartet haben, nur ein Überwachungsdiagramm. Wir können jedoch feststellen, dass sich das Attribut des Hosts im Clusterberichterstattungsbereich in der Abbildung von der Versuch der eigenständigen Überwachung unterscheidet. Da diese beiden Fälle jedoch der gleiche Service sind, und für den Cluster sind wir besorgt über die hohe Verfügbarkeit des Service-Clusters, sodass Turbine dieselbe Service als Ganzes betrachtet und in ein Überwachungsdiagramm zusammenfasst.
Wenn Sie wirklich zwei Überwachungsdiagramme sehen möchten, können Sie die Feder.Application.Name einer der Instanzen von Service-Ribbon auf einen anderen Namen festlegen, damit nach dem Laufen zwei verschiedene Überwachungsdiagramme erscheinen.
4.. Kombiniert mit Message Broker
Wenn Spring Cloud Turbine zusammenfasst, verkauft sie auch eine Sammelimplementierung basierend auf Message Broker. Daher können wir alle Überwachungsinformationen ausgeben, die in den Message Broker gesammelt werden müssen, und dann wird der Turbinendienst diese Überwachungsinformationen asynchron vom Message Broker erhalten und schließlich aggregiert und an das Hystrix -Dashboard ausgeben. Durch die Einführung eines Message Broker kann die von unserem Turbinen- und Hytrix -Dashboard implementierte Überwachungsarchitektur in die in der folgende Abbildung gezeigte Struktur geändert werden:
Erstellen Sie zunächst ein neues Spring-Boot-Projekt mit dem Namen Service-Turbine-AMQP und führen Sie die Abhängigkeiten mit den Spring-Cloud-Starter-Turbine-AMQP und Spring-Boot-Starter-Aktuator ein. Wenn Sie sehen, dass dies nur diese beiden Abhängigkeiten einführt, weil Spring-Cloud-Starter-Turbine-AMQP tatsächlich die Turbinen-Stream-Stream-Starter-Starter-Starter-Starter-Starter-Stream-Rabbit von Feder einbringt.
<? xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.dan</groupId> <artifactId>service-turbine-amqp</artifactId> <version> 0.0.1-Snapshot </Version> <Packages> jar </packaging> <name> service-turbine-amqp </name> <beschreibung> Demo-Projekt für Spring Boot </Beschreibung> <in <Sturbine-AMQP </name> <beschreibung> Demo-Projekt für Spring Boot </cresent> <gruppe org. <RelativePath/> <!-SOOKUP PORTER aus Repository-> </übergeordnet> <Properties> <project.build.sourceEncoding> UTF-8 </project.build.SourceCoding> <projekts.Reporting.Outputcode> utf-8 </project.Reporting.OUTPUTNECODING> <jAVA.VERSION> <VERSION.VRO. <spring-cloud.version>Edgware.SR1</spring-cloud.version> </properties> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-turbine-amqp</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactid> Spring-Boot-Starter-Actuator </artifactId> <Scope> Test </scope> </abhängig> </abhängig> </abhängig> <DependentyManagement> <Depopenty> <Depopentcy> <gruppe org. <version> $ {Spring-Cloud.version} </Version> <Typ> POM </type> <Scope> import </scope> </abhängig> </abhängig> </abhängigManagement> <build> <PLUGINS> <PLUGIN> <GROPPELID> org.springFramework </plugins> </build> </project> Verwenden Sie die Annotation @EnableturbInestream in der Hauptklasse, um die Konfiguration des Turbinenstroms zu aktivieren:
@SpringBootApplication @enableturbInestream @enablediscoveryClient Public Class ServiceturbineAMQPAPPlication {public static void main (String [] args) {SpringApplication.run (serviceturbineamqpapplication.class, args, args); }}Konfigurieren Sie dann die Datei application.Properties:
Spring.Application.Name = Service-Turbine-AMQP Server.port = 8766 eureka.client.serviceurl.DefaultZone = http: // localhost: 8761/eureka
Die Turbinenkonfiguration wurde abgeschlossen. Im Folgenden müssen einige Änderungen am Service-Ribbon vorgenommen werden, damit die Überwachungsinformationen an Rabbitmq ausgegeben werden können. Diese Änderung ist auch sehr einfach. Fügen Sie einfach die Abhängigkeit von Spring-Cloud-NETflix-Hystrix-AMQP in pom.xml hinzu, wie folgt:
<Depopenty> <gruppe> org.springframework.cloud </Groupid> <artifactid> Spring-Cloud-Netflix-Hystrix-Amqp </artifactid> </abhängig>
Starten Sie nach Abschluss der oben genannten Konfiguration alle erforderlichen Projekte, besuchen Sie http: // localhost: 8765/hystrix, geben Sie den Überwachungsstrom http: // localhost: 8766/turbine.stream ein und wir können das gleiche Ergebnis wie zuvor sehen, außer dass die Überwachungsinformationssammlung Asynchron implementiert wird, die Asynchron durch den Nachrichtenbrker implementiert wird.
Quellcode herunterladen: https://github.com/lingd3/springcloudlearning/tree/master/chapter8
Das obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, es wird für das Lernen aller hilfreich sein und ich hoffe, jeder wird Wulin.com mehr unterstützen.