这是 Beta 探索课程,内容结构、实验步骤和示例可能会继续调整。
限流实现与规则表
点赞限流
点赞通知有两个问题:数量多、内容单一。
我设计了聚合 + 时间窗口限流:
- 同一动态的点赞,聚合成「张三等 15 人点赞」。
- 同一动态每小时最多 1 条点赞通知。
- 实现:Redis 记录「用户 + 动态」的最近通知时间,窗口内合并。
评论限流
评论比点赞复杂:不同用户评论内容不同,同一用户连续评论可以聚合。
我设计了两层限流:
- 按动态:同一动态每小时最多 5 条评论通知。
- 按用户:同一用户 5 分钟内的连续评论聚合成 1 条。
推送限流
站内信限流了,但推送呢?推送更需要限流,因为:
- 推送会打断用户。
- 推送显示在通知中心,数量有限。
- 推送过多会被用户关闭通知权限。
推送限流规则比站内信更严格:同一动态每小时最多推送 1 次。
限流规则表
按类型设置不同的站内信 / 推送限流与聚合
| 通知类型 | 站内信限流 | 推送限流 | 聚合规则 |
|---|---|---|---|
| 点赞 | 同一动态每小时最多 1 条 | 同一动态每小时推送 1 次 | 聚合成「张三等 15 人点赞」 |
| 评论 | 同一动态每小时最多 5 条 | 同一动态每小时推送 3 次 | 同一用户 5 分钟评论聚合 |
| 关注 | 不限流 | 每小时最多推送 5 次 | 不聚合 |
| 私信 | 不限流 | 不限流 | 不聚合 |
| 系统通知 | 每天最多 3 条 | 每天推送 1 次 | 不聚合 |
要点:
点赞限流严格(高频低价值)、私信不限流(重要);推送比站内信更需要限流,因为推送会打断用户、过多会被关闭权限。
用户自定义限流
小李提出:「能不能让用户自己设置接收频率?」
我设计了用户偏好设置:用户可调整通知频率(高 / 中 / 低),发送时检查。存储在 notification_preferences 表,发送通知时检查用户偏好。
一句话
限流实现 = 聚合 + 时间窗口 + 按类型差异化;推送限流比站内信更严格。核心规则表:点赞严格、私信不限、推送克制。
发现内容有问题?
告诉我们哪里需要改进。
