在文章“分布式链路跟踪系统(一):Dapper 介绍”里提到过 Annotation,Annotation 里除了可以记录链路的基本信息(耗时、应用名、方法名),还可以用来记录一些业务自定义的扩展信息。扩展信息有两类:
- 纯文本,记录在链路数据里,方便查看。
- key-value 数据,实现多维度查询,比如 key 是订单号 orderNo 时,可以通过 orderNo=xxx 找到和该订单相关的所有请求链路:下单、支付、退款等。一条 trace 链路对应的是实际中的一个请求,有了多维度查询,就可以把整个交易流程里的多个链路串联起来了。
下面再讲一个页面展示上的小优化,在管理平台上做链路数据的范围查询时,页面如下所示:
通常,可选的输入项有应用标识、方法名、开始时间、结束时间、表达式。应用标识是一个系统在整个公司内部全局唯一的 ID,方法名是要查询链路请求的接口名称,一般使用“类名.方法名”表示,开始时间、结束时间表示要查询的时间范围。时间参数存在的意义是避免查询范围太大,给存储系统造成太大压力。表达式就是上面提到的扩展信息了,比如 orderNo&