Files
go-utils/id/README.md
2025-06-04 15:52:46 +08:00

29 lines
1.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# ID生成器
## 订单ID
- 电商平台202506041234567890时间戳 + 随机数19-20 位)。
- 支付系统PAY20250604123456789业务前缀 + 时间戳 + 序号)。
- 微信支付1589123456789012345类似 Snowflake 的纯数字 ID
- 美团订单202506041234567890123时间戳 + 商户 ID + 随机数)。
## UUID
| 特性 | GUID/UUID | KSUID | ShortUUID | XID | Snowflake |
|-------|--------------|------------|-----------|----------|----------------|
| 长度 | 36/32字符不含- | 27字符 | 22字符 | 20字符 | 19数字位数 |
| 有序性 | 无序UUIDv4 | 严格时序 | 无序 | 趋势有序 | 严格时序 |
| 时间精度 | 无UUIDv4 | 毫秒级 | 无 | 秒级 | 毫秒级 |
| 分布式安全 | 高(随机数) | 高 | 高 | 高 | 高需配置WorkerID |
| 性能 | 中等 | 中等 | 较低(编码开销) | 极高 | 极高 |
| 时钟依赖 | 无 | 有(需处理时钟回拨) | 无 | 有(但影响较小) | 强依赖(需严格同步) |
| 适用场景 | 跨系统兼容 | 时序索引 | 短ID、URL | 高并发、短ID | 分布式时序ID |
## 选择建议
- **GUID/UUID**: 适用于需要跨系统兼容的场景,特别是当不需要有序性时。
- **KSUID**: 适合需要严格时序的应用,如事件日志、时间序列数据。
- **ShortUUID**: 当需要短ID且不关心有序性时的理想选择适用于URL、短链接等。
- **XID**: 高并发场景下的短ID选择适合需要一定有序性的应用。
- **Snowflake**: 适合分布式系统,特别是需要严格时序和高性能的场景,如大规模分布式应用。