标准答案
- Request ID 应在网关或服务入口生成或校验后续传,用于把同一次 HTTP 请求的访问日志、错误日志和响应关联起来。
- Trace ID 由分布式追踪上下文生成和透传,跨越网关、服务、消息和异步任务;每个跨度还可以有独立 span ID。
- 业务单号在订单、支付、工单、任务等领域对象创建时生成,用于客服、对账、审计和业务查询。
- 服务调用应透传可信的追踪上下文,并记录采样、来源和关联关系;对外部传入的标识要限制格式和长度,避免日志污染。
- 响应可以返回 Request ID 便于反馈问题,业务单号只在用户有权查看的场景返回,Trace ID 通常主要用于内部观测。
题目解析
将所有日志只按用户 ID 或订单号查询会在高并发和异步场景中丢失一次具体调用的时序。请求与追踪标识让排查从“猜测”变成可关联的证据。
异步任务需要显式携带追踪上下文和业务关联字段,否则消息消费后的日志会断开原始请求链。
常见误区
- 把每一次服务调用都重新生成 Trace ID,导致链路断裂。
- 把业务单号当作技术请求 ID 使用,无法区分多次重试和并发操作。
- 直接信任客户端传入的超长或含控制字符的请求标识。