在我们的应用程序中,用户可以上传照片。这个上传事件被注册为一个活动,并被推送到用户的“关注者”活动流中。
使用的流程和技术如下:
- 用于存储的 MYSQL 后端(上传图像的 url 与一些元数据一起存储在照片表中)
- 活动在MYSQL中生成并存储在活动表中
- 创建了 GEARMAN 作业,它将活动 ID 发送到 REDIS,在 REDIS 中,此活动 ID 被扇出到所有用户关注者,以填充他们的活动流。
- 我们通过从 REDIS 获取活动 ID 数组然后在 MYSQL 中执行简单的 IN 查询来检索流。
- 在用户活动流中,可以看到图像的一个小裁剪版本。
现在这一切都运行得非常好,并且与几个缓存层一起帮助保持系统非常稳定和可扩展。
但是,处理选择删除一张或多张照片的用户的最佳方式是什么。目前,当他们删除一张照片时,他们的所有关注者都会在他们的活动流中获得一个损坏的图像链接。
因此,我们需要在两种处理方法之间进行选择。
- 将活动 id 存储在照片表中,并在用户删除该照片时删除与该照片相关的活动。这会很好地工作,但会看到用户偶尔会从他们的流中删除活动。
- 在照片表中将图像标记为已删除,并在生成流时显示“此图像已被用户删除”消息。
哪种方法被认为是最好的方法,为什么?或者,人们会推荐其他更好的方法来解决这个问题吗?
非常感谢。