本文介绍了分布式追踪系统中常用的ThreadLocal、InheritableThreadLocal、TransmittableThreadLocal和TransmissibleThreadLocal等类的特点及其在解决跨线程传递上下文信息方面的作用。同时,分析了MTrace跨线程传递方案的实现方式和存在的问题,并提出了使用自定义的线程池来解决@Async场景下“弄丢”TraceId的问题的方法。此外,还介绍了Zipkin、SkyWalking和EagleEye等分布式追踪系统的基本框架和跨线程解决方案。其中,Zipkin使用ThreadLocal和InheritableThreadLocal来解决父子线程trace信息传递丢失的问题,而SkyWalking则使用ThreadLocal来存储上下文信息,并通过包装方式避免大的代码改动。EagleEye则提供了多维度、实时、自动化的应用性能监控和分析能力。
有的时候你的业务系统会对外提供一些服务. 比如HTTP服务. 这样使用方可能是我们C端用户,也有可能是我们的QA同学. 特别是在反馈问题的时候我们希望能够有一个统一的唯一标识符能够提供给用户. 让用户在反馈问题的时候,能够带上一个关键字, 比如相应的请求的带上的时间戳(timestamp). 或者是请求号(requestNo)这样在定位问题的时候能够比较快速的确定问题上下文.进而进行排查....
完成下面两步后,将自动完成登录并继续当前操作。