一、什么是Zipkin?
Zipkin是一个分布式跟踪系统,链路追踪是分布式系统下的一个概念,它的目的就是要解决上面所提出的问题,也就是将一次分布式请求还原成调用链路,将一次分布式请求的调用情况集中展示,比如,各个服务节点上的耗时、请求具体到达哪台机器上、每个服务节点的请求状态等等。
二、下载并安装Zipkin并启动Sentinel、Nacos
2、下载完成后,无需解压,直接在jar的文件夹cmd,进入命令窗口并启动!java -jar zipkin-server-2.8.3-exec.jar
3、Zipkin默认端口为 9411,访问 http://localhost:9411/zipkin/ 即可
安装完成!!!!
启动Sentienl、nacos,如果没怎么接触这2个,建议请参考:简简单单Sentienl、nacos的入门,启动完成即可
三、创建api
1、创建maven工程,创建2个实体类、接口,项目结构如下:
2、实体类中,写个简单的字段即可,主要看接口中的方法,此处以CardService为例(省略StudentService,方法雷同):
public interface CardService {
Integer insert (CardService cs);
}
四、创建提供者
1、创建2个starter project工程,分别为a、b,来体现链路追踪,并勾选依赖
2、在pom.xml中添加zipkin的依赖,这样才会在a项目中引用api的方法
<dependency>
<groupId>com.creatorblue</groupId>
<artifactId>zipkin-api</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
3、分别修改a、b的application.propertie文件中的nacos访问地址
4、分别在a、b两个项目中新建一个ServiceImpl来实现api的接口,以studentServiceImpl为例,b以此类推,如下图:
五、创建消费者
1、创建Starter Project 为消费者的项目
2、在pom.xml文件添加api的依赖和rpc整合的依赖
rpc整合的依赖:
<dependency>
<groupId>io.zipkin.brave</groupId>
<artifactId>brave-instrumentation-dubbo</artifactId>
</dependency>
3、修改消费者的application.properites文件,订阅增加a、b
4、在消费者新建一个测试controller类
@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如下图:
六、以上都是准备项目来体现链路追踪,接下来就是进行zipkin的使用啦~
1、为a、b中的pom.xml添加zipkin的依赖
<dependency>
<groupId>io.zipkin.brave</groupId>
<artifactId>brave-instrumentation-dubbo-rpc</artifactId>
</dependency>
2、分别在a、b的application.properties中添加以下的配置
dubbo.provider.filter=tracing
spring.zipkin.enabled=true
spring.zipkin.base-ur1=http://localhost:9411
spring.zipkin.sender.type=web
3、在消费者的application.properties中添加以下的配置:
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
在zipkin中刷新,此时就已成功!