SpringCloud 使用Zipkin进行分布式跟踪
本示例有七个spans。如果转到Zipkin中的跟踪,则可以在第二个跟踪中看到此数字,如下图所示:

但是,如果选择特定的跟踪,则可以看到四个spans,如下图所示:

选择特定跟踪时,您会看到合并的spans。这意味着,如果有两个spans发送到Zipkin,并且带有“服务器已接收和服务器已发送”或“客户端已接收和客户端已发送”注释,它们将显示为单个跨度。
在这种情况下,为什么七个spans和四个spans之间有区别?
- 一个跨度来自
http:/start跨度。它具有服务器已接收(sr)和服务器已发送(ss)批注。 - 从
service1到service2到http:/foo端点的RPC调用中有两个spans。客户发送(cs)和客户接收(cr)事件在service1端发生。服务器已接收(sr)和服务器已发送(ss)事件在service2端发生。这两个spans构成一个与RPC调用相关的逻辑范围。 - 从
service2到service3到http:/bar端点的RPC调用中有两个spans。客户发送(cs)和客户接收(cr)事件在service2端发生。服务器已接收(sr)和服务器已发送(ss)事件在service3端发生。这两个spans构成一个与RPC调用相关的逻辑范围。 - 从
service2到service4到http:/baz端点的RPC调用中有两个spans。客户发送(cs)和客户接收(cr)事件在service2端发生。服务器已收到(sr)和服务器已发送(ss)事件在service4端发生。这两个spans构成一个与RPC调用相关的逻辑范围。
因此,如果我们计算物理量spans,则有一个来自http:/start的实体,两个来自service1的实体,调用service2,两个来自service2的实体,调用service3,还有两个来自service2致电service4。总而言之,我们总共有七个spans。
从逻辑上讲,我们看到四个跨度的信息,因为我们有一个跨度与到service1的传入请求有关,而有三个spans与RPC调用有关。