可管控、不重复TraceId解决方案

一、名词解释
TraceId: 追踪Id,一般用在分布式系统中,用于标识一次完整请求的唯一id。在分布式系统中,由于每个服务,组件等都可能部署多台(用到分布式技术的基本也是大型系统),要确定一次请求经过了哪些服务,日志捞取,性能检测等等没有标识无异于大海捞针,这时候就需要一个唯一标识将整个链路串联起来,这就是TraceId。
扩展:

1.系统唯一中立标识

由于TraceId的粒度为每次请求,并且唯一不重复,也可以作为系统唯一中立通传标识,其他各种业务需要实现通传的功能时,可在此标识上扩展,如灰度标识等,以此标识为key,业务标识为value。

二、技术实现

前端及各端是业务起点,所以TraceId由前端及各端生成,后端管控验证(管控滥用,管控唯一,安全隔离)的要求。
1.生成算法

|--------------|----|---------------------|-------------------|
| 名称 | 长度 | 标识 | 说明 |
| 固定前缀 | 2 | KZ | 标识来源、系统等 |
| TIMESTAMP | 8 | DDHHMMSS(日时分秒) | 时间天然防重,后天校验时间间隔 |
| USER_ID_COMP | 10 | 用户ID压缩(SHA-256前10位) | 用户隔离,SHA算法脱敏,压缩 |
| RND | 4 | 随机数(0000-9999) | 再加防重盐值,一个用户一秒可能多个 |
| DEVICE_ID | 8 | 设备唯一号压缩(8位Hex) | 设备隔离,SHA算法脱敏,压缩 |
| CHK | 8 | 前序的SHA-256前8位校验码 | 对前面的参数加签,防篡改 |
| 总计 | 40 | | |

生成示例:KZ011130118j6k1lcg4z11151d6j77hvh8uk4n1s

2.后端校验算法
a.每次首次请求上报设备唯一号(DEVICE_ID),后端存储至退出(兜底12小时),后续请求每次延时存储。
b.每次请求的TraceId,后端收到请求校验TIMESTAMP,时间不能超过30秒,防止滥用。
c.每次请求的TraceId,后端收到请求校验DEVICE_ID和首次上报的
DEVICE_ID做对比,当天不能频繁变更。
d.每次请求的TraceId,后端收到校验CHK是否一致。

多次校验达到,可信、防重放、可校验可追溯、可管控、不可伪造的效果。

3.重复概率

在同一秒内,同一用户、同一设备产生 N 条 TraceId 时,重复概率由 4 位随机数决定:

  • 单条 TraceId 重复的概率:1 / 10⁴ = 0.0001
  • 当 N = 100 时,重复概率 ≈ C (100,2) / 10⁴ ≈ 0.495
  • 当 N = 50 时,重复概率 ≈ C (50,2) / 10⁴ ≈ 0.1225
  • 当 N ≤ 10 时,重复概率 ≤ 0.0045,可忽略不计

在跨用户、跨设备的大型系统中,同一秒内产生 10⁶ 条 TraceId:

  • 总组合数 ≈ 10²²,远大于 10⁶
  • 重复概率 ≈ 1 - (1 - 1/10²²)^(10⁶) ≈ 10⁻¹⁶,几乎为 0。
相关推荐
tianyu2348 小时前
Java 正则表达式终极指南:从 Pattern 到 Matcher,从双重转义到性能优化,一篇全搞定
java·开发语言·正则表达式·group·find·pattern·matcher
Emily1568535987010 小时前
Emerson 1C31129G03 Analog Input Module
java·开发语言·前端·plc·emerson·1c31129g03·input module
就叫_这个吧15 小时前
Java递归方法实现面包屑导航
java·开发语言
fīɡЙtīиɡ ℡15 小时前
AI 应用系统设计
java·开发语言·人工智能
城管不管16 小时前
重生——第十一次面试之挖财一面2026.8.19已OC
java·服务器·jvm·数据库·spring·面试·职场和发展
码匠许师傅16 小时前
【C++ 面试真题】26. 聊聊 C++ 的智能指针
java·c++·面试
AI绘画哇哒哒16 小时前
【建议收藏!】35岁后端血泪忠告,这3类人别硬转Agent(过来人亲述)
java·人工智能·后端·ai·程序员·大模型·agent
最强小杰16 小时前
gpt-5.6-sol 频繁报 503 怎么办?区分容量熔断和限速 429 的排查方法 + 可复用 retry wrapper
java·人工智能·gpt·ai
吠品18 小时前
Wine 在 Linux 上运行 Windows 软件完整指南
java·linux·服务器
亚历克斯神20 小时前
智能搜索系统的升级复盘——从 Elasticsearch 到混合检索的检索质量提升
java·spring·微服务