[TOC]
*****
# 1. 微服务正常场景下的架构
![](https://img.kancloud.cn/04/74/0474dee6650912a3de062b633a7f1760_638x400.png)
```
若微服务出现问题,如何快速定位和解决呢?如,下面俩个问题
```
![](https://img.kancloud.cn/57/3c/573cd2d96f37c845037c0c170ff2d9ae_778x141.png)
```
解决上述问题方案 -- 调用链监控 原理如下:
如果调用正常,trace表中会出现4条数据,
若只出现3条数据,表示用户中心返回响应了,但内容中心没有收到,可能是网络有问题
若只出现2条数据,表示用户中心没有返回响应, 可能是用户中心的API报异常了
若只出现1条数据,表示请求用户中心发送成功,但用户中心没有收到,可能是用户中心挂掉了或网络问题
```
![](https://img.kancloud.cn/73/8a/738a013b6c8a77be7711b9f0fb80ade9_672x349.png)
# 2. 常用调用链工具 - Sleuth
```
2-1. 什么事Sleuth?
Sleuth是一个Spring Cloud的分布式跟踪解决方案
```
```
2-2. Sleuth术语
```
![](https://img.kancloud.cn/e8/f7/e8f7dd524ec416278ca08c12a4e3a2a4_788x181.png)![](https://img.kancloud.cn/f6/01/f601ea7528a834fc5de49e5162b49bef_787x307.png)
```
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
```
![](https://img.kancloud.cn/2b/f6/2bf6523d2291a1a3146bdda618a93c21_947x601.png)
```
3-3. 解决Spring Cloud Alibaba/Spring Cloud整合Zipkin之后的报错问题
参考: http://www.imooc.com/article/291578
```
```
3-4. 调用链的依赖关系图
```
![](https://img.kancloud.cn/68/33/6833027a69eac9e6138e2a641e204feb_865x270.png)
```
3-5. zipkin的环境变量
```
![](https://img.kancloud.cn/2f/6c/2f6ca7a0712e3604cc850db37d719ff4_686x405.png)
```
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
```
![](https://img.kancloud.cn/34/bb/34bb563222c268e6560de07bf4ed29d8_896x32.png)
![](https://img.kancloud.cn/53/46/5346ce6befb53d3f11b6f1bc46dc78fc_782x442.png)![](https://img.kancloud.cn/77/94/7794a404e4efc62a1931aa646a397016_817x160.png)