大型网站用户消息实现机制探讨
大家好:在大型网站中如何更好的实现用户消息机制,我想到的方法有以下两个:
1、用户的新消息计数保存在一个表中,而消息本身保存在另外的表中,这样的话,获取用户新消息数很快,获取消息列表也比较快,但是,在没有采用事务的前提下,可能存在数据不一致性,就是新消息数和消息记录对不上的情况,不用事务有响应速度的考虑。
2、新消息和历史消息分开保存,新消息数要每次count,消息总数和消息列表要关联新旧消息两个表,不过,这样保证了数据一致性,也不存在过期数据清理的问题。
在这里想跟大家探讨一下,有没有其他更好的实现办法,谢谢
都说高性能网站要 牺牲一致性啦!!!! 17 楼 beckrabbit 2009-11-12 做网站的话这种消息数 好友列表 好友更新的文章什么的都是缓存的使用了 18 楼 joyo 2009-11-12 凤舞凰扬 写道joyo 写道viei 写道你想复杂了,还是一张表搞定就行了,用户初次登陆count一下就行了,查到的东西选择性的放入cache,以后操作信息的时候对cache进行下同步处理
想好cache策略和兼顾前端服务器集群下的cache同步
你好,你的想法不错,曾经也想到过,但是如果消息的种类比较多的话,初次登陆的时候要count多个表,这样似乎会影响登录的速度。。。感谢你参与讨论
Viei的想法其实是一个比较正确的想法。joyo提出的另外一个问题,需要count多个表,但是joyo是否想过,你需要在用户界面对每种消息进行计数么?如果是有这样的需求,又会有许多种不同的消息么?(如果每种消息对应一个表的话)。
其实有很多人喜欢用数据库或者文件来处理类似的行为,这种行为一般被认为是非持久性行为。使用持久性操作去处理非持久性行为一般说来都是不正确的,也是系统中导致一致性冲突的主要根源。
谢谢凤舞凰扬的发言!你说的很好,尤其是“使用持久性操作去处理非持久性行为一般说来都是不正确的,也是系统中导致一致性冲突的主要根源”这句。我是需要在一个访问量比较大的页面上显示用户自己的多个不同的新消息数,每种消息是分别存放在不同的表中的; 19 楼 joyo 2009-11-12 beckrabbit 写道做网站的话这种消息数 好友列表 好友更新的文章什么的都是缓存的使用了
想想也应该是多使用缓存处理了,多谢参与 20 楼 whaosoft 2009-11-13 肯定用到缓存 21 楼 san586 2009-11-16 表设计还好有什么用,站内消息关键是怎么第一时间通知用户,这才是本质。