微服务调用链追踪方案

 

zipkin调用链追踪,主要可以知道,服务与服务之间的调用关系,调用的时间,数据信息

1. Trace:一个完整Trace 由一组Span组成,这一组Span必须具有相同的TraceID;Span具有父子关系,处于子节点的Span必须有parent_id,Span由一组 Annotation和BinaryAnnotation组成。整个Trace Tree通过Trace Id、Span ID、parent Span ID串起来的

     1.1 Trace ID:起始(根)服务生成的TraceID

             Span ID:调用下游服务时所生成的Span ID

             Parent Span ID:父Span ID

             Is Sampled:是否需要采样

             Flags:告诉下游服务,是否是debug Reqeust

2. span:表示一次完整RPC调用,是由一组Annotation和BinaryAnnotation组成。是追踪服务调用的基本结构,多span形成树形结构组合成一次Trace追踪记录。Span是有父子关系的

   2.1什么时候生成?

            服务接受到 Request时,若当前Request没有关联任何Span,便生成一个Span,包括:Span ID、TraceID

            向下游服务发送Request时,需生成一个Span,并把新生成的Span的父节点设置成上一步生成的Span

3. Annotation :表示某个时间点发生的Event

     3.1cs:Client Send 请求

            sr:Server Receive到请求

            ss:Server 处理完成、并Send Response

            cr:Client Receive 到响应

     3.2什么时候生成?

            客户端发送Request、接受到Response、服务器端接受到Request、发送 Response时生成。Annotation属于某个Span,需把新生成的Annotation添加到当前上下文里Span的annotations数组里

4. BinaryAnnotation 存放用户自定义信息,比如:sessionID、userID、userIP、异常等

   4.1在任意需要记录自定义跟踪信息时都可生成。比如:异常、SessionID等。如Annotation一样,BinaryAnnotation也属于某个Span。需把新生成的BinaryAnnotation,添加到当前上下文里Span的binary_annotations数组.

   4.2如果需要添加相应的信息,可以使用tracer埋点技术来实现,在相应需要显示到binaryAnnotation的代码地方加上埋点,之后会自动像zipkin提交信息,用以显示用户需要的自定义信息

附:ZIP原理图

 项目具体方案:

一 最终效果:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一支烟一朵花

所有打赏将用于一支烟花AI社区

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值