全链路日志每次的tracerid从源头开始生成,对于第三方的业务,一笔交易需要和第三方交互的情况下,如何确定全链路?对于异步非实时交易,例如:将交易信息送入队列后,从队列里定时处理,这种情况怎么进行日志整合,全链路展示?
收起异步交易日常见到的会分成两种:
1.A系统发送请求到B系统,B系统会进行批处理(比如满100笔或5分钟处理一次),A系统会处理其他任务,B处理完成后发送应答到A系统;
2.A系统发送请求到B系统,B系统会进行批处理(比如满100笔或5分钟处理一次),A系统会每过30s向B系统发送一个请求询问交易是否完成,B系统会返回“处理中”或“处理完成”。
针对第一种情况暂时没有特别处理方法,针对第二种,可以将B系统返回的“处理中”或“处理完成”状态作为一个判断标志,但是在计算指标的时候应当考虑窗口时间。
此外上述两种情况都可以在异步交易处理完成后,将日志作为同步日志输出出来,缺点是时效性不足,可作为前一天的分析。