数据库主键:标示惟一一条数据,譬如惟一商品,惟一订单nginx
全局事务ID:实现分布式事务一致性的必备良药
请求ID:requestId,seesionId,标示一个请求或者一次会话的生命周期
身份证ID:表明你在中国的惟一标示
学号监狱号:你在某个机构的特殊代号
分布式全链路ID:一次在代码里留下到此一游的留念
等等。。。。
TraceId 做用
标示一次调用的上下文ID,经过此ID能够获悉你所作事情的足迹链。
譬如能够:
统计走过的每一个方法的耗时
获取你本身对本身说的话(本身打得日志)
排查错误请求老前辈时的沟通密语
纪录开始和结束,保存今生全部事迹
等等。。。。
TraceId 实现
- 负载均衡:譬如 nginx,初始化 traceId 放入header
- web request:经过 fliter 获取 header的traceId,无则初始化 traceId
- rpc 调用:经过扩展机制传递 traceId,无则初始化 traceId
- 定时任务 @Schedule:经过 注解切面@TraceId, 初始化 traceId
- 消息消费:经过消息传递协议添加traceID,无则使用注解切面@TraceId初始化 traceId
- 线程池或者异步:封装runnable和callable初始化传递traceId或者封装线程池初始化传递traceId
- 等等。。。
根据此traceId的基础上,能够实现以上描述的耗时,调用链,错误排查等监控修复等需求。