社交网站 消息处理

甴曱 云南云电同方科技有限公司 其他  2011-12-09 01:04:26
现处理一社交网站,按Boss的要求,用户数量要达到1KW以上,用户与用户之间要能即时通讯,组件应用、系统消息等所有的消息都要通过消息中心来统一处理。
为此,我们简单进行了一下计算,如果每条数据均存储的话,那么按100个组件给10,000,000用户发消息的话,数据量将会达到1,000,000,000条,还不考虑其他的。
在此基础上,需要对消息中心的数据存储来做考虑。

补充,现在公司内部有如下几种处理方式:
1、将消息统一放在一张表内,通过SQL自带的表分区方式来处理数据;
2、采用按用户分组的方式进行分表的方式进行存储,这样可以保证同一表格处理的数据量不会上亿;(该处理方式所产生的表大约有近十万张表,但每表的存储数据可以控制在1KW以内);
3、采用:hadoop+hive的方式来处理,但该方案还没有具体研究:(

请问各位:用何种方法处理要好些?还有没有更好的处理方案?
...全文
131 点赞 收藏 8
写回复
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
my328420969 2012-02-07
要考虑以后的维护,第一种把。
回复
haitao 2011-12-12
系统向用户发系统消息时,未在线的用户也会有一条记录的,以便他下次登录时,能看到历史的系统消息

【如果每条数据均存储的话,那么按100个组件给10,000,000用户发消息的话,数据量将会达到1,000,000,000条,】
应该是100条消息记录(msgid,body,when,...字段可能比较复杂)
100x10,000,000条 消息-用户关联 记录(uuid,userid,msgid。字段简单,但是记录数会急速增长。但是适合做分区)
回复
-晴天 2011-12-10
用户数,与消息数并非一回事.
有一个用户,并不一定会产生一条消息,产生消息的,是在线的用户.你们能做到1KW个用户,未必能做到平均在线有1W个用户.
先考虑同时在线1K个用户吧,以此作为基础,这已经很了不起了.如果你能应付得了1K个用户同时在线,那后续当用户数增加时,于增加硬件投入也来得及.
回复
mengmou 2011-12-09
如果按照第二种,将一个表拆分为n个表,将来无论是维护还是写查询会麻烦死的!
回复
mengmou 2011-12-09
肯定第一种啊,sql 的表分区也可以实现第二种说的按用户分组啊。
回复
rucypli 2011-12-09
预计数据很多就按第二种
回复
--小F-- 2011-12-09
用第一种吧。分区表还是不错的。
回复
-晴天 2011-12-09
只能说,很牛.
回复
发动态
发帖子
应用实例
创建于2007-09-28

2.7w+

社区成员

MS-SQL Server 应用实例
申请成为版主
社区公告
暂无公告