这是 Beta 探索课程,内容结构、实验步骤和示例可能会继续调整。
号段模式
号段模式(Segment)是一种高性能的分布式 ID 生成方案,它通过预分配 ID 号段来实现高性能。
基本原理
1. 号段定义
号段: 一段连续的 ID 范围,例如 [1000, 2000]。
工作流程:
1. 从数据库获取号段:[1000, 2000]
2. 本地分配 ID:1001, 1002, 1003, ...
3. 号段用完,获取新号段:[2000, 3000]
4. 重复步骤 2-32. 号段表设计
表结构:
数据设计要点
- 核心是在
id_segment里保存业务事实,而不是把规则散落在应用逻辑里。- 索引服务于高频查询,重点是缩小扫描范围,而不是堆更多字段。
- 关键字段包括
id、business_type、max_id、step、version、created_at、updated_at,它们决定后续查询和管理能力。
初始化数据:
数据设计要点
- 关键字段包括
INSERT,它们决定后续查询和管理能力。
基本实现
1. 获取号段
Java 实现:
2. 号段生成器
Java 实现:
双 Buffer 机制
1. 原理
使用两个号段 Buffer,一个当前使用,一个预加载。
架构:
┌─────────────────┐ ┌─────────────────┐
│ Buffer 1 │ │ Buffer 2 │
│ [1000, 2000] │ │ [2000, 3000] │
│ 当前使用 │ │ 预加载 │
└─────────────────┘ └─────────────────┘
↓ ↓
分配 ID 等待切换2. 实现
性能分析
1. 性能优势
✅ 本地分配 ID,无网络开销
✅ 批量获取,减少数据库访问
✅ 双 Buffer,零等待
✅ 高并发支持2. 性能测试
单线程:1,000,000 QPS
多线程(10):5,000,000 QPS
多线程(100):10,000,000 QPS
延迟:< 0.001ms适用场景
✅ 适合使用
1. 超高并发系统
QPS > 1,000,000
极低延迟要求2. 大规模系统
用户量 > 1000万
需要高可用❌ 不适合使用
1. 小型系统
复杂度高
维护成本高总结
号段模式评价
| 维度 | 评分 | 说明 |
|---|---|---|
| 唯一性 | ⭐⭐⭐⭐⭐ | 数据库保证 |
| 有序性 | ⭐⭐⭐⭐⭐ | 严格递增 |
| 性能 | ⭐⭐⭐⭐⭐ | 超高性能 |
| 可用性 | ⭐⭐⭐⭐ | 需要数据库 |
| 扩展性 | ⭐⭐⭐⭐ | 分布式友好 |
使用建议
强烈推荐:
✅ 超高并发系统
✅ 大规模系统
✅ 需要极致性能下一步
了解了号段模式后,我们学习系统架构设计。
👉 下一节:设计原则