SpringCloudマイクロサービスXiaobaiは(Hoxton.SR8)(8)Sleuth | Service LinkTrackingも利用できます

開始して直接コピーするだけで、マイクロサービスを構築できます(Hoxton.SR8)2020.8.28がリリースされ、SpringCloudによって構築された記事が整理されています。乾物をお見逃しなく

概要

Spring Cloud Sleuthは、分散システム内のサービス間の呼び出しを追跡するためのツールであり、要求の呼び出しプロセスを視覚的に示すことができます。私たちのシステムがますます大きくなるにつれて、さまざまなサービス間の呼び出し関係はますます複雑になります。クライアントがリクエストを開始すると、リクエストが複数のサービスを通過した後、最終的に結果が返されます。渡された各サービスが遅延またはエラーになり、リクエストが失敗する場合があります。現時点では、要求されたサービスリンクを分類して問題を解決するために、リンク追跡ツールを要求する必要があります。

Sleuthには、始めるために必要なものがすべて揃っています。これには、追跡データを報告する場所(スパン)、保持するトラックの数(追跡)、リモートフィールド(バッグ)が送信されるかどうか、追跡するライブラリが含まれます。Sleuthは、分散追跡システムZipkinへのこれらの要求の時間を記録するようにこれらのアプリケーションを構成しました。1つのサービスの時間や他のサービスの待機時間など、UIの視覚化の遅延を追跡します。

1.リンク追跡サポートを追加します

1.1サービスへの参加:ユーザーサービス、偽サービス、リボンサービス

上記の3つのサービスに依存関係を追加します

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

1.2 yml addzipkin-サーバーアクセスアドレス

spring:
  application:
    name: feign-service
  zipkin:
    base-url: http://localhost:9411
    sender:
      type: web
    #设置Sleuth的抽样收集概率,1=100%,因为我们目前是测试环境所以用1
    sleuth:
      sampler:
        probability: 1

2.リンク追跡サービスセンター(zipkin-server)を構築します

zipkinドキュメント

2.1構築方法

  1. docker
  2. java -jar
  3. githubソースビルド
  4. 自分でspringbootをビルドするための依存関係を追加します(公式には推奨されません)

ビルドするjavaメソッドを選択しました。dockerbuildメソッドも非常に高速ですが、Windowsコンピューターにdockerがインストールされていないため、最初にjava-jarメソッドを使用して関数を表示しましょう。現在
ダウンロードしている最新バージョンは2.21.7ダウンロードリンクです:https:  //repo1.maven.org/maven2/io/zipkin/zipkin-server/2.21.7/zipkin-server-2.21.7-exec.jar
以前最新バージョンを入手するには、公式にアクセスしてください

2.2ジプキンを開始する

2.2.1cmdを開いて起動コマンドを実行します

java -jar zipkin-server-2.21.7-exec.jar

 2.2.2正常な起動

ブラウザにアクセスしますhttp//127.0.0.19411

3.サービステストコール

feign-serviceまたはribbon-serviceを介してuser-serviceを呼び出し、zipkinのサービスページを更新します

 

4.zipkinデータの永続性

リンク情報を保存したい場合、Zipkinの再起動後にリンクデータが消えることはありません。これは、後のクエリや場所の問題に便利です。

4.1mysql

数千万のデータなど、データ量が非常に多い場合、クエリ効率の問題が発生します。政府による推奨ではありません。移行に使用できます。Elasticsearchは後で使用できます。

4.1.1sqlファイルのダウンロード

sqlファイル:https//github.com/openzipkin/zipkin/blob/master/zipkin-storage/mysql-v1/src/main/resources/mysql.sql

4.1.2新しいデータベース

4.1.3sqlファイルを実行する

CREATE TABLE IF NOT EXISTS zipkin_spans (
  `trace_id_high` BIGINT NOT NULL DEFAULT 0 COMMENT 'If non zero, this means the trace uses 128 bit traceIds instead of 64 bit',
  `trace_id` BIGINT NOT NULL,
  `id` BIGINT NOT NULL,
  `name` VARCHAR(255) NOT NULL,
  `remote_service_name` VARCHAR(255),
  `parent_id` BIGINT,
  `debug` BIT(1),
  `start_ts` BIGINT COMMENT 'Span.timestamp(): epoch micros used for endTs query and to implement TTL',
  `duration` BIGINT COMMENT 'Span.duration(): micros used for minDuration and maxDuration query',
  PRIMARY KEY (`trace_id_high`, `trace_id`, `id`)
) ENGINE=InnoDB ROW_FORMAT=COMPRESSED CHARACTER SET=utf8 COLLATE utf8_general_ci;

