基于百万级别的站内信设计
基本上现在的网站都会有站内信功能,主要分为少量(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
基于百万级别的站内信设计相关推荐
- 单系统站内信设计概述(满足百万级信息)
基本功能 点到点的消息传送: 用户给用户 管理员给用户 点到面的消息传送 管理员给用户群 少量用户(10-999) 对于用户非常少的情况,没有必要深入的考虑数据库的优化,采用简单的表设计: 如表mes ...
- 百万级用户量的站内信设计
1. 方案描述 该方案用于系统站内信功能模块在百万级用户量情况下的效率问题,只是后台管理员给前台用户发送站内信,用户与用户之间的发送不在讨论内. 2. 方案详情 假设系统的用户量达到了200W,活跃用 ...
- mysql群发消息_百万级用户量的站内信群发数据库设计
随着WEB2.0的发展,用户之间的信息交互也变得十分庞大,而且实时性要求越来越高.现在很多SNS网站和一部分CMS网站都广泛地应用了站内信这一模块,这个看似简单的东西其实背后隐藏着很多需要设计师重视的 ...
- 单系统站内信数据库设计思路
第一版设计 需求 :单用户之间通信(融合了用户反馈需求) 数据库设计:Message内容和收发者存在一张表中 message表: 这里一条Message存两次,类似邮件服务. status:已读.未读 ...
- mysql群发消息_分享网站群发站内信数据库表设计
本文和大家分享一下网站站内信实现表设计的功能.需要的朋友可以参考下. "站内信"不同于电子邮件,电子邮件通过专门的邮件服务器发送.保存.而"站内信"是系统内的消 ...
- 网站群发站内信数据库表设计
"站内信"不同于电子邮件,电子邮件通过专门的邮件服务器发送.保存.而"站内信"是系统内的消息,说白了,"站内信"的实现,就是通过数据库插入记 ...
- 基于workerman实现的web消息推送站内信功能
流程说明 使用 web-msg-sender 作为 服务器监听程序. 客户端(浏览器)通过websocket连接 服务器监听程序. 服务器应用程序(后端) 通过curl访问 服务器监听程序,将需要推送 ...
- 网站系统 群发“站内信”的实现
在很多网站系统(如CMS系统,SNS系统等),都有"站内信"的功能. "站内信"不同于电子邮件,电子邮件通过专门的邮件服务器发送.保存.而"站内信&q ...
- 两年后,再议“站内信”的实现
两年前,万仓一黍在博客园发了两篇关于站内信的设计实现博文,<群发"站内信"的实现>.<群发"站内信"的实现(续)>,其中阐述了他关于站内 ...
最新文章
- python入门指南 小说-Python 入门指南
- springcloud(一)-初识
- Hypertable hbase hdfs kfs java与c++的较量
- js 定时网页点击_反爬 JS 逆向,扣代码解密分析
- leetcode76:最小覆盖字串(滑动窗口)
- ak和sk怎么认证 海康威视_公有云API的认证方式:AK/SK 简介
- Sql Server 指定列的乘积
- mysql存储业务日志_MySQL 日志管理
- lsb_release -a 查询Linux系统版本
- 不再支持Postman集合v1格式,无法直接导入
- [转]JavaScript程序编码规范
- 【生信进阶练习1000days】day2-学习summarized experimental data与Down stream analysis
- 从优秀到卓越 pdf_演讲口才培训:演讲能力是卓越领导者需要具备的能力
- Visual C++ 2010 Express 中文版的下载地址
- vue2服务端渲染 php,详解如何使用Vue2做服务端渲染
- [MATLAB]matlab鼠标操作画两圆,做出两圆的公切线
- 2022最新阿里P6+Java技术体系图
- 怎么从服务器上文件拷贝下来
- 下一代个性化推荐系统
- 如何压缩视频?教你几个简单的视频压缩方法
热门文章
- 20220425二次型复习
- springboot-2.2.5中自定义拦截器、静态资源映射、视图控制器和其他功能
- 批量合并excel工作表
- 如何批量合并Excel文件和工作表 - Excel合并器使用教程
- 什么是数据产品,怎么设计一个好用的数据产品
- 奥利给!2020 年必看的100 条忠告
- [Unity热更新]tolua# LuaFramework(七):lua使用DOTween
- LocalDateTime类型得两个日期相差得天数如何计算
- 验证手机号的c语言程序,手机号码正则表达式
- 二进制如何转十进制,十进制如何转二进