一、什么是Zipkin?
Zipkin是一个分布式跟踪系统,链路追踪是分布式系统下的一个概念,它的目的就是要解决上面所提出的问题,也就是将一次分布式请求还原成调用链路,将一次分布式请求的调用情况集中展示,比如,各个服务节点上的耗时、请求具体到达哪台机器上、每个服务节点的请求状态等等。

二、下载并安装Zipkin并启动Sentinel、Nacos

1、Zipkin官网下载

java请求链路追踪 java 全链路追踪_jar


2、下载完成后,无需解压,直接在jar的文件夹cmd,进入命令窗口并启动!java -jar zipkin-server-2.8.3-exec.jar

java请求链路追踪 java 全链路追踪_spring_02


3、Zipkin默认端口为 9411,访问 http://localhost:9411/zipkin/ 即可

java请求链路追踪 java 全链路追踪_java请求链路追踪_03


安装完成!!!!

启动Sentienl、nacos,如果没怎么接触这2个,建议请参考:简简单单Sentienl、nacos的入门,启动完成即可

三、创建api

1、创建maven工程,创建2个实体类、接口,项目结构如下:

java请求链路追踪 java 全链路追踪_jar_04


2、实体类中,写个简单的字段即可,主要看接口中的方法,此处以CardService为例(省略StudentService,方法雷同):

java请求链路追踪 java 全链路追踪_java请求链路追踪_05

public interface CardService {
	Integer insert (CardService cs);
}

四、创建提供者

1、创建2个starter project工程,分别为a、b,来体现链路追踪,并勾选依赖

java请求链路追踪 java 全链路追踪_jar_06


2、在pom.xml中添加zipkin的依赖,这样才会在a项目中引用api的方法

java请求链路追踪 java 全链路追踪_spring_07

<dependency>
            <groupId>com.creatorblue</groupId>
            <artifactId>zipkin-api</artifactId>
            <version>0.0.1-SNAPSHOT</version>
        </dependency>

3、分别修改a、b的application.propertie文件中的nacos访问地址

java请求链路追踪 java 全链路追踪_spring_08


4、分别在a、b两个项目中新建一个ServiceImpl来实现api的接口,以studentServiceImpl为例,b以此类推,如下图:

java请求链路追踪 java 全链路追踪_jar_09


五、创建消费者

1、创建Starter Project 为消费者的项目

java请求链路追踪 java 全链路追踪_链路_10


2、在pom.xml文件添加api的依赖和rpc整合的依赖

java请求链路追踪 java 全链路追踪_java请求链路追踪_11


rpc整合的依赖:

java请求链路追踪 java 全链路追踪_jar_12

<dependency>
		    <groupId>io.zipkin.brave</groupId>
		    <artifactId>brave-instrumentation-dubbo</artifactId>
		</dependency>

3、修改消费者的application.properites文件,订阅增加a、b

java请求链路追踪 java 全链路追踪_链路_13


4、在消费者新建一个测试controller类

java请求链路追踪 java 全链路追踪_jar_14

@RestController
public class TestController {
	
	@DubboReference
	private StudentService ss;
	@DubboReference
	private CardService cs;
	
	@RequestMapping("save")
	public Integer save() {
		ss.insert(null);
		cs.insert(null);
		return 1;
	}
}

最后启动a、b,查看nacos如下图:

java请求链路追踪 java 全链路追踪_spring_15

六、以上都是准备项目来体现链路追踪,接下来就是进行zipkin的使用啦~

1、为a、b中的pom.xml添加zipkin的依赖

java请求链路追踪 java 全链路追踪_jar_16

<dependency>
		    <groupId>io.zipkin.brave</groupId>
		    <artifactId>brave-instrumentation-dubbo-rpc</artifactId>
		</dependency>

2、分别在a、b的application.properties中添加以下的配置

java请求链路追踪 java 全链路追踪_java请求链路追踪_17

dubbo.provider.filter=tracing
spring.zipkin.enabled=true
spring.zipkin.base-ur1=http://localhost:9411
spring.zipkin.sender.type=web

3、在消费者的application.properties中添加以下的配置:

java请求链路追踪 java 全链路追踪_链路_18

dubbo.consumer.filter=tracing
spring.zipkin.enabled=true
spring.zipkin.base-url=http://localhost:9411
spring.zipkin.sender.type=web

4、测试:保证nacos、sentinel、zipkin属于启动状态!

访问url地址:http://localhost:8081/save

java请求链路追踪 java 全链路追踪_spring_19


在zipkin中刷新,此时就已成功!

java请求链路追踪 java 全链路追踪_java请求链路追踪_20


java请求链路追踪 java 全链路追踪_链路_21