In diesem Artikel geht es hauptsächlich um die Service -Tracking -Komponente Zipkin, und Spring Cloud Sleith integriert die Zipkin -Komponente.
1. Einführung
Fügen Sie den Klassenpfad einer Spring -Boot -Anwendung Sleuth hinzu (siehe unten für Maven- und Gradle -Beispiele), und Sie werden sehen, dass die Korrelationsdaten in Protokollen gesammelt werden, solange Sie Anforderungen protokollieren.
- Ausgezogen von der offiziellen Website
Die Hauptfunktion von Spring Cloud Sluth besteht darin, Tracking -Lösungen in verteilten Systemen bereitzustellen, und ist mit Zipkin kompatibel. Sie müssen nur entsprechende Abhängigkeiten in die POM -Datei einführen.
2. Serviceverfolgung und -analyse
In der Microservice -Architektur werden Dienste durch Dienste unterteilt. Eine Schnittstelle, die der externen Welt ausgesetzt ist, müssen möglicherweise viele Dienste zusammenarbeiten, um diese Schnittstellenfunktion auszufüllen. Wenn ein Dienst auf dem Link Probleme oder Netzwerkzeitüberschreitungen aufweist, wird der Schnittstellenaufruf fehlschlagen. Wenn das Unternehmen weiter expandiert, wird der Anruf zwischen Dienstleistungen immer komplizierter.
Da immer mehr Dienste verfügbar sind, wird die Analyse von Anrufketten immer komplizierter. Die Anrufbeziehung zwischen ihnen kann wie folgt sein:
III. Bedingungen
Span: Grundeinheit der Arbeit. Beispielsweise ist das Senden eines RPC in einer neu erstellten Zeitspanne dem Senden einer Antwortanforderung an den RPC entspricht. Die Spanne wird durch eine 64-Bit-ID eindeutig identifiziert, und die Spur wird durch eine weitere 64-Bit-ID dargestellt. Die Span verfügt über andere Dateninformationen wie Digest, Zeitstempelereignisse, wichtige Anmerkungen (Tags), Span -ID und Fortschritts -ID (normalerweise IP -Adresse).
Die Spannweite fängt ständig an und stoppt und zeichnet gleichzeitig die Zeitinformationen auf. Wenn Sie eine Spannweite erstellen, müssen Sie sie irgendwann in der Zukunft stoppen.
Trace: Eine Baumstruktur, die aus einer Reihe von Spannweiten besteht. Wenn Sie beispielsweise ein verteiltes Big -Data -Projekt ausführen, müssen Sie möglicherweise eine Spur erstellen.
Annotation: Wird verwendet, um die Existenz eines Ereignisses rechtzeitig aufzuzeichnen, und einige Kernanmerkungen werden verwendet, um den Beginn und das Ende einer Anfrage zu definieren.
Grafisch den Prozess der Verwendung von Zipkin -Annotation in einem System:
4. Bauprojekt
Nehmen wir nach Erläuterung des Grundwissens die eigentliche Arbeit. Der Fall in diesem Artikel besteht hauptsächlich aus drei Projekten: einer Server-Zipkin, die hauptsächlich die Funktionen von Zipkinserver verwendet, um Anrufdaten zu sammeln und sie anzuzeigen. ein Service-HI, der die HI-Schnittstelle nach außen enthüllt; eine Service-Miya, die die Miya-Schnittstelle nach außen enthüllt; Diese beiden Dienste können sich gegenseitig bezeichnet werden; Und erst nachdem sie angerufen wurden, sammelt Server-Zipkin Daten, weshalb es als Service-Tracking bezeichnet wird.
4.1 Server-Zipkin bauen
Erstellen Sie ein Spring-Boot-Projekt namens Server-Zipkin und führen Sie Abhängigkeiten in sein POM ein:
<Depelencies> <Deponcy> <gruppe> org.springFramework.Boot </GroupId> <artifactId> Spring-Boot-Starter </artifactId> </abhängig> <Deichung> <GroupID> org.springFramework.Boot </Groupid> <artifactid> Spring-boot-starter-web </artifactId> </artifactId> </artifactid> </artifactid> </artifactid> <gruppeId> org.springFramework.boot </GroupId> <artifactId> Spring-Boot-Starter-Test </artifactId> <Schope> test </scope> </abhängig> <abhängigkeit> <GroupID> iO.zipkin.java </Groupid> <artifactid> zipkin-server </artifactid> </artifactid> zipkin-server </artifactid> </gruppen> <artifactid> zipkin-server </artifactid> </artifactid> zipkin-server </artifactid> </gruppen> <artifactid> zipkin-server </artifactid> </artifactid> </artifactid> </cresenti> </artifactid> </teufl. <groupId>io.zipkin.java</groupId> <artifactId>zipkin-autoconfigure-ui</artifactId> </dependency> </dependency> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version> camden.sr6 </Version> <Typ> pom </type> <scope> import </scope> </abhängig> </abhängig> </abhängigManagement>
Fügen Sie in seiner Programmeintragsklasse die Annotation @EnableZipkinServer hinzu, um die Funktion von Zipkinserver zu aktivieren:
@SpringBootApplication@enableZipKinServerPublic Class ServerzipkinApplication {public static void main (String [] args) {SpringApplication.run (serverZipkinApplication.class, args); }}In der Konfigurationsdatei application.yml gibt den Serviceport als:
server.port = 9411
4.2 Service-HI erstellen
In seiner POM-Einführung ist die anfängliche Abhängigkeit Spring-Cloud-Starter-Zipkin, der Code lautet wie folgt:
<Depelencies> <De vorstellen> <gruppe> org.springFramework.boot </Groupid> <artifactId> Spring-Boot-Starter-Web </artifactid> </abhängig> <!-Compile ('org.springFrameWork.cloud:spring-Cloud-Starter-Sipkkey')-> <DeapingFramework.Cloud: <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-zipkin</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependency> </dependency> </dependency> <dependencyManagement> <dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>Dalston.RC1</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement>Geben Sie in seiner Konfigurationsdatei application.yml die Adresse des Zipkin-Servers an, und der Header wird angegeben, indem "Spring.zipkin.base-URL" konfiguriert wird:
server.port = 8988Spring.zipkin.base-url = http: // localhost: 9411Spring.Application.name = service-hi
Es ist in Ordnung, die Abhängigkeit von Spring-Cloud-Starter-Zipkin-Abhängigkeiten vorzustellen und Spring.zipkin.base-URL zu setzen.
Externe Expositionsschnittstelle:
@SpringBootApplication@rastControllerPublic Class ServiceHiApplication {public static void main (String [] args) {Springapplication.run (ServiceHiApplication.Class, Args); } private statische endgültige Logger log = logger.getLogger (serviceHiApplication.class.getName ()); @Autowired Private rastTemplate rastTemplate; @Bean public rastTemplate getRestTemplate () {return New RestTemplate (); } @RequestMapping ("/hi") public String callhome () {log.log (Level.info, "Calling Trace Service-HI"); retRestTemplate.getForObject ("http: // localhost: 8989/miya", String.class); } @RequestMapping ("//info") public string info () {log.log (Level.info, "TRACE SERVICE-HI"); Rückkehr "Ich bin Service-Hi"; } @Bean public immer immerAmpler defaultSampler () {neuer AlSampler () zurückgeben; }}4.3 Service-Miya erstellen
Der Erstellungsprozess verletzt Service-HI, führt die gleichen Abhängigkeiten ein und konfiguriert Spring.zipkin.base-URL.
Externe Expositionsschnittstelle:
@SpringbootApplication@rastControllerPublic Class ServicemiyaApplication {public static void main (String [] args) {Springapplication.run (servicemiyaapplication.class, args); } private statische endgültige Logger log = logger.getLogger (servicemiyaApplication.class.getName ()); @RequestMapping ("/hi") public String home () {log.log (Level.info, "Hi wird genannt"); kehre "Hallo, ich bin miya!"; } @RequestMapping ("/miya") public String info () {log.log (Level.info, "Info wird genannt"); retRestTemplate zurückgeben.getForObject ("http: // localhost: 8988/info", string.class); } @Autowired private rastTemplate rastTemplate; @Bean public rastTemplate getRestTemplate () {return New RestTemplate (); }}4.4 Starten Sie das Projekt, zeigen und verfolgen Sie das Projekt
Starten Sie die oben genannten drei Projekte wiederum und öffnen Sie den Browser für den Zugriff: http: // localhost: 9411/, und die folgende Schnittstelle wird angezeigt:
Besuchen
Öffnen Sie dann die Schnittstelle von http: // localhost: 9411/und klicken Sie auf Abhängigkeiten, um die Abhängigkeiten des Dienstes zu entdecken:
Klicken Sie auf Spuren suchen, um die Daten der spezifischen Dienste anzuzeigen, die sich gegenseitig aufrufen:
Laden Sie den Quellcode dieses Artikels herunter: https://github.com/forezp/springcloudlearning/tree/master/chapter9
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.