[发明专利]一种即时通讯系统消息的储存及同步方法有效
申请号: | 202010476297.4 | 申请日: | 2020-05-29 |
公开(公告)号: | CN111669313B | 公开(公告)日: | 2022-05-03 |
发明(设计)人: | 黄继昌;李华;赵亚飞;于波 | 申请(专利权)人: | 广西东信互联科技有限公司 |
主分类号: | H04L51/04 | 分类号: | H04L51/04;H04L51/216;G06F16/22;G06F16/2458;G06F16/27 |
代理公司: | 北京天奇智新知识产权代理有限公司 11340 | 代理人: | 王雪 |
地址: | 530200 广西壮*** | 国省代码: | 广西;45 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 即时通讯 系统 消息 储存 同步 方法 | ||
本发明公开了一种即时通讯系统消息的储存及同步方法,属于即时通讯的技术领域。包括如下步骤:当消息主程序接收到消息存储的请求后,当主程序接收到消息同步请求后,主程序调用消息订阅器查询接口,查询接口查询到用户的订阅id数组,将订阅id数组拆分成4份,使用4个线程并发查询这4份订阅id所对应的消息;主程序遍历订阅id数组,调用订阅id配置器获取订阅id所对应的消息处理服务及分表;主程序调用消息处理服务从对应的分表中查询到订阅id对应的消息,并等待4个线程处理完后,合并所有的订阅消息并返回。本发明能够有效的降低了消息重复存储的量。
技术领域
本发明属于即时通讯的技术领域,尤其是一种即时通讯系统消息的储存及同步方法。
背景技术
传统大型即时通讯消息存储算法一般是使用写扩散的方式并对需要接收消息的用户id的做hash进行分库分表存储。此种方式需要消耗大量的存储空间,并且会重复存储消息。且分库算法是在应用服务中进行,同一个服务会产生大量的不同库的连接。部分算法设计会区分消息读扩散及写扩散的存储,但没有到底是使用明确阀值的控制,而是一概的将单聊消息进行写扩散存储,群聊消息进行读扩散存储,因此,在同步消息时,会增加同步消息的查询次数。
发明内容
本发明的发明目的是提供一种即时通讯系统消息的储存及同步方法,能够有效的降低了消息重复存储的量。
为达到上述目的,本发明所采用的技术方案是:
一种即时通讯系统消息的储存及同步方法,包括如下步骤:
S1、当消息主程序接收到消息存储的请求后,主程序调用消息订阅器的订阅对象创建接口,订阅器根据消息类型,生成一个订阅消息对象,订阅消息对象包含订阅id、扩散类型和消息内容;
S2、主程序根据订阅消息对象的订阅id,调用订阅id配置器,获取订阅id对应的消息处理服务地址及分表名称,订阅id配置器根据规则返回消息处理服务地址及分表名称;
S3、主程序根据消息服务地址调用消息处理服务将订阅消息对象存储到对应分表中;
S4、当主程序接收到消息同步请求后,主程序调用消息订阅器查询接口,查询接口查询到用户的订阅id数组,将订阅id数组拆分成4份,使用4个线程并发查询这4份订阅id所对应的消息;
S5、主程序遍历订阅id数组,调用订阅id配置器获取订阅id所对应的消息处理服务及分表;
S6、主程序调用消息处理服务从对应的分表中查询到订阅id对应的消息,并等待4个线程处理完后,合并所有的订阅消息并返回。
进一步的,所述步骤S1中,所述消息类型包括单聊信息和群聊信息,若为单聊信息则使用发送消息的用户id和接收消息的用户id作为订阅id,若是群聊消息,则使用群id作为订阅id。
进一步的,所述订阅id配置器结构包括:
订阅id类型配置,其用于配置不同订阅id类型的消息处理服务的名称、消息处理服务的最大数量、存储的分表名称、存储的分表最大数量;
消息处理服务实例配置,其用于记录每个消息处理服务当前所对应的订阅id总数;
消息处理服务分表实例配置,其用于记录每个消息处理服务中每张分表当前所对应的订阅id总数;以及
订阅id映射位置配置,其用于记录订阅id所对应的消息处理服务实例及分表实例。
进一步的,所述订阅id映射位置查询及生成包括以下步骤:
1)主程序根据订阅id,在订阅id映射位置配置中,查询其所对应的消息处理服务实例及分表实例,如果找到则返回,找不到则进入下一步骤;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于广西东信互联科技有限公司,未经广西东信互联科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202010476297.4/2.html,转载请声明来源钻瓜专利网。