大家接触过的产品中都是如何实现站内信呢? 我首先想到的是根据接收方的唯一标识放在消息队列,阅读后持久化到数据库
1
taotaodaddy 2019-12-23 08:59:59 +08:00 via Android
同想知道主流实现方案是什么
|
2
b821025551b 2019-12-23 09:02:42 +08:00
这么做数据量岂不是一条消息就*用户数了。把用户分组,一组一个消息记录呢?
|
3
chenset 2019-12-23 09:03:12 +08:00
不是直接持久化在数据库. user id 有索引, 然后通过一个非索引的是否已读标识标记就好了吗?
|
4
mejee 2019-12-23 09:04:27 +08:00 via iPhone
大站解决方案有很多,分工明确。
小站一个消息一行数据库记录就 OK 了 |
5
sujin190 2019-12-23 09:46:35 +08:00
从系统结构来说,最好不要做成需要两次持久化的,维护太麻烦了,有异常恢复也太费劲,数据小直接放数据库就是了,根本无所谓,量大一点可以先写数据库,接着把未读消息放缓存或队列,有异常也很容易从数据库恢复
|
6
optional 2019-12-23 10:08:59 +08:00
总结起来就是两句话:单播写扩散,广播读扩散。
|
7
whileFalse 2019-12-23 11:22:13 +08:00
可以举出很多用消息队列纯属扯淡的理由……
1. 消息队列有过期时间 2. 无法在不查看消息的时候知道有多少条。 3. 为了显示消息,需要查两次:一次消息队列 第二次数据库。 但根本原因是:不应把“未读消息”等同于“未处理消息”。消息队列是存放未处理消息的没错,但那是为了给计算机系统削峰平谷用的,不是给人类当收件箱用的。 |
8
yumc OP |