CN109617789B - 会话消息的处理方法、系统、电子设备和存储介质 - Google Patents

会话消息的处理方法、系统、电子设备和存储介质 Download PDF

Info

Publication number
CN109617789B
CN109617789B CN201811633856.7A CN201811633856A CN109617789B CN 109617789 B CN109617789 B CN 109617789B CN 201811633856 A CN201811633856 A CN 201811633856A CN 109617789 B CN109617789 B CN 109617789B
Authority
CN
China
Prior art keywords
session
message
code
receiving
message queue
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201811633856.7A
Other languages
English (en)
Other versions
CN109617789A (zh
Inventor
李平
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Manbang Information Technology Co.,Ltd.
Original Assignee
Man Bang Information Consulting Co ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Man Bang Information Consulting Co ltd filed Critical Man Bang Information Consulting Co ltd
Priority to CN201811633856.7A priority Critical patent/CN109617789B/zh
Publication of CN109617789A publication Critical patent/CN109617789A/zh
Application granted granted Critical
Publication of CN109617789B publication Critical patent/CN109617789B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L51/00User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
    • H04L51/04Real-time or near real-time messaging, e.g. instant messaging [IM]

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer And Data Communications (AREA)

Abstract

本申请提供会话消息的处理方法、系统、电子设备和存储介质,用于为即时通讯的会话消息提供存储、查询等操作。方法包括:接收会话消息,获取会话编码和各接收方编码,生成会话编码的新会话队列和各接收方编码的新消息队列;基于会话编码生成发件顺序编码,基于各接收方编码生成收件顺序编码;根据会话编码和发件顺序编码生成新会话队列的发件行键值,以发件行键值为标识将新会话队列存储至发件消息队列;根据各接收方编码和对应的收件顺序编码生成各新消息队列的收件行键值,以各收件行键值为标识将各新消息队列存储至对应的收件消息队列。本申请为会话消息的每个参与方生成新消息队列并存储至对应收件消息队列,提高存储效率,实现高效查询。

Description

会话消息的处理方法、系统、电子设备和存储介质
技术领域
本申请涉及即时通讯技术领域,具体地说,涉及一种会话消息的处理方法、系统、电子设备和存储介质。
背景技术
对于IM(Instant Messaging,即时通讯)的会话消息,存储和查询非常重要。随着业务不断的扩张,数据多结构变化,流量持续增长,最终面临着海量数据的存储和查询。
现有的IM会话消息存储通常基于TIMELINE(时间轴)架构来设计存储,常用的数据库有MYSQL数据库和MONGO数据库。MYSQL数据库只支撑主从架构,做IM存储时需要分库分表,后续扩容能力弱。MONGO支撑NOSQL(非关系型数据库)松散的表结构,高效存储,支持分片,但是由于写锁的关系,数据写吞吐率不高,不能友好地支持TIMLINE数据结构。
需要说明的是,在上述背景技术部分公开的信息仅用于加强对本申请的背景的理解,因此可以包括不构成对本领域普通技术人员已知的现有技术的信息。
发明内容
有鉴于此,本申请提供一种会话消息的处理方法、系统、电子设备和存储介质,解决海量会话消息的存储、查询等问题。
根据本申请的一个方面,提供一种会话消息的处理方法,包括:接收会话消息,获取所述会话消息的会话编码和各接收方编码,生成所述会话编码的新会话队列,和各接收方编码的新消息队列;基于所述会话编码生成所述新会话队列的发件顺序编码,基于各接收方编码生成各新消息队列的收件顺序编码;根据所述会话编码和所述发件顺序编码生成所述新会话队列的发件行键值,以所述发件行键值为标识,按所述发件顺序编码将所述新会话队列存储至所述会话编码对应的发件消息队列;根据各接收方编码和对应的收件顺序编码生成各新消息队列的收件行键值,以各收件行键值为标识,按对应的收件顺序编码将各新消息队列存储至其接收方编码对应的收件消息队列。
优选地,上述的处理方法中,所述会话编码标识两个会话方之间的会话消息,或由多个会话方组成的群组之间的会话消息。
优选地,上述的处理方法中,所述会话消息包含一条或多条消息,所述会话队列包含所述会话消息中对应所述会话编码的所有消息,各新消息队列包含所述会话消息中对应各接收方编码的待接收消息。
优选地,上述的处理方法中,各发件消息队列存储于HBASE数据库的发件箱,各收件消息队列存储于所述HBASE数据库的收件箱;所述HBASE数据库包括多个存储单元,间隔预设时段的会话消息存储于同一存储单元。
优选地,上述的处理方法还包括:将各收件消息队列的未读消息指针标记为各收件消息队列的新消息队列的收件顺序编码。
优选地,上述的处理方法还包括:接收查询请求,获取所述查询请求的查询行键值,根据所述查询行键值获取待查询的接收方编码和收件顺序编码区间;定位所述待查询的接收方编码对应的收件消息队列,获取该收件消息队列中位于所述待查询的收件顺序编码区间的消息队列;以及将位于所述待查询的收件顺序编码区间的消息队列标记为已读消息,并将该收件消息队列的未读消息指针标记为该收件消息队列的未读消息队列的最小收件顺序编码。
优选地,上述的处理方法还包括:将存储于同一存储单元的查询行键值对应的查询请求合并成批量查询请求,根据所述批量查询请求批量获取该存储单元中对应的消息队列;以及将对应的消息队列批量标记为已读消息,并批量标记各收件消息队列的未读消息指针。
优选地,上述的处理方法中,基于所述会话编码生成所述新会话队列的发件顺序编码的步骤包括:定位所述会话编码对应的发件消息队列,获取该发件消息队列中已存会话队列的最大发件顺序编码;将该最大发件顺序编码顺延一单位编码,形成所述新会话队列的发件顺序编码。
优选地,上述的处理方法中,基于各接收方编码生成各新消息队列的收件顺序编码的步骤包括:定位各接收方编码对应的收件消息队列,获取各收件消息队列中已存消息队列的最大收件顺序编码;将各最大收件顺序编码顺延一单位编码,形成各新消息队列的收件顺序编码。
根据本申请的另一个方面,提供一种会话消息的处理系统,包括:消息接收模块,用于接收会话消息,获取所述会话消息的会话编码和各接收方编码,生成所述会话编码的新会话队列,和各接收方编码的新消息队列;顺序编码生成模块,用于基于所述会话编码生成所述新会话队列的发件顺序编码,基于各接收方编码生成各新消息队列的收件顺序编码;发件存储模块,用于根据所述会话编码和所述发件顺序编码生成所述新会话队列的发件行键值,以所述发件行键值为标识,按所述发件顺序编码将所述新会话队列存储至所述会话编码对应的发件消息队列;收件存储模块,用于根据各接收方编码和对应的收件顺序编码生成各新消息队列的收件行键值,以各收件行键值为标识,按对应的收件顺序编码将各新消息队列存储至其接收方编码对应的收件消息队列。
根据本申请的另一个方面,提供一种电子设备,包括:处理器;以及存储器,用于存储可执行指令;其中,所述处理器配置为经由执行所述可执行指令来执行上述的会话消息的处理方法的步骤。
根据本申请的另一个方面,提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述的会话消息的处理方法的步骤。
本申请与现有技术相比的有益效果在于:
为会话消息的每个接收方生成新消息队列,存储至每个接收方的收件消息队列,通过收件消息队列可以快速查询对应每个接收方的所有会话消息,提高查询效率;
所有会话消息均存储于HBASE数据库,HBASE数据库包括发件箱和收件箱,发件箱存储所有的会话消息,收件箱存储所有接收方的收件消息队列,基于HBASE顺序存储特性,实现海量会话消息的分布式存储;
邻近的会话消息存储于HBASE数据库的同一存储单元,便于批量查询,提高并发能力。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本申请。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示出本申请实施例中一种会话消息的处理方法的步骤示意图;
图2示出本申请实施例中存储会话消息的HBASE数据库的架构示意图;
图3示出本申请实施例中一种会话消息的处理系统的模块示意图;
图4示出本申请实施例中一种电子设备的示意图;
图5示出本申请实施例中一种计算机可读存储介质的示意图。
具体实施方式
现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的实施方式。相反,提供这些实施方式使得本申请将全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。在图中相同的附图标记表示相同或类似的结构,因而将省略对它们的重复描述。
本申请基于TIMELINE数据结构,为IM会话消息提供存储和查询方案,通过HBASE(Hadoop Database,是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统)数据库,采用ROWKEY(行键)为索引进行会话消息的存储,客户端采用go语言开发,对HBASE的数据进行操作,按REGIONSERVER(HBASE的组件,负责数据的读写)批量处理,实现高效存储查询。
图1示出实施例中会话消息的处理方法的步骤示意图,参照图1所示,在一些实施例中,本申请的会话消息的处理方法包括:
步骤S10、接收会话消息,获取会话消息的会话编码和各接收方编码,生成会话编码的新会话队列,和各接收方编码的新消息队列。
本实施例以一组会话消息为例进行说明,在实际应用中,可以同时接收处理多组会话消息。所述的一组会话消息是指由相同会话编码(即会话ID)标识的两个会话方之间的会话消息,或由多个会话方组成的群组之间的会话消息。例如,会话方A和会话方B之间进行通讯的所有会话消息均采用会话编码(如MA-B)进行标识。会话方A与另一个会话方C进行通讯的会话消息由另一个会话编码(如MA-C)进行标识。再如,某一群组的会话方(如包括会话方D、会话方E、会话方F)之间的会话消息由会话编码(如MD+E+F)进行标识,该会话编码(MD+E+F)与该群组相对应,并不会随群组内会话方新增或退出而改变,该群组内的所有会话消息均由该会话编码标识。
会话消息的各会话方均可以作为接收方,接收方编码可以是会话方的用户账号,具有唯一标识性。一组会话消息包含一条或多条消息,新会话队列包含该会话消息中对应会话编码的所有消息,各新消息队列包含该会话消息中对应各接收方编码的待接收消息。新会话队列即新会话TIMELINE,按时序顺序显示该组会话消息中对应会话编码的每条消息,各新消息队列即各新消息TIMELINE,按时序顺序显示该组会话消息中对应各接收方编码的每条消息。也即一组会话消息中,与会话编码相关的所有消息均按时序排列形成该会话编码的新会话队列,与每个接收方编码相关的待接收消息均按时序排列形成该接收方编码的新消息队列。
参照图2所示存储会话消息的HBASE数据库的架构示意图。以会话方A和会话方B之间进行通讯为例。接收会话方A和会话方B之间的会话消息,获取的会话消息的会话编码即MA-B,各接收方编码即会话方A的接收方编码(如RA)和会话方B的接收方编码(如RB)。该组会话消息共包括4条消息,分别是会话方A发送至会话方B的消息a11、会话方B发送至会话方A的消息b11、会话方B发送至会话方A的消息b12、以及会话方A发送至会话方B的消息a12。根据该组会话消息,生成的MA-B的新会话队列(即MA-B的新会话TIMELINE)即图示的“a11→b11→b12→a12”,RA的新消息队列(即RA的新消息TIMELINE)即“b11→b12”,RB的新消息队列(即RB的新消息TIMELINE)即“a11→a12”。
步骤S20、基于会话编码生成新会话队列的发件顺序编码,基于各接收方编码生成各新消息队列的收件顺序编码。
存储会话编码的新会话队列时,需要将新会话队列与该会话编码对应的已存会话队列按时序顺序排序,以使该会话编码下有序存储大量的会话队列,并方便查询。同理,存储每个接收方编码的新消息队列时,需将新消息队列与该接收方编码对应的已存消息队列按时序顺序排序,以使每个接收方编码下有序存储大量的消息队列,并方便查询。
在一些实施例中,基于会话编码生成新会话队列的发件顺序编码的步骤包括:定位会话编码对应的发件消息队列,获取该发件消息队列中已存会话队列的最大发件顺序编码;将该最大发件顺序编码顺延一单位编码,形成会话队列的发件顺序编码。
以图2所示会话方A和会话方B之间的会话消息为例。基于会话编码MA-B生成新会话队列“a11→b11→b12→a12”的发件顺序编码的步骤包括:定位MA-B对应的发件消息队列(如标识为SA-B),获取SA-B中已存会话队列的最大发件顺序编码(如Sid10)。将该最大发件顺序编码Sid10顺延一单位编码(单位编码可根据需要设定,本实施例中如设定为Sid1),则形成新会话队列“a11→b11→b12→a12”的发件顺序编码为Sid10+Sid1=Sid11。
其中,Sid11用于标记新会话队列“a11→b11→b12→a12”中第一条信息(即消息a11)的发件顺序,消息a11的后续消息需在Sid11的基础上按照单位编码依次顺延。如消息b11的发件顺序编码标记为Sid12,消息b12的发件顺序编码标记为Sid13,消息a12的发件顺序编码标记为Sid14。
在一些实施例中,基于各接收方编码生成各新消息队列的收件顺序编码的步骤包括:定位各接收方编码对应的收件消息队列,获取各收件消息队列中已存消息队列的最大收件顺序编码;将各最大收件顺序编码顺延一单位编码,形成各新消息队列的收件顺序编码。
以图2所示会话方A和会话方B之间的会话消息为例。基于接收方编码RA生成新消息队列“b11→b12”的收件顺序编码的步骤包括:定位RA对应的收件消息队列(如标识为SA),获取该收件消息队列SA中已存消息队列的最大收件顺序编码(如Sid20)。将该最大收件顺序编码Sid20顺延一单位编码(如Sid1),形成新消息队列“b11→b12”的收件顺序编码为Sid20+Sid1=Sid21。
其中,Sid21用于标记新消息队列“b11→b12”中第一条信息(即消息b11)的发件顺序,消息b11的后续消息需在发件顺序编码Sid21的基础上按照单位编码依次顺延。如消息b12的发件顺序编码标记为Sid22。
同理,基于接收方编码RB生成新消息队列“a11→a12”的收件顺序编码的步骤包括:定位RB对应的收件消息队列(如标识为SB),获取SB中已存消息队列的最大收件顺序编码(如Sid30)。将该最大收件顺序编码Sid30顺延一单位编码(如Sid1),形成新消息队列“a11→a12”的收件顺序编码为Sid30+Sid1=Sid31。
其中,Sid31用于标记新消息队列“a11→a12”中第一条信息(即消息a11)的发件顺序,消息a11的后续消息需在发件顺序编码Sid31的基础上按照单位编码依次顺延。如消息a12的发件顺序编码标记为Sid32。
步骤S30、根据会话编码和发件顺序编码生成新会话队列的发件行键值,以发件行键值为标识,按发件顺序编码将新会话队列存储至会话编码对应的发件消息队列。步骤S40、根据各接收方编码和对应的收件顺序编码生成各新消息队列的收件行键值,以各收件行键值为标识,按对应的收件顺序编码将各新消息队列存储至其接收方编码对应的收件消息队列。
其中,各发件消息队列存储于HBASE数据库的发件箱,各收件消息队列存储于所述HBASE数据库的收件箱。HBASE数据库包括多个存储单元(本实施例中HBASE数据库的存储单元即REGIONSERVER),间隔预设时段的会话消息存储于同一存储单元。
参照图2所示,用于存储会话消息的HBASE数据库包括发件箱和收件箱,发件箱内各发件消息队列用于存储对应各会话编码的会话消息;收件箱内各收件消息队列用于存储对应各接收方编码的待接收消息。HBASE数据库包括REGIONSERVER 1、REGIONSERVER 2和REGIONSERVER 3,间隔预设时段的会话消息可以存储于HBASE数据库的同一REGIONSERVER,方便批量操作。例如上述的新会话TIMELINE“a11→b11→b12→a12”、新消息TIMELINE“b11→b12”和新消息TIMELINE“a11→a12”均存储于REGIONSERVER 1中。
以将新会话TIMELINE“a11→b11→b12→a12”存储至对应的发件消息队列为例。根据新会话TIMELINE“a11→b11→b12→a12”的会话编码MA-B和发件顺序编码Sid11生成新会话TIMELINE“a11→b11→b12→a12”的发件行键值,即发件ROWKEY(如MA-B→Sid11),以发件ROWKEY MA-B→Sid11为标识,按发件顺序编码Sid11将新会话TIMELINE“a11→b11→b12→a12”存储至会话编码MA-B对应的发件消息队列SA-B。也即将新会话TIMELINE“a11→b11→b12→a12”存储至SA-B的队尾,使发件消息队列SA-B中发件顺序编码Sid11对应的消息队列排序于发件顺序编码Sid10对应的消息之后。
同理,将新消息TIMELINE“b11→b12”存储至对应的收件消息队列的步骤是:根据新消息TIMELINE“b11→b12”的接收方编码RA和收件顺序编码Sid21生成新消息TIMELINE“b11→b12”的收件行键值,即收件ROWKEY(如RA→Sid21),以收件ROWKEY RA→Sid21为标识,按收件顺序编码Sid21将新消息TIMELINE“b11→b12”存储至接收方编码RA对应的收件消息队列SA。也即将新消息TIMELINE“b11→b12”存储至SA的队尾,使收件消息队列SA中收件顺序编码Sid21对应的消息队列排序于收件顺序编码Sid20对应的消息之后。将新消息TIMELINE“a11→a12”存储至对应的收件消息队列的步骤是:根据新消息TIMELINE“a11→a12”的接收方编码RB和收件顺序编码Sid31生成新消息TIMELINE“a11→a12”的收件行键值,即收件ROWKEY(如RB→Sid31),以收件ROWKEY RB→Sid31为标识,按收件顺序编码Sid31将新消息TIMELINE“a11→a12”存储至接收方编码RB对应的收件消息队列SB。也即将新消息TIMELINE“a11→a12”存储至SB的队尾,使收件消息队列SB中收件顺序编码Sid31对应的消息队列排序于收件顺序编码Sid30对应的消息之后。
进一步的,将各新消息队列存储至对应的收件消息队列后,还包括:将各收件消息队列的未读消息指针标记为各收件消息队列的新消息队列的收件顺序编码。如将收件消息队列SA的未读消息指针标记为Sid21,使后续查询收件消息队列SA的新消息时,能通过指针直接定位到其新消息队列“b11→b12”。再如将收件消息队列SB的未读消息指针标记为Sid31,使后续查询收件消息队列SB的新消息时,能通过指针直接定位到其新消息队列“a11→a12”,提高新消息查询效率。
按照上述方法将各组会话消息对应存储至HBASE数据库的发件箱和收件箱的同时,在一些实施例中,可以接收客户端发起的查询请求,按照查询请求获取对应的消息反馈至客户端。处理查询请求的步骤包括:接收查询请求,获取查询请求的查询行键值,根据查询行键值获取待查询的接收方编码和收件顺序编码区间;定位待查询的接收方编码对应的收件消息队列,获取该收件消息队列中位于待查询的收件顺序编码区间的消息队列;以及将位于待查询的收件顺序编码区间的消息队列标记为已读消息,并将该收件消息队列的未读消息指针标记为该收件消息队列的未读消息队列的最小收件顺序编码。
例如,查询请求的查询行键值为RB→Sid31,则根据查询行键值RB→Sid31获取的待查询的接收方编码为RB,收件顺序编码区间为大于Sid31。在实际应用时,查询请求由客户端发起,客户端发起查询请求时自动携带该客户端对应的用户账号,即自动携带接收方编码,客户端仅需提供待查询的收件顺序编码区间,通常仅需提供一段时间,服务端会根据该段时间计算待查询的收件顺序编码区间,并据此从对应的收件消息队列中获取位于该收件顺序编码区间的消息(包括消息a11和消息a12)反馈至客户端。由于同一接收方编码的所有消息均存储于同一收件消息队列,确保消息查询快速高效,可以控制在10毫秒以内。进一步的,获取到消息a11和消息a12后,将收件消息队列RB的未读消息指针标记为未读消息队列的最小收件顺序编码,即将RB的未读消息指针标记为后续将存入的新消息队列最小收件顺序编码Sid33。
由客户端发起的会话消息可以从客户端本地存储器中查询,以待查询的会话编码和发件顺序编码区间组成的查询行键值为索引。
进一步的,REGIONSERVER可以对查询请求进行批量处理。客户端采用go语言开发,支持多协程高并发特性,并发处理提高批量处理性能。具体包括:将存储于同一REGIONSERVER的查询行键值对应的查询请求合并成批量查询请求,根据批量查询请求批量获取该REGIONSERVER中对应的消息队列;以及将对应的消息队列批量标记为已读消息,并批量标记各收件消息队列的未读消息指针。
以上述存储于REGIONSERVER 1中的新会话TIMELINE“a11→b11→b12→a12”、新消息TIMELINE“b11→b12”和新消息TIMELINE“a11→a12”为例。当同时收到包含会话编码MA-B、接收方编码RA和接收方编码RB的查询ROWKEY,将对应的查询请求合并成批量查询请求,根据批量查询请求批量获取REGIONSERVER 1中对应的消息TIMELINE(即批量获取发件消息队列SA-B、收件消息队列SA和SB中对应的TIMELINE)。并将对应的TIMELINE批量标记为已读消息,并批量标记各队列的未读消息指针。通过批量查询和已读状态更新,使减少同一REGIONSERVER服务处理请求的次数,提高查询效率。
上述的会话消息的处理方法为会话消息的每个接收方生成新消息队列,存储至对应的收件消息队列,通过收件消息队列可以快速查询对应每个接收方的所有会话消息,提高查询效率;所有会话消息均存储于HBASE数据库,基于HBASE顺序存储特性,实现海量会话消息的分布式存储;邻近的会话消息存储于HBASE数据库的同一存储单元,便于批量查询,提高并发能力。
本申请的实施例还提供一种会话消息的处理系统。参照图3所示,在一些实施例中,会话消息的处理系统包括:
消息接收模块101,用于接收会话消息,获取会话消息的会话编码和各接收方编码,生成会话编码的新会话队列,和各接收方编码的新消息队列。在一些实施例中,消息接收模块101用于执行上述会话消息的处理方法的步骤S10。
顺序编码生成模块102,用于基于会话编码生成新会话队列的发件顺序编码,基于各接收方编码生成各新消息队列的收件顺序编码。在一些实施例中,顺序编码生成模块102用于执行上述会话消息的处理方法的步骤S20。
发件存储模块103,用于根据会话编码和发件顺序编码生成新会话队列的发件行键,以发件行键为标识,按发件顺序编码将新会话队列存储至会话编码对应的发件消息队列。在一些实施例中,发件存储模块103用于执行上述会话消息的处理方法的步骤S30。
收件存储模块104,用于根据各接收方编码和对应的收件顺序编码生成各新消息队列的收件行键值,以各收件行键值为标识,按对应的收件顺序编码将各新消息队列存储至其接收方编码对应的收件消息队列。在一些实施例中,收件存储模块104用于执行上述会话消息的处理方法的步骤S40。
进一步的,会话消息的处理系统还可包括查询模块处理查询请求、批量处理模块进行批量操作,以实现上述任意实施例描述的会话消息的处理方法。
本申请的会话消息的处理系统为会话消息的每个接收方生成新消息队列,存储至对应的收件消息队列,通过收件消息队列可以快速查询对应每个接收方的所有会话消息,提高查询效率;所有会话消息均存储于HBASE数据库,基于HBASE顺序存储特性,实现海量会话消息的分布式存储;邻近的会话消息存储于HBASE数据库的同一存储单元,便于批量查询,提高并发能力。
本申请实施例还提供一种电子设备,包括处理器和存储器,存储器中存储有可执行指令,处理器被配置为经由执行可执行指令来执行上述实施例中的会话消息的处理方法的步骤。
如上所述,本申请的电子设备为会话消息的每个接收方生成新消息队列,存储至对应的收件消息队列,通过收件消息队列可以快速查询对应每个接收方的所有会话消息,提高查询效率;所有会话消息均存储于HBASE数据库,基于HBASE顺序存储特性,实现海量会话消息的分布式存储;邻近的会话消息存储于HBASE数据库的同一存储单元,便于批量查询,提高并发能力。
图4是本申请实施例中电子设备的结构示意图,应当理解的是,图4仅仅是示意性地绘示出各个模块,这些模块可以是虚拟的软件模块或实际的硬件模块,这些模块的合并、拆分及其余模块的增加都在本申请的保护范围之内。
所属技术领域的技术人员能够理解,本申请的各个方面可以实现为系统、方法或程序产品。因此,本申请的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“平台”。
下面参照图4来描述根据本申请的这种实施方式的电子设备700。图4显示的电子设备700仅仅是一个示例,不应对本申请实施例的功能和使用范围带来任何限制。
如图4所示,电子设备700以通用计算设备的形式表现。电子设备700的组件可以包括但不限于:至少一个处理单元710、至少一个存储单元720、连接不同平台组件(包括存储单元720和处理单元710)的总线730、显示单元740等。
其中,存储单元存储有程序代码,程序代码可以被处理单元710执行,使得处理单元710执行本说明书上述基于会话消息的处理方法部分描述的根据本申请各种示例性实施方式的步骤。例如,处理单元710可以分别执行如图1所示的步骤。
存储单元720可以包括易失性存储单元形式的可读介质,例如随机存取存储单元(RAM)7201和/或高速缓存存储单元7202,还可以进一步包括只读存储单元(ROM)7203。
存储单元720还可以包括具有一组(至少一个)程序模块7205的程序/实用工具7204,这样的程序模块7205包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
总线730可以为表示几类总线结构中的一种或多种,包括存储单元总线或者存储单元控制器、外围总线、图形加速端口、处理单元或者使用多种总线结构中的任意总线结构的局域总线。
电子设备700也可以与一个或多个外部设备800(例如键盘、指向设备、蓝牙设备等)通信,还可与一个或者多个使得用户能与该电子设备700交互的设备通信,和/或与使得该电子设备700能与一个或多个其它计算设备进行通信的任何设备(例如路由器、调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口750进行。并且,电子设备700还可以通过网络适配器760与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。网络适配器760可以通过总线730与电子设备700的其它模块通信。应当明白,尽管图中未示出,可以结合电子设备700使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储平台等。
本申请实施例还提供一种计算机可读存储介质,用于存储程序,程序被执行时实现上述实施例的会话消息的处理方法的步骤。在一些可能的实施方式中,本申请的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当程序产品在终端设备上运行时,程序代码用于使终端设备执行本说明书上述会话消息的处理方法部分描述的根据本申请各种示例性实施方式的步骤。
如上所述,本申请的计算机可读存储介质会话消息的每个接收方生成新消息队列,存储至对应的收件消息队列,通过收件消息队列可以快速查询对应每个接收方的所有会话消息,提高查询效率;所有会话消息均存储于HBASE数据库,基于HBASE顺序存储特性,实现海量会话消息的分布式存储;邻近的会话消息存储于HBASE数据库的同一存储单元,便于批量查询,提高并发能力。
图5是本申请的计算机可读存储介质的结构示意图。参考图5所示,描述了根据本申请的实施方式的用于实现上述方法的程序产品900,其可以采用便携式紧凑盘只读存储器(CD-ROM)并包括程序代码,并可以在终端设备,例如个人电脑上运行。然而,本申请的程序产品不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以为但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
计算机可读存储介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读存储介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。可读存储介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言的任意组合来编写用于执行本申请操作的程序代码,程序设计语言包括面向对象的程序设计语言—诸如Java、C++等,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(LAN)或广域网(WAN)连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
以上内容是结合具体的优选实施方式对本申请所作的进一步详细说明,不能认定本申请的具体实施只局限于这些说明。对于本申请所属技术领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干简单推演或替换,都应当视为属于本申请的保护范围。

Claims (10)

1.一种会话消息的处理方法,其特征在于,包括:
接收会话消息,获取所述会话消息的会话编码和各接收方编码,生成所述会话编码的新会话队列,和各接收方编码的新消息队列;
基于所述会话编码生成所述新会话队列的发件顺序编码,包括:定位所述会话编码对应的发件消息队列,获取该发件消息队列中已存会话队列的最大发件顺序编码,将该最大发件顺序编码顺延一单位编码,形成所述新会话队列的发件顺序编码;并基于各接收方编码生成各新消息队列的收件顺序编码,包括:定位各接收方编码对应的收件消息队列,获取各收件消息队列中已存消息队列的最大收件顺序编码,将各最大收件顺序编码顺延一单位编码,形成各新消息队列的收件顺序编码;
根据所述会话编码和所述发件顺序编码生成所述新会话队列的发件行键值,以所述发件行键值为标识,按所述发件顺序编码将所述新会话队列存储至所述会话编码对应的发件消息队列;
根据各接收方编码和对应的收件顺序编码生成各新消息队列的收件行键值,以各收件行键值为标识,按对应的收件顺序编码将各新消息队列存储至其接收方编码对应的收件消息队列。
2.如权利要求1所述的处理方法,其特征在于,所述会话编码标识两个会话方之间的会话消息,或由多个会话方组成的群组之间的会话消息。
3.如权利要求1所述的处理方法,其特征在于,所述会话消息包含一条或多条消息,所述新会话队列包含所述会话消息中对应所述会话编码的所有消息,各新消息队列包含所述会话消息中对应各接收方编码的待接收消息。
4.如权利要求1所述的处理方法,其特征在于,各发件消息队列存储于HBASE数据库的发件箱,各收件消息队列存储于所述HBASE数据库的收件箱;
所述HBASE数据库包括多个存储单元,间隔预设时段的会话消息存储于同一存储单元。
5.如权利要求1所述的处理方法,其特征在于,还包括:
将各收件消息队列的未读消息指针标记为各收件消息队列的新消息队列的收件顺序编码。
6.如权利要求4所述的处理方法,其特征在于,还包括:
接收查询请求,获取所述查询请求的查询行键值,根据所述查询行键值获取待查询的接收方编码和收件顺序编码区间;
定位所述待查询的接收方编码对应的收件消息队列,获取该收件消息队列中位于所述待查询的收件顺序编码区间的消息队列;以及
将位于所述待查询的收件顺序编码区间的消息队列标记为已读消息,并将该收件消息队列的未读消息指针标记为该收件消息队列的未读消息队列的最小收件顺序编码。
7.如权利要求6所述的处理方法,其特征在于,还包括:
将存储于同一存储单元的查询行键值对应的查询请求合并成批量查询请求,根据所述批量查询请求批量获取该存储单元中对应的消息队列;以及
将对应的消息队列批量标记为已读消息,并批量标记各收件消息队列的未读消息指针。
8.一种会话消息的处理系统,其特征在于,包括:
消息接收模块,用于接收会话消息,获取所述会话消息的会话编码和各接收方编码,生成所述会话编码的新会话队列,和各接收方编码的新消息队列;
顺序编码生成模块,用于基于所述会话编码生成所述新会话队列的发件顺序编码,包括:定位所述会话编码对应的发件消息队列,获取该发件消息队列中已存会话队列的最大发件顺序编码,将该最大发件顺序编码顺延一单位编码,形成所述新会话队列的发件顺序编码;并基于各接收方编码生成各新消息队列的收件顺序编码,包括:定位各接收方编码对应的收件消息队列,获取各收件消息队列中已存消息队列的最大收件顺序编码,将各最大收件顺序编码顺延一单位编码,形成各新消息队列的收件顺序编码;
发件存储模块,用于根据所述会话编码和所述发件顺序编码生成所述新会话队列的发件行键值,以所述发件行键值为标识,按所述发件顺序编码将所述新会话队列存储至所述会话编码对应的发件消息队列;
收件存储模块,用于根据各接收方编码和对应的收件顺序编码生成各新消息队列的收件行键值,以各收件行键值为标识,按对应的收件顺序编码将各新消息队列存储至其接收方编码对应的收件消息队列。
9.一种电子设备,其特征在于,包括:
处理器;以及
存储器,用于存储可执行指令;
其中,所述处理器配置为经由执行所述可执行指令来执行权利要求1~7任一项所述的会话消息的处理方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1~7任一项所述的会话消息的处理方法的步骤。
CN201811633856.7A 2018-12-29 2018-12-29 会话消息的处理方法、系统、电子设备和存储介质 Active CN109617789B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201811633856.7A CN109617789B (zh) 2018-12-29 2018-12-29 会话消息的处理方法、系统、电子设备和存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811633856.7A CN109617789B (zh) 2018-12-29 2018-12-29 会话消息的处理方法、系统、电子设备和存储介质

Publications (2)

Publication Number Publication Date
CN109617789A CN109617789A (zh) 2019-04-12
CN109617789B true CN109617789B (zh) 2021-05-28

Family

ID=66010975

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811633856.7A Active CN109617789B (zh) 2018-12-29 2018-12-29 会话消息的处理方法、系统、电子设备和存储介质

Country Status (1)

Country Link
CN (1) CN109617789B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111782829A (zh) * 2020-05-21 2020-10-16 香港乐蜜有限公司 一种即时通讯会话消息的处理方法、装置及电子设备
CN112069438B (zh) * 2020-09-10 2023-12-22 北京五八信息技术有限公司 消息合并方法、消息处理方法和装置、设备和介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1787495A (zh) * 2004-12-10 2006-06-14 微软公司 可靠地传输排队的应用程序消息
CN103634391A (zh) * 2013-11-26 2014-03-12 上海合鸿信息技术有限公司 一种实现会话共享的方法和系统
CN107315745A (zh) * 2016-04-26 2017-11-03 北京京东尚科信息技术有限公司 一种私信存储方法及系统
CN107370797A (zh) * 2017-06-30 2017-11-21 北京百度网讯科技有限公司 一种基于HBase的强有序队列操作的方法和装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1787495A (zh) * 2004-12-10 2006-06-14 微软公司 可靠地传输排队的应用程序消息
CN103634391A (zh) * 2013-11-26 2014-03-12 上海合鸿信息技术有限公司 一种实现会话共享的方法和系统
CN107315745A (zh) * 2016-04-26 2017-11-03 北京京东尚科信息技术有限公司 一种私信存储方法及系统
CN107370797A (zh) * 2017-06-30 2017-11-21 北京百度网讯科技有限公司 一种基于HBase的强有序队列操作的方法和装置

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
Yijin Zhang等.《Coding-Based Slotted ALOHA for Broadcasting Multislot Messages With Delivery Deadline》.《IEEE Transactions on Vehicular Technology》.2018, *
曹婧华.《分布式消息队列的设计与实现》.《河南科技大学学报:自然科学版》.2010,第31卷(第4期), *
黎瑞瑜.《分布式实时分发微博系统》.《中国优秀硕士学位论文全文数据库》.2011, *

Also Published As

Publication number Publication date
CN109617789A (zh) 2019-04-12

Similar Documents

Publication Publication Date Title
US9460047B2 (en) Estimating the time until a reply email will be received using a recipient behavior model
US20140310357A1 (en) Directed message notification in chat sessions
CN111523001B (zh) 用于存储数据的方法、装置、设备以及存储介质
CN112184367A (zh) 一种订单处理方法和装置
CN109617789B (zh) 会话消息的处理方法、系统、电子设备和存储介质
CN111338810A (zh) 用于存储信息的方法和装置
CN112181307A (zh) 基于区块链的分布式数据冗余存储方法和电子设备
CN114900379A (zh) 一种消息通知方法、装置、电子设备及存储介质
CN111610938B (zh) 分布式数据编码存储方法、电子设备和计算机可读存储介质
CN110389976B (zh) 一种多接口数据的调度方法和装置
CN107888478B (zh) 即时通讯过程中的语音信息转发方法、设备及存储介质
CN111858586B (zh) 一种数据处理的方法和装置
CN111555894B (zh) 数据处理方法、装置、设备和存储介质
US11303587B2 (en) Chatbot information processing
CN112182108A (zh) 基于区块链的分布式数据存储更新方法和电子设备
CN111857901B (zh) 数据处理方法、生成会话背景的方法、电子设备和介质
CN107609852B (zh) 用于处理支付请求的方法和装置
CN112948138A (zh) 一种处理消息的方法和装置
CN113127561B (zh) 业务单号的生成方法、装置、电子设备和存储介质
CN114461912A (zh) 一种信息处理方法、装置、电子设备及存储介质
CN114615325A (zh) 消息推送方法、装置、计算机设备及存储介质
CN112925623A (zh) 任务处理方法、装置、电子设备和介质
CN112181308A (zh) 基于区块链的分布式数据存储方法和电子设备
US10216672B2 (en) System and method for preventing time out in input/output systems
CN113766437B (zh) 一种短信发送方法和装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
TA01 Transfer of patent application right

Effective date of registration: 20210330

Address after: No.123, Kaifa Avenue, Guiyang Economic and Technological Development Zone, 550000, Guizhou Province

Applicant after: Man Bang Information Consulting Co.,Ltd.

Address before: 210012 3-5 / F, building 4, 170-1 software Avenue, Yuhuatai District, Nanjing City, Jiangsu Province

Applicant before: JIANGSU MANYUN SOFTWARE TECHNOLOGY Co.,Ltd.

TA01 Transfer of patent application right
GR01 Patent grant
GR01 Patent grant
CP01 Change in the name or title of a patent holder

Address after: No.123, Kaifa Avenue, Guiyang Economic and Technological Development Zone, 550000, Guizhou Province

Patentee after: Manbang Information Technology Co.,Ltd.

Address before: No.123, Kaifa Avenue, Guiyang Economic and Technological Development Zone, 550000, Guizhou Province

Patentee before: Man Bang Information Consulting Co.,Ltd.

CP01 Change in the name or title of a patent holder
EE01 Entry into force of recordation of patent licensing contract

Application publication date: 20190412

Assignee: Nanjing Manyun Cold Chain Technology Co.,Ltd.

Assignor: Manbang Information Technology Co.,Ltd.

Contract record no.: X2023310000142

Denomination of invention: Processing methods, systems, electronic devices, and storage media for conversation messages

Granted publication date: 20210528

License type: Common License

Record date: 20230802

EE01 Entry into force of recordation of patent licensing contract