系统设计补充题
如何设计一个微信红包功能?
这题核心考察的是金额拆分、并发控制和资金安全。
可以从这些方面回答:
- 红包模型:普通红包、拼手气红包、固定金额红包。
- 金额拆分:保证总金额守恒、每份金额合法、随机性合理。
- 并发抢红包:库存扣减、幂等、防重复领取、超发保护。
- 存储设计:红包主表、明细表、领取记录表、账户流水表。
- 性能优化:缓存、异步落库、消息队列、热点隔离。
- 安全与一致性:支付成功、红包创建、领取入账、失败补偿。
面试时如果想答得更完整,可以补:
- 如何防止一个用户重复抢。
- 如何防刷。
- 如何处理红包过期和退款。
如果让你实现一个高可用的小型架构:一个接口上传文本,一个接口获取内容,要求避免单机房故障并让业务代码无感,你会怎么设计?
这题重点是“高可用”和“业务无感切换”。
可以按下面的结构来答:
- 接入层:域名 + 负载均衡 + 多机房流量切换。
- 应用层:无状态服务,多实例部署,跨机房冗余。
- 存储层:主从、双写、异地多活或主备切换。
- 缓存层:读取走缓存,提高查询性能。
- 故障切换:健康检查、自动摘除故障节点、流量自动漂移。
- 代码无感:通过统一服务发现、配置中心、代理层或中间件屏蔽底层切换。
这类题的关键不是堆名词,而是说明:
- 写路径怎么保证一致性。
- 读路径怎么保证可用性。
- 单机房挂掉后流量如何切到另一侧。
评论
使用 GitHub 账号即可参与加载较慢?可 直接前往 GitHub Discussions 查看与参与。