这是 Beta 探索课程,内容结构、实验步骤和示例可能会继续调整。
改进方案与第一步
改进方案
晚上,我整理思路,写了一份方案:
短期目标(1 周)
- 解决重复推送:Redis 分布式锁防并发执行,记录推送结果、幂等处理。
- 优化查询效率:给
status加索引,考虑用 Redis 队列代替数据库轮询。 - 增加错误处理:推送失败记录原因,实现重试(最多 3 次)。
中期目标(1 个月)
- 拆分通知类型:高优先级队列(私信、评论@)与低优先级队列(点赞、促销)。
- 实现站内信:消息中心、已读/未读状态。
- 用户偏好设置:允许关闭某类通知、设置免打扰。
长期目标(3 个月)
- 多渠道推送:iOS APNs、安卓厂商推送、短信邮件备选。
- 推送监控:成功率、平均延迟、各渠道统计。
老王看完,点点头:「思路清晰,先解决燃眉之急。」
第一步:加锁
第二天一上班,我开始改造。第一步,解决并发问题——用 Redis 分布式锁:
- 脚本执行前尝试获取锁。
- 拿到锁才执行,否则跳过本次。
- 处理完释放锁,并加过期时间防死锁。
部署后观察了一天,重复推送的问题消失了。
但我知道,这只是开始。
一句话
改进方案分三档:短期治标(锁、索引、重试),中期治本(分级、站内信、偏好),长期完备(多渠道、监控)。先解决燃眉之急,再逐步走向生产级。
下一章深入推送渠道:iOS 与安卓的差异。
发现内容有问题?
告诉我们哪里需要改进。
