入門
システムの分解能、リンク呼び出し要求の先端が長くなると、それは別のバックエンドサービスを複数呼び出します。要求は、位置決めの問題なので、そこに分散リンクトラッキングを容易にするために、または使用不能を遅くする場合。
要求TRACEIDとspanId、つ以上のTRACEID spanIdより含まリンクにおける分散リンクトラッキング増加
ようなフロントエンドオーダーシステムコール要求として、再度呼び出して注文システムインベントリシステム。
システムは、以下の順序(これはデフォルトの形式ではないとして、次の形式は、デフォルトのフォーマットは後述する、ように構成されてもよい)をログに記録します
[INFO][traceId=aaa][SpanId=123]
次のようにインベントリシステムログがあります
[INFO][traceId=aaa][SpanId=456]
リンク要求、異なるシステムで同じ値、複数spanIdをTRACEID、値が異なるシステムで異なっています。
分散リンクトラッキングは、Zipkinの簡潔かつ統合ここでは、達成するためにたくさん持っています
githubのアドレスします。https://github.com/erlieStar/spring-cloud-learning
Zipkinとの統合
zipkinサービスを作成します
春のブート2.xバージョンの後、公式のコンパイルにはお勧めしませんが、私たちの使用のためにコンパイルのjarパッケージを提供するために、開始を直接ダウンロードすることができます
curl -sSL https://zipkin.io/quickstart.sh | bash -s
java -jar zipkin.jar
HTTPで起動した後:// localhostを:9411 / zipkin
消費者サービスの作成
サンプルプロジェクト:消費者zipkin(春・クラウド探偵)
1.次のようにプロジェクトの設定があります
pom.xml
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-zipkin</artifactId>
</dependency>
application.yaml
server:
port: 8080
spring:
zipkin:
base-url: http://localhost:9411
application:
name: consumer-zipkin
sleuth:
sampler:
probability: 1.0 # 采样比例,1.0表示全部采集
2.次のようにスタートクラスがあります
@Slf4j
@RestController
@SpringBootApplication
public class ConsumerZipkin {
public static void main(String[] args) {
SpringApplication.run(ConsumerZipkin.class);
}
@Autowired
private RestTemplate restTemplate;
@Bean
public RestTemplate restTemplate() {
return new RestTemplate();
}
@GetMapping("hello")
public String hello() {
log.info("start invoke");
return restTemplate.getForObject("http://localhost:8090/hello", String.class);
}
}
プロデューサーサービスの作成
サンプルプロジェクト:プロデューサzipkin(春・クラウド探偵)
1.次のようにプロジェクトの設定があります
pom.xml
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-zipkin</artifactId>
</dependency>
application.yaml
server:
port: 8090
spring:
zipkin:
base-url: http://localhost:9411
application:
name: producer-zipkin
sleuth:
sampler:
probability: 1.0 # 采样比例,1.0表示全部采集
2.次のようにスタートクラスがあります
@Slf4j
@RestController
@SpringBootApplication
public class ProducerZipkin {
public static void main(String[] args) {
SpringApplication.run(ProducerZipkin.class);
}
@RequestMapping("hello")
public String hello() {
log.info("new request");
return "hi zipkin";
}
}
呼び出し始まりました
访问にhttp:// localhost:8080 /ハロー
次のように呼び出しの間の関係を分析するzipkin
次のように消費者zikpin印刷ログがあります
INFO [consumer-zipkin,53836e18c9552b3f,53836e18c9552b3f,true] 6664 --- [nio-8080-exec-1] com.javashitang.ConsumerZipkin : start invoke
プロデューサー-zipkinとして印刷ログ
INFO [producer-zipkin,53836e18c9552b3f,6eefb28892009df6,true] 20832 --- [nio-8090-exec-1] com.javashitang.ProducerZipkin : new request
ログ形式を分析
[consumer-zipkin,53836e18c9552b3f,53836e18c9552b3f,true]
最初の値:アプリケーション名
第二値:TRACEID
第3の値:spanId
第4の値:表示zipkinたい収集出力するかどうか、情報サービスと
TRACEIDを入力し、次のコールのリンクを分析