[发明专利]消息存储方法及装置有效
申请号: | 201710203458.0 | 申请日: | 2017-03-30 |
公开(公告)号: | CN108509281B | 公开(公告)日: | 2021-05-04 |
发明(设计)人: | 李淼;石鹏 | 申请(专利权)人: | 北京云中融信网络科技有限公司 |
主分类号: | G06F9/54 | 分类号: | G06F9/54 |
代理公司: | 北京三高永信知识产权代理有限责任公司 11138 | 代理人: | 江崇玉 |
地址: | 100081 北京市海淀区万*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 消息 存储 方法 装置 | ||
本发明公开了一种消息存储方法及装置,属于信息技术领域。该方法包括:从私有内存中获取最晚存储的消息在消息容器中的第一位置标识,并从主内存中获取第一预期位置标识,该消息容器中的消息采用环形队列方式进行存储;当第一位置标识与第一预期位置标识相同时,将第二位置标识确定为待存储消息在消息容器中的位置标识;根据第二位置标识,将待存储消息存储到消息容器中。本发明采用环形队列的方式存储消息,降低了内存消耗,且在向消息容器中存储消息时,无需添加写锁,通过判断最晚存储的消息在主内存中的第一位置标识与第一预期位置标识是否相同,确定消息的存储位置,从而在保证存储位置与消息一一对应的前提下,提升了系统性能。
技术领域
本发明涉及信息技术领域,特别涉及一种消息存储方法及装置。
背景技术
在直播聊天室场景下,海量用户的消息瞬时并发量极高。为了保证用户能够获取到直播聊天室内的消息,需要将接收到的消息存储到消息容器中。其中,消息容器为内存中用于存储消息的数据结构。为了实现对用户请求的快速响应,消息容器通常具有固定的大小,可为直播聊天室存储指定条数的消息。
目前,服务器主要采用Key-Value的存储结构将消息存储在消息容器中。当接收到的一条消息时,服务器根据该消息的时间戳,确定该消息在消息容器中的存储位置,进而以时间戳为Key、消息内容为Value,将该消息存储到消息容器中该存储位置上。由于服务器在同一时间内可接收到多条消息,而每个存储位置只能存储一条消息,为了避免消息丢失,服务器在存储每条消息时,需要为消息容器添加写锁。
在实现本发明的过程中,发明人发现现有技术至少存在以下问题:
由于直播聊天室的消息并发量极大,采用Key-Value的存储结构存储消息时,内存消耗较大,且由于向消息容器中存储每条消息时,均需要添加写锁,而在高并发场景下频繁添加写锁,会大大降低系统性能。
发明内容
为了解决现有技术的问题,本发明实施例提供了一种消息存储方法及装置。所述技术方案如下:
一方面,提供了一种消息存储方法,所述方法包括:
当接收到待存储消息时,从私有内存中获取最晚存储的消息在消息容器中的第一位置标识,并从主内存中获取最晚存储的消息在消息容器中的第一预期位置标识,所述消息容器中的消息采用环形队列方式进行存储;
判断所述第一位置标识与所述第一预期位置标识是否相同;
如果所述第一位置标识与所述第一预期位置标识相同,则将第二位置标识确定为所述待存储消息在所述消息容器中的位置标识,所述第二位置标识由所述第一位置标识和预设步长确定;
根据所述第二位置标识,将待存储消息存储到所述消息容器中。
在本发明的另一个实施例中,所述判断所述第一位置标识与所述第一预期位置标识是否相同之后,还包括:
如果所述第一位置标识与所述第一预期位置标识不相同,则将所述私有内存中的所述第一位置标识更新为所述第一预期位置标识,并从所述主内存中获取最晚存储的消息在消息容器中的第二预期位置标识;
判断所述第一预期位置标识与所述第二预期位置标识是否相同;
如果所述第一预期位置标识与所述第二预期位置标识相同,则根据第三位置标识,将所述待存储消息存储到所述消息容器中,所述第三位置标识由所述第一预期位置标识和所述预设步长确定;
如果所述第一预期位置标识与所述第二预期位置标识不相同,则继续根据所述主内存中的预期位置标识对所述私有内存中的位置标识进行更新,直至从所述私有内存中获取到的目标位置标识与从所述主内存中获取到的预期位置标识相同,并根据第四位置标识,将所述待存储消息存储到所述消息容器中,所述第四位置标识由所述目标位置标识和所述预设步长确定。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京云中融信网络科技有限公司,未经北京云中融信网络科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201710203458.0/2.html,转载请声明来源钻瓜专利网。