gpt4 book ai didi

design-patterns - 设计模式: notification system

转载 作者:行者123 更新时间:2023-12-03 01:13:16 25 4
gpt4 key购买 nike

我正在开发一个将使用社交网络功能(例如 Facebook)的网站。

我想实现一个通知系统,显示诸如“X将您添加为 friend ”、“Y邀请您参加聚会”、“Z已经参加了最新的测验”之类的内容......我不知道怎么办。

我想知道最好的解决方案是什么:

  • 解决方案 1,又名“日志记录”。

专用表“通知”。每当发生通知的事件(添加好友、回答测验等)时,我都会在此表中添加行。根据添加到表中的通知类型,“通知”表具有包含不同信息的字段。

:易于编码,通知功能和“正常”功能之间的分离,当我需要阅读表格时不会消耗太多资源。

:通知表可能会变得非常大(我想我会在表中添加 10k 行/天),“重复”信息:通知表中的信息可以在所有其他中找到使用日期/列表/任何比较的表格。

  • 解决方案 2,又名“到处查看”。

每次我需要显示通知列表或显示有多少新通知时,我都会查看所有相关表格,比较日期/等以了解自用户上次检查通知以来是否发生了新情况。

:与解决方案 1 相比,表格不算太大,没有信息“冗余”。

:我担心用户数量(~1k+),它会让服务器爆炸,因为它消耗资源/时间,编码/维护更困难。

您能告诉我您认为更好的方法以及原因吗?或者您有我没有想到的解决方案吗?

谢谢=)

<小时/>

编辑:假设我使用一个非常基本的数据库设计:用户有 friend ,可以做测验。

1 个用户列表、测验列表表,

1 个表格测验<->用户关系,

1 个表用户<->友谊用户。

每次用户访问自己的个人资料时,他都可以看到发生了什么:新测验<->用户关系、新用户<->用户关系等。您将如何设计这样的通知?

最佳答案

创建一个系统队列,添加到这个队列的每条消息都有一个“消费者”列表和内容。主消息泵处理每条消息并将消息发送给所有消费者。

假设两个人互相成为 friend 。您向主系统队列添加一条消息,表明 A 是 B 的好友,并且消费者既是 A 又是 B。当您的消息“泵”(处理器)看到此消息时,它会将其添加到 A 的队列和 B 的队列中。现在用户A和用户B收到一条新消息,他们是 friend 。反过来,每个用户都有一个消息处理器,因此当它看到一条名为“我是[某人]的 friend ”的消息时,它会将其处理为向 A 的 friend 可见的“墙”添加一个新条目,即“A 是 B 的 friend ” ”等

这过于简单化,但希望展示如何使用消息队列来实现此目的(非常相似的系统用作 Windows UI 框架),因此已经有一个现有示例,并且您可以使用大量同步消息队列模式。

休息由你来设计。

关于design-patterns - 设计模式: notification system,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1315991/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com