百万级用户量的 站内信设计

1. 方案描述 该方案用于系统站内信功能模块在百万级用户量情况下的效率问题,只是后台管理员给前台用户发送站内信,用户与用户之间的发送不在讨论内。 2. 方案详情 假设系统的用户量达到了200W,活跃用户为10W,系统后台管理员要给全体用户发送一条感谢信,如果按照之前的存储方式,消息队列需要插入200W条数据,可是除了活跃的10W用户,其他用户都忘了自己有该网站的账号,他都有可能不再登陆该网站了,数据库保存的消息队列无意义了。

在尽量不改变表结构的前提下,改变一下程序写数据库的方式:

后台管理员发送一条站内信,接收对象为全体会员,系统往站内信表插入一条站内信,

其中发送方式区分接收的对象(0为全体发送,1为只发送给注册会员,2为只发送给企业会员,3为指定会员发送),

这样,发送给全体会员的一条站内信暂时只生成了一条数据。

前台会员登陆的时候,

根据会员自身的会员类型(普通会员,企业会员)查询站内信表中属于自己的最新消息(根据自己所持消息的最新时间与消息表的发送时间做比对),

往消息容器中插入自身与所持消息的关联数据,默认未未读,在前台会员点击某一条未读站内信的时候,

将容器中的对应站内信状态改为已读。 如果后台管理员只指定发送站内信给某几个会员,

则往站内信表插入一条站内信后,

将这几个会员与该站内信的关联直接往消息容器中写关联,不需要前台会员取。

另:因为改变了发送接收方式,后台管理员只指定发送站内信给某几个会员,但是站内信状态未未发送,只是保存草稿,需要往站内信主表增加一个字段,保存指定会员的id串,

用于关联此草稿与指定会员的关联,此处就要求发送给指定会员的数量不能太多,需要限制。

这样,百万级用户量的系统,活跃度为10%的用户登陆系统,只生成了10W的数据,用户活跃度越低,此方案效率越明显,如果是100%活跃度的话,此方案和现有方法无区别。

转载于:https://my.oschina.net/0815/blog/63338

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值