基本上现在的网站都会有站内信功能,主要分为少量(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

基于百万级别的站内信设计相关推荐

  1. 单系统站内信设计概述(满足百万级信息)

    基本功能 点到点的消息传送: 用户给用户 管理员给用户 点到面的消息传送 管理员给用户群 少量用户(10-999) 对于用户非常少的情况,没有必要深入的考虑数据库的优化,采用简单的表设计: 如表mes ...

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

    1. 方案描述 该方案用于系统站内信功能模块在百万级用户量情况下的效率问题,只是后台管理员给前台用户发送站内信,用户与用户之间的发送不在讨论内. 2. 方案详情 假设系统的用户量达到了200W,活跃用 ...

  3. mysql群发消息_百万级用户量的站内信群发数据库设计

    随着WEB2.0的发展,用户之间的信息交互也变得十分庞大,而且实时性要求越来越高.现在很多SNS网站和一部分CMS网站都广泛地应用了站内信这一模块,这个看似简单的东西其实背后隐藏着很多需要设计师重视的 ...

  4. 单系统站内信数据库设计思路

    第一版设计 需求 :单用户之间通信(融合了用户反馈需求) 数据库设计:Message内容和收发者存在一张表中 message表: 这里一条Message存两次,类似邮件服务. status:已读.未读 ...

  5. mysql群发消息_分享网站群发站内信数据库表设计

    本文和大家分享一下网站站内信实现表设计的功能.需要的朋友可以参考下. "站内信"不同于电子邮件,电子邮件通过专门的邮件服务器发送.保存.而"站内信"是系统内的消 ...

  6. 网站群发站内信数据库表设计

    "站内信"不同于电子邮件,电子邮件通过专门的邮件服务器发送.保存.而"站内信"是系统内的消息,说白了,"站内信"的实现,就是通过数据库插入记 ...

  7. 基于workerman实现的web消息推送站内信功能

    流程说明 使用 web-msg-sender 作为 服务器监听程序. 客户端(浏览器)通过websocket连接 服务器监听程序. 服务器应用程序(后端) 通过curl访问 服务器监听程序,将需要推送 ...

  8. 网站系统 群发“站内信”的实现

    在很多网站系统(如CMS系统,SNS系统等),都有"站内信"的功能. "站内信"不同于电子邮件,电子邮件通过专门的邮件服务器发送.保存.而"站内信&q ...

  9. 两年后,再议“站内信”的实现

    两年前,万仓一黍在博客园发了两篇关于站内信的设计实现博文,<群发"站内信"的实现>.<群发"站内信"的实现(续)>,其中阐述了他关于站内 ...

最新文章

  1. python入门指南 小说-Python 入门指南
  2. springcloud(一)-初识
  3. Hypertable hbase hdfs kfs java与c++的较量
  4. js 定时网页点击_反爬 JS 逆向,扣代码解密分析
  5. leetcode76:最小覆盖字串(滑动窗口)
  6. ak和sk怎么认证 海康威视_公有云API的认证方式:AK/SK 简介
  7. Sql Server 指定列的乘积
  8. mysql存储业务日志_MySQL 日志管理
  9. lsb_release -a 查询Linux系统版本
  10. 不再支持Postman集合v1格式,无法直接导入
  11. [转]JavaScript程序编码规范
  12. 【生信进阶练习1000days】day2-学习summarized experimental data与Down stream analysis
  13. 从优秀到卓越 pdf_演讲口才培训:演讲能力是卓越领导者需要具备的能力
  14. Visual C++ 2010 Express 中文版的下载地址
  15. vue2服务端渲染 php,详解如何使用Vue2做服务端渲染
  16. [MATLAB]matlab鼠标操作画两圆,做出两圆的公切线
  17. 2022最新阿里P6+Java技术体系图
  18. 怎么从服务器上文件拷贝下来
  19. 下一代个性化推荐系统
  20. 如何压缩视频?教你几个简单的视频压缩方法

热门文章

  1. 20220425二次型复习
  2. springboot-2.2.5中自定义拦截器、静态资源映射、视图控制器和其他功能
  3. 批量合并excel工作表
  4. 如何批量合并Excel文件和工作表 - Excel合并器使用教程
  5. 什么是数据产品,怎么设计一个好用的数据产品
  6. 奥利给!2020 年必看的100 条忠告
  7. [Unity热更新]tolua# LuaFramework(七):lua使用DOTween
  8. LocalDateTime类型得两个日期相差得天数如何计算
  9. 验证手机号的c语言程序,手机号码正则表达式
  10. 二进制如何转十进制,十进制如何转二进