第二篇 预约模型:档期与占位
上篇把需求拆成六张表、把机器和架构都定了下来,这篇进入预约系统真正的深水区:档期和占位。预约系统做得好不好,八成取决于档期表设计得对不对、并发占位锁得住锁不住。
接下来四节按数据流转的顺序展开:先把时段容量表建起来,再让预约在并发下安全占位,然后到店扫码核销回收状态,最后处理客人不来了怎么办。每节都带可读的代码片段和我们真实踩过的坑,美甲店场景虽小,并发和一致性的问题一个都不少。
| 主题 | 核心问题 | 关键设计 |
|---|---|---|
| 档期设计 | 一天怎么切 | 时段容量表 |
| 并发占位 | 两人同时约 | 行锁加唯一索引 |
| 到店核销 | 怎么算来过 | 扫码写状态 |
| 退改规则 | 不来怎么办 | 超时释放与取消 |
如果只能记住一句话:预约系统的本质,就是把时间切成格子,然后保证格子不被多占。听起来简单,但国庆当天十七个人撞在同一时段的教训告诉我们,格子这件事一旦靠人脑维护,出错只是时间问题。
写这篇的时候正好是系统上线第三个月,三家门店日均预约从零涨到一百八十单,档期模型撑住了所有高峰,没有再出现一次重复占用。
延伸阅读
- 需求拆解:门店、档期、预约、核销:上一篇的实体表
- 并发占位与锁:本篇最重要的一节
- 腾讯云实战合集:更多场景化实践
