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 里不插入记录。 四、站内信数据库设计的思路 数据库设计的思路主要考虑以下...
系统设计方面,站内信功能主要包含发送站内信、获取站内信列表、获取未读站内信数量、已阅和删除操作。 1. 发送站内信:通过POST请求接收消息内容,校验消息长度,然后将消息插入数据库中。 2. 获取站内信列表:...
总结来说,站内信系统数据库设计需根据用户量和系统需求进行灵活调整。从小规模到大规模,从单表结构到分表设计,再到优化插入策略,每一步都是为了提高系统性能和用户体验。同时,合理的状态管理不仅方便用户操作,...
用户给用户发送站内信;管理员给用户发送站内信。二:点到面的消息传送。管理员给用户(指定满足某一条件的用户群)群发消息。点到点的消息传送很容易实现,本文不再详述。下面将根据不同的情况,来说说“站内信”的...
站内信功能允许用户直接与其他人进行私密交流,这使得推广信息、新歌发布、个人动态等消息能够直接传达给目标用户。使用站内信时,内容的精准性和个性化显得尤为重要,它可以帮助营销人员与潜在客户建立起更为紧密的...
"星宇插件系列之清空站内信.rar"是一个针对特定网站或系统设计的插件,主要用于清理用户的站内消息。站内信通常是指在网站内部提供的私信或者消息功能,用户可以在其中与他人进行交流,而这个插件则提供了便捷的清空...
这个项目以"基于Vue+Egg.js的JS全栈项目"为主题,涉及了动态菜单、RBAC(Role-Based Access Control)权限模型以及WebSocket实现的站内信功能,下面将对这些知识点进行详细解释。 首先,Vue.js是一个轻量级的前端...
- **消息分类**:支持不同类型的站内消息,如系统通知、好友私信、群组讨论等。 - **消息存储**:消息应被妥善保存,用户可以随时查看历史记录。 - **消息搜索**:提供搜索功能,让用户快速找到特定的对话或关键词。...
2. **内容设计**:站内信的内容应该具有吸引力,可以是有趣的话题、优惠信息或者有价值的内容分享,同时,内容要简洁明了,避免过于冗长和广告味过重。 3. **合理安排发送时间**:根据19楼用户的活跃时段选择合适的...
- **SELECT**:查询私信,可能按收件人、发件人、时间戳等条件筛选,或者获取特定用户的未读私信数量。 - **UPDATE**:更新私信状态,如标记已读或删除私信。 - **DELETE**:根据私信ID或其他条件删除私信。 **4. ...
6. **分布式部署**:随着用户量的增加,单台服务器可能无法承载所有连接,这时可以采用负载均衡和集群部署。Java的Netty框架提供了一种高效的异步事件驱动模型,适合构建高并发、高性能的分布式即时通信系统。 7. *...
- 创建站内信表(Message),包含字段如MessageID(主键)、SenderID(外键)、ReceiverID(外键)、Content等。 - 实现消息的删除功能,通常是在表中增加一个标志位来标记是否已被删除。 ##### 2.4 会员权限管理...
对于大规模用户群发操作,可通过异步处理和消息队列来批量插入消息表`message`,实现站内信通知。 总的来说,电商项目的优惠券系统设计需要兼顾业务逻辑的复杂性和技术实现的稳定性。合理的数据模型、严谨的业务...
5. **通知系统**:系统应具备消息通知功能,当用户收到新的回复或私信时,能通过邮件或站内通知提醒用户。 【进一步学习和优化】 虽然这个系统界面简单,但仍有优化空间。例如,可以增加用户界面的美观度,引入更...
- **统计报表**:内置统计工具,为管理员提供用户行为、访问量等数据,助力运营决策。 - **SEO优化**:支持关键词设置、URL重写,提高论坛在搜索引擎中的可见性。 7. **移动端支持** - **移动适配**:自动识别...
此外,普通用户还能够对涉嫌抄袭的行为进行举报,发表对设计作品的评论,收发站内信,管理自己的收藏夹,并查询登录次数和在线时长。这些功能的设置旨在增强用户之间的互动性,同时丰富系统的功能,使之成为一个实用...
系统主要功能模块包括:招聘管理模块、公告政策管理模块、站内信管理模块、系统管理模块和统计打印功能模块。每个模块各司其职,共同构成了一套完善的人才招聘管理系统。 1. 招聘管理模块 招聘管理模块是系统的...
站内消息通知,提醒用户有新的回复或私信。 论文部分可能详细阐述了项目的设计思路、技术选型原因、数据库表结构设计、关键功能的实现过程以及系统测试等方面。开题报告则会介绍项目的背景、目标、预期成果和研究...