类似豆瓣这样的网站通知系统如何设计?

发布于 2022-09-01 21:04:42 字数 409 浏览 12 评论 0

类似豆瓣这样场景比较复杂网站通知系统如何实现?
关注的用户发布的日志,相册,说说,小组话题都需要提醒.
自己的日志,小组话题,照片等被赞需要提醒.
加入的小组发布了新话题,自己的话题有了新回复需要提醒.
自己的相册,日志有了新评论需要提醒
用户加入小组申请,来自别的用户的好友申请需要提醒.

所有提醒都希望在网站页面header中分类显示
类似微博这样:
图片描述

这样复杂的通知系统如何设计呢?
哪位大大可以给一个设计思路,最好附带数据库表设计!感激不尽!
ps: 通知不需要实时推送,刷新页面后显示

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

千纸鹤 2022-09-08 21:04:42

一种思路是可以使用ajax轮询,隔一段时间自动向后台发送请求获取数据,还有一种思路是建立长连接,例如websocket。看你的需求以及需要实现的复杂程度了。

美胚控场 2022-09-08 21:04:42

数据建模 - 数据就是数据

首先,我没看过豆瓣的原代码,所以不知道它是怎么实现的。
从关系数据库设计的角度出发,数据库用来保存数据,记录事实,与“应用”(数据的使用)无关。所以,在设计数据库时,重点在数据本身。

例子 - 微博提醒的简单实现

根据你的需求,我可以给出一种实现方式。
举个简单的例子:用户发微博,关注该用户的人收到提醒。
需要保存的数据(需要记录的事实):用户,微博,关注,未读的微博

User (UserName, email, ...)
MicroBlog (UserName FK, PostTime, Content, ...)
UserFollower (UserName FK1, Follower FK2)
UnreadMicroBlog (UserName, Author FK, PostTime FK)

每个User发布0-n个MicroBlog
每个User关注0-n个User,每个User被0-n个User关注 (UserFollower实现多对多关系)
每个User有0-n个UnreadMicroBlog未阅读

在UnreadMicroBlog 中,AuthorPostTime 为外键,引用MicroBlog。加粗字体表示主键。

解释 - 应用程序和数据库的交互过程

当一个User发布了一条微博,向MicroBlog插入一条记录,向UnreadMicroBlog插入多条记录,每个该用户的关注者(记录在UserFollower中)对应一条记录。
这样,应用程序可以从UnreadMicroBlog中获取当前用户有哪些未读微博。当用户处理了一条未读微博,从UnreadMicroBlog中delete对应的记录。

当然,实际的系统比这个例子复杂得多,需要记录的数据也更多更复杂,但是只要按照正确的方法进行建模,就能设计出合理的数据库和整个应用。

静谧幽蓝 2022-09-08 21:04:42

我也思考过这个问题,目前的表结构式:
1、消息聚合表
2、分类消息表1
3、分类消息表2
4、分类消息表3

每当系统有消息发送时,先创建对应的消息表n记录,然后后台触发聚合表对相应的一类消息进行查询、更新过添加,比如更新某类的聚合总数,最终消息聚合表标题就是显示给用户的消息标题,用户也只需要查询聚合表就可以了,如:

X(共5条):你的申请已被通过(显示X单位给你发的最近一条消息);
Z(共2条):你的评论被a、b、d等8人点过了赞

以上消息点击进去后,就是该类的所有消息列表了

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文