怎么处理微服务之间的链路追踪?traceId和大数据日志采集的实现原理
1. 什么是链路追踪?
分布式链路追踪就是将一次分布式请求还原成调用链路,将一次分布式请求的调用情况集中展示,比如各个服务节点上的耗时、请求具体到达哪台机器上、每个服务节点的请求状态等等。
2. 链路追踪的作用
1. 故障快速定位
可以通过调用链结合业务日志快速定位错误信息
2. 链路性能可视化
各个阶段链路耗时、服务依赖关系可以通过可视化界面展现出来
3. 链路分析
通过分析链路耗时、服务依赖关系可以得到用户的行为路径,汇总分析应用在很多业务场景
3. 原理
通过事先在日志中埋点,找出相同traceId的日志,再加上parentId和spanId就可以将一条完整的请求调用链串联起来
![在这里插入图片描述](https://img8.php1.cn/3cdc5/fd11/ae9/27a6302587a7d0d5.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA54ix5ZCD6bG86aW855qE54yr,size_20,color_FFFFFF,t_70,g_se,x_16)
图片链接:https://blog.csdn.net/dabaoshiwode/article/details/109673681
1. traceId 链路唯一识别
traceId串联请求形成链路,每一条局部链路都用一个全局唯一的traceId来标识
2. parentId 父服务id
表示调用自己服务的父服务,从1开始递增
白话文:说服务id感觉也不太对。。。
3. spanId 使请求具有父子关系
服务A的方法调用了服务B、服务C,但是不知道调用的先后数据,spanId就是表示这个先后顺序的,从1开始,越小的越先调用