[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
```

