消息聚合与清理

点赞需要聚合

点赞比较特殊:一个热门动态可能有上千个赞,如果每个赞都发通知,用户会被淹没。

我采用了合并通知策略:用户看到的点赞通知是

张三 等 15 人点赞了你的动态

而不是 15 条独立的点赞通知。

评论聚合

小李又提出:「同一个人连续评论 5 次,能不能合并成一条通知?」

消息列表(不合并):
- 张三 评论了你的动态(1 分钟前)
- 张三 评论了你的动态(2 分钟前)
- ...
- 张三 评论了你的动态(5 分钟前)

消息列表(合并):
- 张三 评论了你的动态 5 次(刚刚)

我设计了一个聚合策略:同一用户 + 同一动态 + 时间窗口内的评论,聚合成一条。

聚合的实现思路

  • 创建通知前检查:是否存在「同用户 + 同动态 + 窗口内」的未聚合消息。
  • 有:更新原消息(次数 +1,更新内容与时间)。
  • 无:创建新消息。

聚合是「先查后写」,要有索引支撑(用户 + 动态 + 时间)。

消息清理

站内信会一直累积,需要清理机制:

  • 定时清理脚本,每天凌晨执行。
  • 清理策略:已读且超过 N 天的旧消息。
  • 保持表大小可控,避免无限增长。

一句话

消息聚合(相似合并)+ 定时清理(控制增长),让站内信既不淹没用户,又不会无限膨胀。聚合是体验优化,清理是容量治理。

发现内容有问题?

告诉我们哪里需要改进。