ThinkChat🤖让你学习和工作更高效,注册即送10W Token,即刻开启你的AI之旅 广告
演示案例:由 cloud-comsumer-order80 消费端调用 cloud-provider-payment8001 服务端,然后由 Sleuth + Zipkin 监控其调用的情况。 <br/> 步骤如下: [TOC] # 1. 启动Zipkin :-: ![](https://img.kancloud.cn/fa/d6/fad63b3dd038377e7b50ff7cf3ef3af1_1053x508.jpg) 官网原图:Zipkin完整的调用链路 ![](https://img.kancloud.cn/48/a2/48a28ce6268c685f39977ff5ac777b90_1166x290.jpg) 简化官网图:Zipkin完整的调用链路 ![](https://img.kancloud.cn/d5/a1/d5a120633a2ebf2f1bd9eeee0f78670b_1263x194.jpg) 整个链路的依赖关系 如上面的图所示:表示一请求链路,一条链路通过Trace ld唯一标识,Span标识发起的请求信息,各 span 通过 parent id 关联起来。 ``` Trace:类似于树结构的Span集合,表示一条调用链路,存在唯一标识 span:表示调用链路来源,通俗的理解span就是一次请求信息 ``` <br/> SpringCloud从F版起已不需要自己构建Zipkin Server了,只需调用jar包即可,当前使用 SpringCloud版本为H版本(F -> H)。 **** zipkin下载地址 github:https://github.com/openzipkin/zipkin <br/> **1. 运行 zipin server jar 包** 如果没有现成的 zipkin-server-2.23.3-*exec.jar 包,则需要自己编译,按照如下命令编译。 ```shell $ git clone https://github.com/openzipkin/zipkin $ cd zipkin $ mvn -DskipTests --also-make -pl zipkin-server clean install # 运行 zipkin-server jar包 $ java -jar ./zipkin-server/target/zipkin-server-*exec.jar ``` **2. 访问Zipkin Server http://localhost:9411/zipkin/** ![](https://img.kancloud.cn/0e/ca/0eca1ca201d185afc143314b4f6f99ab_1763x379.jpg) <br/> # 2. cloud-provider-payment8001 服务端配置 **1. 在 payment8001 模块的`pom.xml`添加 zipkin 依赖** ```xml <dependencies> <!--包含了Sleuth--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-zipkin</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> ... </dependencies> ``` **2. 在 payment8001 模块的`application.yml`中添加 Zipkin 相关配置** ```yml spring: application: name: cloud-payment-service zipkin: base-url: http://localhost:9411 #Zipkin的访问地址 sleuth: sampler: #采样率值介于0到1之间,1则表示全部采集,一般取0.5即可 probability: 1 ``` **3. 在 controller 添加一个用于测试的方法** ```java @RestController @RequestMapping("/payment") public class PaymentController { @GetMapping("/zipkin") public String paymentZipkin() { return "hi,i`am paymentzipkin server fall back.welcome to atguigu"; } } ``` <br/> # 3. cloud-comsumer-order80 消费端配置 **1. 在 order80 消费端的`pom.xml`中添加 zipkin 依赖** ```xml <dependencies> <!--包含了Sleuth--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-zipkin</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> ... </dependencies> ``` **2. 在 order80 消费端的`application.yml`中添加 zipkin 相关配置** ```yml spring: application: name: cloud-comsumer-order zipkin: base-url: http://localhost:9411 #Zipkin的访问地址 sleuth: sampler: #采样率值介于0到1之间,1则表示全部采集,一般取0.5即可 probability: 1 ``` **3. 在 order80 消费端的controller层添加一个测试方法** ```java @RestController @RequestMapping("/order") public class OrderController { @Resource private RestTemplate restTemplate; @GetMapping("/zipkin") public String paymentZipkin() { String result = restTemplate.getForObject("http://localhost:8001/payment/zipkin", String.class); return result; } } ``` <br/> # 4. 测试 (1)已经运行了 zipkin server jar 包。 (2)启动 payment8001 服务端,再启动 order80 消费端。 访问 order80 消费端 http://localhost/consumer/zipkin 并多刷新几次页面。 (3)访问Zipkin http://localhost:9411/zipkin/ ,查看Zipkin上监控的信息。 :-: ![](https://img.kancloud.cn/a2/9a/a29a6d5df016ec09d38c30970250b6ec_780x343.jpg) 图1:可以看到两个服务之间的依赖关系 ![](https://img.kancloud.cn/5e/cc/5ecc970bb099ff0b6afc4a9d2806062d_780x429.jpg) 图2:可以查看两个服务就的请求情况