[TOC]
*****
# 1. 微服務正常場景下的架構

```
若微服務出現問題,如何快速定位和解決呢?如,下面倆個問題
```

```
解決上述問題方案 -- 調用鏈監控 原理如下:
如果調用正常,trace表中會出現4條數據,
若只出現3條數據,表示用戶中心返回響應了,但內容中心沒有收到,可能是網絡有問題
若只出現2條數據,表示用戶中心沒有返回響應, 可能是用戶中心的API報異常了
若只出現1條數據,表示請求用戶中心發送成功,但用戶中心沒有收到,可能是用戶中心掛掉了或網絡問題
```

# 2. 常用調用鏈工具 - Sleuth
```
2-1. 什么事Sleuth?
Sleuth是一個Spring Cloud的分布式跟蹤解決方案
```
```
2-2. Sleuth術語
```

```
2-3. 整合Sleuth
加依賴: compile("org.springframework.cloud:spring-cloud-starter-sleuth")
```
# 3. 調用鏈的可視化及分析工具 -- Zipkin
```
3-1. 什么事Zipkin?
Zipkin是Twitter開源的分布式跟蹤系統,主要用來收集系統的時序數據,從而追蹤系統的調用問題;
```
```
3-2. Zipkin搭建與整合
搭建參考: http://www.imooc.com/article/291572
訪問地址:http://localhost:9411/
整合(若加上zipkin依賴,則sleuth依賴去掉,因為zipkin包含了sleuth):
第一步: 加依賴 compile("org.springframework.cloud:spring-cloud-starter-zipkin")
第二步:寫配置
spring:
zipkin:
base-url: http://localhost:9411/
sleuth:
sampler:
# 抽樣率,默認0.1 (10%)
probability: 1.0
```

```
3-3. 解決Spring Cloud Alibaba/Spring Cloud整合Zipkin之后的報錯問題
參考: http://www.imooc.com/article/291578
```
```
3-4. 調用鏈的依賴關系圖
```

```
3-5. zipkin的環境變量
```

```
3-5. Zipkin數據持久化(Elasticsearch 5/6/7)
下載Elasticsearch : https://www.elastic.co/cn/downloads/past-releases#elasticsearch
注意:es7.x開始使用的是jdk11
訪問: http://localhost:9200
zipkin鏈接es: STORAGE_TYPE=elasticsearch ES_HOSTS=localhost:9200 java -jar zipkin-server-2.12.9-exec.jar
```
```
使用Elasticsearch 作為Zipkin數據持久化時,依賴關系圖無法展示,需要借助Zipkin-dependencies
使用說明: https://github.com/openzipkin/zipkin-dependencies
```

