一种调用链跟踪方法技术领域
本发明涉及一种调用链跟踪方法。
背景技术
当前机票应用服务系统包含很多子系统,客户端发起一次查询请求或者下单请
求,会通过很长的子系统链路,每个环节都有可能出现问题,而每个子系统直接提供的服务
是相互隔离的,监控日志也是互相没有交集,同时每个子系统每天都会产生几百G的日志
量。因此,一旦客户端发起的请求系统响应异常或者超时,很难定位具体哪个环节出现问
题。为了解决以上问题,现有技术采用的方案为:在几个关键系统部署大量监控日志,如果
某个用户发起的请求系统响应失败,从各个关键系统的监控日志寻找问题。然而,现有技术
的方案存在以下几个缺陷:
1.需要从各个系统去捞取监控日志,而且这些日志无法有效地串联,各个子系统
的监控日志也没有统一的标准;
2.有些在用户侧产生的问题很难复现;
3.各个子系统监控曲线是正常的,但是某些用户请求确实是有问题,找不到问题
产生的真正原因。
发明内容
发明目的:本发明的目的是提供一种能够解决现有技术中存在的缺陷的调用链跟
踪方法。
技术方案:本发明所述的调用链跟踪方法,包括以下步骤:
S1:客户端发起请求;
S2:生成全局唯一的路径ID,并加入到系统标识中;
S3:在子系统内部存储该路径ID;
S4:向下游子系统进行传递时,将路径ID设置到Http Request Header中,并加入
调用序号;
S5:下游子系统得到路径ID,并封装自己的系统标识;
S6:如果没有传递到最后一个下游子系统,则返回步骤S4,直到传递到最后一个下
游子系统才进行步骤S7;
S7:各个子系统在日志中打印当前上下文的路径ID,关联异常堆栈日志;
S8:请求执行完毕。
进一步,步骤S2中,所述路径ID由在最外层服务端的拦截器通过统一的调用链中
间件生成。
进一步,步骤S3中,所述子系统内部使用Threadlocal存储路径ID。
进一步,步骤S5中,所述下游子系统使用统一的调用链中间件解析得到路径ID。
有益效果:与现有技术相比,本发明具有如下的有益效果:
1.本发明能够有效排查客户端某页面响应慢或者报错的原因,找到请求链路中的
瓶颈点、故障点以及该次请求的异常日志;
2.本发明能够验证调用路径是否符合预期,将数据建模,衡量在单元内的路由正
确性;
3.本发明能够建立各个层次上的依赖的错误指标和响应时长指标,找出链路上的
不正常的、多余的依赖调用。
附图说明
图1为本发明具体实施方式的方法流程图;
图2为本发明具体实施方式的方法示例图。
具体实施方式
下面结合附图和具体实施方式对本发明的技术方案作进一步的介绍。
本具体实施方式公开了一种调用链跟踪方法,如图1所示,包括以下步骤:
S1:客户端发起请求;
S2:在最外层服务端的拦截器通过统一的调用链中间件生成全局唯一的路径ID,
并加入到系统标识中;
S3:在子系统内部使用Threadlocal存储该路径ID;
S4:向下游子系统进行传递时,将路径ID设置到Http Request Header中,并加入
调用序号;
S5:下游子系统使用统一的调用链中间件解析得到路径ID,并封装自己的系统标
识;
S6:如果没有传递到最后一个下游子系统,则返回步骤S4,直到传递到最后一个下
游子系统才进行步骤S7;
S7:各个子系统在日志中打印当前上下文的路径ID,关联异常堆栈日志;
S8:请求执行完毕。
其中,客户端包括网站、APP、M站中的一种或多种。
如图2所示,每个系统都有自己的调用序号,被调用的系统会在自己接收到的序号
后新增一个序号级别,以表示被调用。
通过以上方法,能够轻松找出应用的关键路径,具体能够实现以下功能:
1.能够知道应用被调用得最多的入口、服务是哪些;
2.能够找出性能瓶颈、易故障点、变化点;
3.能够用于容量评估、性能优化;
4.能够大大促进链路监控和高峰预警;
5.能够衡量网络调用的均衡性;
6.能够衡量在单元内的路由正确性。
以上调用链相关的服务(如日志打印、生成路径ID、设置系统序号等)无需各个子
系统大批量修改代码,只需接入调用链跟踪中间件即可。调用链中间件会封装TSP-Client
以及HTTP-Client,在各个应用中加入拦截器,使用统一方式针对路径ID进行封装、存储与
下一步传递。
可以将业务信息与链路结合,使用会员id联合路径ID的方式,找到用户关键的查
询、下单数据,或者黄牛刷单的操作记录,并将这些数据做消息发布,供各个系统(如风控系
统)订阅,进行风险识别和控制。