链路追踪
● 背景延伸
○ 分布式链路跟踪最先由⾕歌提出,Dapper, a Large-Scale Distributed Systems Tracing
Infrastructure
○ OpenTracing 提供⽆关平台的API,⽅便开发⼈员添加或更换链路追踪⽅案
● 作⽤意义
○ 可以将项⽬的执⾏情况与效率进⾏量化统计,⽅便接⼝的性能优化
○ 微服务场景,可以将分布式各服务间的流转进⾏跟踪记录,形成分布式服务的调⽤链路
○ 便于梳理服务间的依赖,以及依赖的合理性
○ 快速发现问题、便于排查问题
○ 解决特定场景难以复现的问题
○ 根据服务异常情况、相应时间等指标,便于判断服务的健康情况
● 常⻅⽅案对⽐
● 概念介绍
○ Trace:客户端发起的⼀次请求,可以认为是⼀个Trace
○ Span:代表系统中具有开始时间和执⾏时⻓的逻辑运⾏单元,Span之间通过嵌套或者顺序排
列建⽴逻辑因果关系。Span⾥的信息包括 操作的名字、开始时间、结束时间、Tags
○ Tags:每个span可以有多个键值对形式的标签,⽤于记录参数等数据
● 流程代码示例
$zipKin = ZipKin::getInstance();
$zipKin->startAction($this->action->controller->module->requestedRoute,
$paramData);
$zipKin->addChild($cacheKey, 'redis-get ' . $cacheKey);
$zipKin->finishChild();
$zipKin->endAction(); // 上报操作
$traceId = $zipKin->getTraceId();
● 数据查看