(此次创建的Demo小案例都是基于springBoot【2.0.0.M3】,springCloud【Finchley.M2】创建的,读者若是为了演示正常,请务必保持版本一致)
微服务系统中服务与服务之间的调用有时候是比较繁琐的,尤其是在分析一个请求链为何特别耗时的时候,Zipkin可以说是一大利器,下面展示springcloud中如何集成使用zipkin
1)新建项目,这里直接使用之前创建好的order项目,具体细节不再重复多说。
2)pom文件引入相关配置
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-sleuth</artifactId>
</dependency>
引入之后启动项目,我们用postman发送创建订单的请求,可以看到创建成功,如下图:
我们的后台日志可以看到多了如下日志
简单说明 INFO [order,a3adff6c98c158ec,a3adff6c98c158ec,true]
order:表示属于哪一个项目
a3adff6c98c158ec:是traceId,一条调用链只有一个,相当于全局单次请求唯一ID
a3adff6c98c158ec: spanId:调用编号,相当于调用链每一段的节点ID
true:当为false时候代表以上统计信息不会输出到外部,反之亦然,这里我们需要配置开启,设置为true
3)准备我们的Zipkin,这里我使用Docker安装启动,很简单,一句命令
docker run -d -p 9411:9411 openzipkin/zipkin
关于如何安装Docker,详细可以看【Centos 7 之 安装 Docker 踩坑详解】
启动之后访问 http://192.168.124.32:9411/zipkin/ (前面IP为本机自己虚拟机地址)
4)项目中应如我们Zipkin的相关依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-sleuth-zipkin</artifactId>
</dependency>
5)下面我们需要配置,关联我们的项目模块
#我们zipkin的项目地址
spring:
zipkin:
base-url: http://192.168.124.32:9411/
#1代表百分之百请求都会监控
sleuth:
sampler:
percentage: 1
6)启动我们的项目,再次创建订单,查看我们的Zipkin
可以看到我们的Zipkin 界面每一个节点耗时多少都统计出来了
7)额外补充Zipkin的核心四大组件
7.1)Collector(收集器组件):主要负责收集外部系统跟踪信息,转化为Zipkin内部的Span格式。
7.2)Storage(存储组件):主要负责收到的跟踪信息的存储,默认为存储在内存中,同时支持存储到Mysql、Cassandra以及ElasticSearch。
7.3)API(Query): 负责查询Storage中存储的数据,提供简单的JSON API获取数据,主要提供给web UI使用。
7.4)Web UI(展示组件):提供简单的web界面,方便进行跟踪信息的查看以及查询,同时进行相关的分析