2

在我们的应用程序中,用户可以上传照片。这个上传事件被注册为一个活动,并被推送到用户的“关注者”活动流中。

使用的流程和技术如下:

  • 用于存储的 MYSQL 后端(上传图像的 url 与一些元数据一起存储在照片表中)
  • 活动在MYSQL中生成并存储在活动表中
  • 创建了 GEARMAN 作业,它将活动 ID 发送到 REDIS,在 REDIS 中,此活动 ID 被扇出到所有用户关注者,以填充他们的活动流。
  • 我们通过从 REDIS 获取活动 ID 数组然后在 MYSQL 中执行简单的 IN 查询来检索流。
  • 在用户活动流中,可以看到图像的一个小裁剪版本。

现在这一切都运行得非常好,并且与几个缓存层一起帮助保持系统非常稳定和可扩展。

但是,处理选择删除一张或多张照片的用户的最佳方式是什么。目前,当他们删除一张照片时,他们的所有关注者都会在他们的活动流中获得一个损坏的图像链接。

因此,我们需要在两种处理方法之间进行选择。

  1. 将活动 id 存储在照片表中,并在用户删除该照片时删除与该照片相关的活动。这会很好地工作,但会看到用户偶尔会从他们的流中删除活动。
  2. 在照片表中将图像标记为已删除,并在生成流时显示“此图像已被用户删除”消息。

哪种方法被认为是最好的方法,为什么?或者,人们会推荐其他更好的方法来解决这个问题吗?

非常感谢。

4

1 回答 1

2

IMO 最好使之尽可能透明。告诉其他用户该图像已被删除,并提供从活动流中删除该条目的选项。这样用户就可以保持控制,并且不会在后台发生“魔术”。也许对于非常旧的条目(这在当前意味着什么),您可以自动删除该项目。但我总是希望获得相应的信息。

于 2013-03-08T20:57:56.350 回答