二进制消息管理的方案
发布日期: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 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:UI那点事—从我的经历看GUI发展
下一篇:一个大型MySQL分布式系统诞生

发表评论

最新留言

第一次来,支持一个
[***.219.124.196]2024年04月19日 07时53分58秒