基于百万级别的站内信设计

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/js_sky/article/details/48497095
  基本上现在的网站都会有站内信功能,主要分为少量(10-999用户),中量(1000-99999用户),大量(100W用户)不同的站内信架构,消耗存储空间,和效率也是不同的。这次要设计的是基于百万级别的打的架构,主要作用是使站内信这个小的功能更加节约空间。
  首先介绍站内信的作用:
    第一 用户与用户之间沟通交流,如同邮件一般。
    第二 管理员给用户发送通知等
    第三 主要难点 管理员发消息给所有用户(100w用户的话,你该如何实现?)
  这里说一下思路:
   要设计三个表来存放数据:一个专门存储站内信内容的:MessageText  一个专门存放发送邮件的:MessageSend  一个专门存放用户邮件信息的:Message.这中间的管理就是 MessageText只存内容,MessageSend只存发送人和接收人以及MessageText的文本id,Message则存接收人id和MessageSend的id。基本上MessageSend起到一个桥梁作用。

   具体流程如下:
     1用户登录账号,首先看Message有没有自己id未读的站内信,
     2然后看MessageSend中有没有跟自己id相符合的或者系统消息(全部发送的,设置成接受id为0),如果有,则将其添加到Message表。
     3将Message表中站内信返回给用户。这里的列表就是用户的站内信信息了。
   最后说明一点,Message尽量设置设置一个是否删除字段来标示该信息已经接收到过了,用户删除只需要更改这个字段就可以了。否则容易造成用户自己是删除了,结果再次拉消息时又收到该信息。MessageSend要设置一个是否过期字段,标记过期后的站内信用户就不要获取了。
嗯,就是这样,欢迎提出意见。
  设计参考来源:http://www.cnblogs.com/x-xk/archive/2012/11/17/2770935.html
阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页