1: 下单之前需要先经过auth服务;
2: 初始化trace;
3: 在auth服务所有中间件之前加载qtrace-node中间件,把初始化的trace作为参数传给中间件;
4: 中间件接收传进来的trace实例并挂载到global和ctx方便全局使用;
5: 中间件读取配置文件/config/config.qtrace.js;
6: 中间件接收上游请求的header信息;
7: 判断上游服务是否携带traceid,有则赋给trace实例,没有则创建新的traceid赋给trace实例;
8: 判断是否需要自动收集trace信息,默认自动收集,如果自动收集则创建一个span,在完成请求时结束此span;
9: 在创建span时根据父节点的spanid去创建当前spanid(这里不懂的看后面span的模型图)
10: 在结束此span时将此次条span信息写入qtrace.span.log中
11: 如果你觉得自动收集的trace信息不够精准,你想更精确的记录auth内关键函数间的调用关系,则需要自行到对应的模块中去埋点;