二进制消息管理的方案
发布日期:2021-09-18 01:36:55
浏览次数:1
分类:技术文章
本文共 657 字,大约阅读时间需要 2 分钟。
现在旺旺不管收到消息还是发送消息都要先将消息写入数据库,这样有两个问题:
1、数据库越来越大,导致写入速度越来越慢,影响系统性能。
2、数据库越来越大,随着记录数的增加,取最近聊天记录非常慢,导致自动打开聊天窗口并且自动显示最近聊天记录的时候窗口打开非常慢,严重影响用户体验。
3、由于存在过多的线程同时写库,又没有相应的多线程同步措施,导致数据库损坏的可能性增加。
由此,我在想,其实没有查询记录的需要(就是消息管理器的功能),数据库也没有存在的必要了。
是否可以采用二进制的方案呢?这样效率和速度肯定不成问题的。所以设计开发了二进制的消息管理方案:
1、最近的和新的消息采用二进制文件保存。2、和每个用户的聊天,每个群的聊天记录放在一个独立的文件里,发送和接收消息,去最近聊天记录都操作二进制文件。3、二进制文件的大小自动调整,是二进制文件的大小小于300条记录所需要的空间。4、为了控制产生过多的二进制文件,对二进制文件进行清理:策略是联系人和群一直保留,陌生人达到?天没有聊天就自动清除。5、为了使升级上来的用户能够看到以前的最近聊天记录,第一次从数据库取来最近聊天记录保存到二进制文件。这样解决了聊天性能的问题。
但是历史聊天记录显然是要的,查询功能也是要的。
所以又写了一个后台线程去异步保存聊天记录到消息数据库。
因为是异步的,所以对性能几乎没有影响;因为只有一个线程,所以数据库损坏的可能性大大减小。并且可以采用相应的策略去做备份和恢复,这些都在后台自动进行,不影响前台使用。周林
转载地址:https://blog.csdn.net/yuezu1026/article/details/4834960 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
第一次来,支持一个
[***.219.124.196]2024年04月19日 07时53分58秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
猿来绘Java-45-JDK8新特性可重复注解和类型注解
2019-04-29
猿来绘Java-46-Collection接口及其方法
2019-04-29
猿来绘Java-47- foreatch 增强for循环
2019-04-29
2021/4/27课堂总结和作业
2019-04-29
2021.4.28课堂总结和作业
2019-04-29
2021.4.29课堂总结
2019-04-29
2021.4.30课堂总结和作业
2019-04-29
需要吗?2000GB+学习视频教程 面试资料免费下载
2019-04-29
MySQL对已存在数据库表添加自增ID字段
2019-04-29
idea中的一些常用快捷键
2019-04-29
js校验表单后提交表单的三种方法总结【转载】
2019-04-29
欢迎使用CSDN-markdown编辑器
2019-04-29
a标签中href调用js的几种方法
2019-04-29
jstl标签详解
2019-04-29
Eclipse中使用SVN的使用
2019-04-29
JSON.parse和eval的区别
2019-04-29
JQuery中$.ajax()方法参数详解
2019-04-29
正则表达式的数字实例
2019-04-29
OGNL表达式struts2标签“%,#,$”的区别
2019-04-29