ALTER TABLE zipkin_spans ADD INDEX(`trace_id_high`, `trace_id`) COMMENT 'for getTracesByIds';
ALTER TABLE zipkin_spans ADD INDEX(`name`) COMMENT 'for getTraces and getSpanNames';
ALTER TABLE zipkin_spans ADD INDEX(`remote_service_name`) COMMENT 'for getTraces and getRemoteServiceNames';
ALTER TABLE zipkin_spans ADD INDEX(`start_ts`) COMMENT 'for getTraces ordering and range';

CREATE TABLE IF NOT EXISTS zipkin_annotations (
  `trace_id_high` BIGINT NOT NULL DEFAULT 0 COMMENT 'If non zero, this means the trace uses 128 bit traceIds instead of 64 bit',
  `trace_id` BIGINT NOT NULL COMMENT 'coincides with zipkin_spans.trace_id',
  `span_id` BIGINT NOT NULL COMMENT 'coincides with zipkin_spans.id',
  `a_key` VARCHAR(255) NOT NULL COMMENT 'BinaryAnnotation.key or Annotation.value if type == -1',
  `a_value` BLOB COMMENT 'BinaryAnnotation.value(), which must be smaller than 64KB',
  `a_type` INT NOT NULL COMMENT 'BinaryAnnotation.type() or -1 if Annotation',
  `a_timestamp` BIGINT COMMENT 'Used to implement TTL; Annotation.timestamp or zipkin_spans.timestamp',
  `endpoint_ipv4` INT COMMENT 'Null when Binary/Annotation.endpoint is null',
  `endpoint_ipv6` BINARY(16) COMMENT 'Null when Binary/Annotation.endpoint is null, or no IPv6 address',
  `endpoint_port` SMALLINT COMMENT 'Null when Binary/Annotation.endpoint is null',
  `endpoint_service_name` VARCHAR(255) COMMENT 'Null when Binary/Annotation.endpoint is null'
) ENGINE=InnoDB ROW_FORMAT=COMPRESSED CHARACTER SET=utf8 COLLATE utf8_general_ci;

ALTER TABLE zipkin_annotations ADD UNIQUE KEY(`trace_id_high`, `trace_id`, `span_id`, `a_key`, `a_timestamp`) COMMENT 'Ignore insert on duplicate';
ALTER TABLE zipkin_annotations ADD INDEX(`trace_id_high`, `trace_id`, `span_id`) COMMENT 'for joining with zipkin_spans';
ALTER TABLE zipkin_annotations ADD INDEX(`trace_id_high`, `trace_id`) COMMENT 'for getTraces/ByIds';
ALTER TABLE zipkin_annotations ADD INDEX(`endpoint_service_name`) COMMENT 'for getTraces and getServiceNames';
ALTER TABLE zipkin_annotations ADD INDEX(`a_type`) COMMENT 'for getTraces and autocomplete values';
ALTER TABLE zipkin_annotations ADD INDEX(`a_key`) COMMENT 'for getTraces and autocomplete values';
ALTER TABLE zipkin_annotations ADD INDEX(`trace_id`, `span_id`, `a_key`) COMMENT 'for dependencies job';

CREATE TABLE IF NOT EXISTS zipkin_dependencies (
  `day` DATE NOT NULL,
  `parent` VARCHAR(255) NOT NULL,
  `child` VARCHAR(255) NOT NULL,
  `call_count` BIGINT,
  `error_count` BIGINT,
  PRIMARY KEY (`day`, `parent`, `child`)
) ENGINE=InnoDB ROW_FORMAT=COMPRESSED CHARACTER SET=utf8 COLLATE utf8_general_ci;

4.1.4Zipkinを再起動します

java -jar zipkin-server-2.21.7-exec.jar  --STORAGE_TYPE=mysql --MYSQL_HOST=localhost --MYSQL_TCP_PORT=3306 --MYSQL_DB=zipkin --MYSQL_USER=root --MYSQL_PASS=

4.1.5インターフェイスコールテストを再度実行します

  

4.2 Elasticsearch

4.2.1ダウンロード

バージョンリンク:https//www.elastic.co/cn/downloads/past-releases#elasticsearch

ダウンロードリンク:https//www.elastic.co/cn/downloads/past-releases/elasticsearch-7-9-2

ダウンロード後、D:\ elasticsearch-7.9.2 \ binを解凍し
、binディレクトリ入り、赤い丸でマークされたプログラムをダブルクリックします。

4.2.2elasticsearchを開始します

.\elasticsearch.bat

テスト開始:http:// localhost:9200 /?pretty

4.2.3管理ページ

ここではインストールは行われず、エルクのブログ投稿は後で追加されます

4.2.4zipkinの再起動

java -jar zipkin-server-2.21.7-exec.jar --STORAGE_TYPE=elasticsearch --ES_HOSTS=localhost:9200

5.その他の構成

https://github.com/openzipkin/zipkin/tree/master/zipkin-server#elasticsearch-storage

 

おすすめ

転載: blog.csdn.net/itjavaee/article/details/109214961