`
钟增生
  • 浏览: 30842 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

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

阅读更多

 

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

  现表结构如下:

消息表
编号    ID    NUMBER
标题    TITLE    VARCHAR2(50)    50      
正文    CONTENTS    VARCHAR2(1000)   
最新创建人    FCU    VARCHAR2(50)    50     
更新人    LCU    VARCHAR2(50)    50 
创建时间    FCD    DATE          
最新更新时间    LCD    DATE   

信息有效截止时间 deadlinedate DATE     
删除标记    DELETE_TAG    CHAR(1)    1  

 

发送表

编号    ID    NUMBER
消息编号    ID    NUMBER 
发送状态    STATUS    NUMBER   
发送日期    SEND_DATE    DATE     
发送方式    SEND_TYPE    NUMBER 

 

 

消息容器


编号    ID    NUMBER     
站内信ID    MESSAGE_ID    NUMBER  
收件人ID    MEMBER_ID    NUMBER   
是否已读    READ_STATUS    NUMBER   


会员表

主键    id    NUMBER        
会员编号    u_number    NUMBER   
电子邮箱    u_email    VARCHAR2(200)    200    
密码    u_passwd    VARCHAR2(50)    50     
企业认证    company_admit    NUMBER(1)    1      
帐号禁用    帐号禁用    NUMBER(1)    1      
创建人    FCU    NUMBER  
最后更新人    LCU    NUMBER   
首次创建时间    FCD    DATE      
最后更新时间    LCD    DATE       
删除标记    DETELE_TAG    char(1)    1 
    


在尽量不改变表结构的前提下,改变一下程序写数据库的方式:
后台管理员发送一条站内信,接收对象为全体会员,系统往站内信表插入一条站内信,其中发送方式区分接收的对象(0为全体发送,1为只发送给注册会员,2为只发送给企业会员,3为指定会员发送),这样,发送给全体会员的一条站内信暂时只生成了一条数据。

前台会员登陆的时候,根据会员自身的会员类型(普通会员,企业会员)查询站内信表中属于自己的最新消息(根据自己所持消息的最新时间与消息表的发送时间做比对),往消息容器中插入自身与所持消息的关联数据,默认未未读,在前台会员点击某一条未读站内信的时候,将容器中的对应站内信状态改为已读。

如果后台管理员只指定发送站内信给某几个会员,则往站内信表插入一条站内信后,将这几个会员与该站内信的关联直接往消息容器中写关联,不需要前台会员取。
另:因为改变了发送接收方式,后台管理员只指定发送站内信给某几个会员,但是站内信状态未未发送,只是保存草稿,需要往站内信主表增加一个字段,保存指定会员的id串,用于关联此草稿与指定会员的关联,此处就要求发送给指定会员的数量不能太多,需要限制。
这样,百万级用户量的系统,活跃度为10%的用户登陆系统,只生成了10W的数据,用户活跃度越低,此方案效率越明显,如果是100%活跃度的话,此方案和现有方法无区别。

分享到:
评论

相关推荐

    站内信的数据库设计

    3. 大量级用户(上百万):数据库的设计和第二种情况一样,但是管理员发站内信的时候,只在 MessageText 插入站内信的主体内容。Message 里不插入记录。 四、站内信数据库设计的思路 数据库设计的思路主要考虑以下...

    站内信设计方案.pdf

    在运维平台的背景下,站内信设计的主要目的是提供一个内部沟通渠道,以增强平台的用户体验和效率。尽管用户通常依赖微信和邮件进行通信,但站内信作为运维平台的一个组成部分,仍然有其独特的价值。设计站内信时,应...

    站内信系统数据库设计.pdf

    总结来说,站内信系统数据库设计需根据用户量和系统需求进行灵活调整。从小规模到大规模,从单表结构到分表设计,再到优化插入策略,每一步都是为了提高系统性能和用户体验。同时,合理的状态管理不仅方便用户操作,...

    分享网站群发站内信数据库表设计

    用户给用户发送站内信;管理员给用户发送站内信。二:点到面的消息传送。管理员给用户(指定满足某一条件的用户群)群发消息。点到点的消息传送很容易实现,本文不再详述。下面将根据不同的情况,来说说“站内信”的...

    利用虾米网引流系列之批量关注发送站内信

    本教程的主体是"利用虾米网引流系列之批量关注发送站内信.exe",这可能是一个专门设计用于自动化执行这些任务的软件。通过运行这个程序,用户可以节省手动操作的时间,提高效率。但需要注意的是,任何自动化工具的...

    星宇插件系列之清空站内信.rar

    "星宇插件系列之清空站内信.rar"是一个针对特定网站或系统设计的插件,主要用于清理用户的站内消息。站内信通常是指在网站内部提供的私信或者消息功能,用户可以在其中与他人进行交流,而这个插件则提供了便捷的清空...

    基于Vue+Egg.js的JS全栈项目。动态菜单,RBAC权限模型,Websocket实现站内信。.zip

    这个项目以"基于Vue+Egg.js的JS全栈项目"为主题,涉及了动态菜单、RBAC(Role-Based Access Control)权限模型以及WebSocket实现的站内信功能,下面将对这些知识点进行详细解释。 首先,Vue.js是一个轻量级的前端...

    如何设计一个站内消息系统?.rar

    - **消息分类**:支持不同类型的站内消息,如系统通知、好友私信、群组讨论等。 - **消息存储**:消息应被妥善保存,用户可以随时查看历史记录。 - **消息搜索**:提供搜索功能,让用户快速找到特定的对话或关键词。...

    知名社区19楼超简单省事引流大大滴

    2. **内容设计**:站内信的内容应该具有吸引力,可以是有趣的话题、优惠信息或者有价值的内容分享,同时,内容要简洁明了,避免过于冗长和广告味过重。 3. **合理安排发送时间**:根据19楼用户的活跃时段选择合适的...

    CI框架编写的私信系统

    - **SELECT**:查询私信,可能按收件人、发件人、时间戳等条件筛选,或者获取特定用户的未读私信数量。 - **UPDATE**:更新私信状态,如标记已读或删除私信。 - **DELETE**:根据私信ID或其他条件删除私信。 **4. ...

    基于Java实现即时通信系统

    6. **分布式部署**:随着用户量的增加,单台服务器可能无法承载所有连接,这时可以采用负载均衡和集群部署。Java的Netty框架提供了一种高效的异步事件驱动模型,适合构建高并发、高性能的分布式即时通信系统。 7. *...

    数据库设计 数据库建模

    - 创建站内信表(Message),包含字段如MessageID(主键)、SenderID(外键)、ReceiverID(外键)、Content等。 - 实现消息的删除功能,通常是在表中增加一个标志位来标记是否已被删除。 ##### 2.4 会员权限管理...

    电商项目:优惠券系统设计

    对于大规模用户群发操作,可通过异步处理和消息队列来批量插入消息表`message`,实现站内信通知。 总的来说,电商项目的优惠券系统设计需要兼顾业务逻辑的复杂性和技术实现的稳定性。合理的数据模型、严谨的业务...

    毕业设计源码BBS在线答疑系统

    5. **通知系统**:系统应具备消息通知功能,当用户收到新的回复或私信时,能通过邮件或站内通知提醒用户。 【进一步学习和优化】 虽然这个系统界面简单,但仍有优化空间。例如,可以增加用户界面的美观度,引入更...

    Discuz!多用户论坛自助建站系统

    - **统计报表**:内置统计工具,为管理员提供用户行为、访问量等数据,助力运营决策。 - **SEO优化**:支持关键词设置、URL重写,提高论坛在搜索引擎中的可见性。 7. **移动端支持** - **移动适配**:自动识别...

    ASP+ACCESS学生论坛设计与实现(源代码+论文+开题报告).zip

    站内消息通知,提醒用户有新的回复或私信。 论文部分可能详细阐述了项目的设计思路、技术选型原因、数据库表结构设计、关键功能的实现过程以及系统测试等方面。开题报告则会介绍项目的背景、目标、预期成果和研究...

    论坛模块设计的源代码

    这需要一套消息推送系统,可以是邮件、站内消息或者通过API集成第三方通知服务。 6. 社交功能:论坛往往具有社交元素,如好友系统、关注功能、收藏夹等,这些可以增加用户间的互动和参与度。 7. 数据存储与查询...

    运营级技术导航系统网址导航系统源码-附带新秀导航全站数据

    2. **搜索功能**:提供站内搜索,让用户能快速找到所需链接。 3. **自定义收藏**:用户可以保存个人喜欢的网址,创建自己的收藏夹。 4. **广告管理**:支持添加和管理广告位,为网站运营带来收益。 5. **数据分析**...

Global site tag (gtag.js) - Google Analytics