CN113886494A - 即时通讯的消息存储方法、装置、设备及计算机可读介质 - Google Patents
即时通讯的消息存储方法、装置、设备及计算机可读介质 Download PDFInfo
- Publication number
- CN113886494A CN113886494A CN202111160494.6A CN202111160494A CN113886494A CN 113886494 A CN113886494 A CN 113886494A CN 202111160494 A CN202111160494 A CN 202111160494A CN 113886494 A CN113886494 A CN 113886494A
- Authority
- CN
- China
- Prior art keywords
- message
- target
- cache
- instant messaging
- caches
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 125
- 238000003860 storage Methods 0.000 title claims abstract description 90
- 230000008569 process Effects 0.000 claims abstract description 73
- 238000004891 communication Methods 0.000 claims description 44
- 238000013507 mapping Methods 0.000 claims description 16
- 238000012790 confirmation Methods 0.000 claims description 13
- 238000004590 computer program Methods 0.000 claims description 8
- 230000004043 responsiveness Effects 0.000 claims description 8
- 238000012432 intermediate storage Methods 0.000 claims description 6
- 238000012163 sequencing technique Methods 0.000 claims description 4
- 230000001360 synchronised effect Effects 0.000 abstract description 12
- 230000004044 response Effects 0.000 description 10
- 238000010586 diagram Methods 0.000 description 7
- 238000005516 engineering process Methods 0.000 description 4
- 238000012544 monitoring process Methods 0.000 description 4
- 238000012545 processing Methods 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 230000000149 penetrating effect Effects 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000009792 diffusion process Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
- G06F16/273—Asynchronous replication or reconciliation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24552—Database cache management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
- G06F16/2471—Distributed queries
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/5038—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5011—Pool
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/548—Queue
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- Fuzzy Systems (AREA)
- Mathematical Physics (AREA)
- Probability & Statistics with Applications (AREA)
- Computing Systems (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本申请涉及一种即时通讯的消息存储方法、装置、设备及计算机可读介质。该方法包括:在第一进程接收到目标消息的情况下,将目标消息存储至第一缓存,并在异步任务池中创建目标消息的分布式存储任务,其中,目标消息为即时通讯客户端在目标群组中发送的即时通讯消息,第一进程用于接收即时通讯消息;在第二进程检测到异步任务池中存在分布式存储任务的情况下,将第一缓存中的目标消息保存至多个第二缓存,其中,第二缓存为与目标群组中的多个即时通讯客户端对应的缓存,一个即时通讯客户端对应一个第二缓存,第二缓存用于对应的即时通讯客户端根据消息接收指令从第二缓存中读取目标消息。本申请解决了群组消息的同步存储性能消耗大的技术问题。
Description
技术领域
本申请涉及互联网技术领域,尤其涉及一种即时通讯的消息存储方法、装置、设备及计算机可读介质。
背景技术
即时通讯(Instant Messaging,简称IM)是一个实时通信系统,允许两人或多人使用网络实时的传递文字消息、文件、语音与视频交流。即时通讯系统的实时性要求非常高,因此对于服务端的性能要求也极高。然而,相关技术中,即时通讯系统的服务端将即时通讯消息直接存储在数据库中,对数据库的读写操作的频率极高。受限于性能瓶颈,在大群群聊中多用户参与的即时通讯场景下,由于需要将群组消息同步到各个参与端,群组消息的同步存储性能消耗大,即时通讯消息的存储和查询的响应速度都有所降低。
针对群组消息的同步存储性能消耗大的问题,目前尚未提出有效的解决方案。
发明内容
本申请提供了一种即时通讯的消息存储方法、装置、设备及计算机可读介质,以解决群组消息的同步存储性能消耗大的技术问题。
根据本申请实施例的一个方面,本申请提供了一种即时通讯的消息存储方法,应用于服务端,包括:
在第一进程接收到目标消息的情况下,将目标消息存储至第一缓存,并在异步任务池中创建目标消息的分布式存储任务,其中,目标消息为即时通讯客户端在目标群组中发送的即时通讯消息,第一进程用于接收即时通讯消息;
在第二进程检测到异步任务池中存在分布式存储任务的情况下,将第一缓存中的目标消息保存至多个第二缓存,其中,第二缓存为与目标群组中的多个即时通讯客户端对应的缓存,一个即时通讯客户端对应一个第二缓存,第二缓存用于对应的即时通讯客户端根据消息接收指令从第二缓存中读取目标消息。
可选地,在第一进程接收到目标消息的情况下,将目标消息存储至第一缓存,并在异步任务池中创建目标消息的分布式存储任务具体包括:
在第一进程接收到目标消息的情况下,将目标消息存储至第一缓存;
在接收到目标消息存储至第一缓存成功的消息后,在异步任务池中创建目标消息的分布式存储任务;
在接收到目标消息存储至第一缓存失败的消息后,放弃在异步任务池中创建目标消息的分布式存储任务。
可选地,将第一缓存中的目标消息保存至多个第二缓存包括按照如下方式将目标消息保存至一个第二缓存:
从第一缓存中读取目标消息;
提取目标消息的消息体和识别标识,其中,消息体为服务端存储即时通讯消息的数据结构;
将识别标识推入第二缓存中的未读消息队列和历史消息队列,并将识别标识和消息体映射存储在第二缓存中。
可选地,将识别标识推入第二缓存中的未读消息队列和历史消息队列,并将识别标识和消息体映射存储在第二缓存中之后,所述方法还包括:
将目标消息的识别标识和消息体推入后端消息队列;
在第三进程从后端消息队列中监听到目标消息的识别标识和消息体的情况下,将目标消息的识别标识和消息体映射存储于后端数据库中。
可选地,将识别标识推入第二缓存中的未读消息队列和历史消息队列,并将识别标识和消息体映射存储在第二缓存中之后,所述方法还包括:
在接收到对目标消息的已读确认信息的情况下,将目标消息的识别标识推出第二缓存的未读消息队列,其中,已读确认信息为第二缓存对应的即时通讯客户端在从第二缓存中读取到目标消息后发送的。
可选地,将识别标识推入第二缓存中的未读消息队列和历史消息队列,并将识别标识和消息体映射存储在第二缓存中之后,所述方法还包括:
在接收到目标即时通讯客户端发送的消息查询请求的情况下,确认消息查询请求的查询目标;
从第二缓存中的未读消息队列提取出查询目标的识别标识;和/或,
从第二缓存中的历史消息队列提取出查询目标的识别标识;
在第二缓存中确定与查询目标的识别标识映射存储的目标消息体,并向目标即时通讯客户端返回目标消息体。
可选地,在第二缓存的未读消息队列不包含查询目标的识别标识的情况下,从后端数据库中的未读消息队列提取出查询目标的识别标识;和/或,
在第二缓存的历史消息队列不包含查询目标的识别标识的情况下,从后端数据库中的历史消息队列提取出查询目标的识别标识。
可选地,在第二缓存中未找到与查询目标的识别标识映射存储的目标消息体的情况下,从后端数据库中确定与查询目标的识别标识映射存储的目标消息体。
可选地,在接收到消息撤回请求的情况下,确认消息撤回请求的撤回目标;
在第一缓存和异步任务池中删除撤回目标的消息体和识别标识;
若异步任务已经执行,则删除第二缓存和后端消息队列中存储的撤回目标的消息体和识别标识;
若后端消息队列已执行,则删除后端数据库中存储的撤回目标的消息体和识别标识。
可选地,将目标消息从第一缓存中保存至多个第二缓存包括:
确定所有即时通讯客户端的消息响应度,其中,消息响应度包括即时通讯客户端从对应的第二缓存中读取消息的频率和主动接收未读消息的平均时长;
按照消息响应度对所有第二缓存排序;
创建至少一个线程;
通过线程,从第一缓存中读取目标消息,并按照第二缓存的排序顺序依次将目标消息写入所有第二缓存中。
根据本申请实施例的另一方面,本申请提供了一种即时通讯的消息存储装置,包括:
中间存储模块,用于在第一进程接收到目标消息的情况下,将目标消息存储至第一缓存,并在异步任务池中创建目标消息的分布式存储任务,其中,目标消息为即时通讯客户端在目标群组中发送的即时通讯消息,第一进程用于接收即时通讯消息;
分布式存储模块,用于在第二进程检测到异步任务池中存在分布式存储任务的情况下,将第一缓存中的目标消息保存至多个第二缓存,其中,第二缓存为与目标群组中的多个即时通讯客户端对应的缓存,一个即时通讯客户端对应一个第二缓存,第二缓存用于对应的即时通讯客户端根据消息接收指令从第二缓存中读取目标消息。
根据本申请实施例的另一方面,本申请提供了一种电子设备,包括存储器、处理器、通信接口及通信总线,存储器中存储有可在处理器上运行的计算机程序,存储器、处理器通过通信总线和通信接口进行通信,处理器执行计算机程序时实现上述方法的步骤。
根据本申请实施例的另一方面,本申请还提供了一种具有处理器可执行的非易失的程序代码的计算机可读介质,程序代码使处理器执行上述的方法。
本申请实施例提供的上述技术方案与相关技术相比具有如下优点:
本申请技术方案为在第一进程接收到目标消息的情况下,将目标消息存储至第一缓存,并在异步任务池中创建目标消息的分布式存储任务,其中,目标消息为即时通讯客户端在目标群组中发送的即时通讯消息,第一进程用于接收即时通讯消息;在第二进程检测到异步任务池中存在分布式存储任务的情况下,将第一缓存中的目标消息保存至多个第二缓存,其中,第二缓存为与目标群组中的多个即时通讯客户端对应的缓存,一个即时通讯客户端对应一个第二缓存,第二缓存用于对应的即时通讯客户端根据消息接收指令从第二缓存中读取目标消息。本申请通过搭建缓存层和异步任务池,不直接将即时通讯消息存储在数据库中,且通过异步的方式将即时通讯消息写扩散至同一个消息群组下的多个即时通讯客户端对应的缓存中,异步的方式减小了服务端的性能要求,分布式缓存的方式也降低了服务端中心服务器的访问量,提高即时通讯消息的存储和查询的响应速度,解决了群组消息的同步存储性能消耗大的技术问题。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。
为了更清楚地说明本申请实施例或相关技术中的技术方案,下面将对实施例或相关技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为根据本申请实施例提供的一种可选的即时通讯的消息存储方法硬件环境示意图;
图2为根据本申请实施例提供的一种可选的即时通讯的消息存储方法流程示意图;
图3为根据本申请实施例提供的一种可选的即时通讯的消息存储结构示意图;
图4为根据本申请实施例提供的一种可选的即时通讯的消息存储时序图;
图5为根据本申请实施例提供的一种可选的即时通讯的消息查询时序图;
图6为根据本申请实施例提供的一种可选的即时通讯的消息存储装置框图;
图7为本申请实施例提供的一种可选的电子设备结构示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请的一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。
在后续的描述中,使用用于表示元件的诸如“模块”、“部件”或“单元”的后缀仅为了有利于本申请的说明,其本身并没有特定的意义。因此,“模块”与“部件”可以混合地使用。
相关技术中,即时通讯系统的服务端将即时通讯消息直接存储在数据库中,对数据库的读写操作的频率极高。受限于性能瓶颈,在大群群聊中多用户参与的即时通讯场景下,由于需要将群组消息同步到各个参与端,群组消息的同步存储性能消耗大,即时通讯消息的存储和查询的响应速度都有所降低。
为了解决背景技术中提及的问题,根据本申请实施例的一方面,提供了一种即时通讯的消息存储方法的实施例。
可选地,在本申请实施例中,上述即时通讯的消息存储方法可以应用于如图1所示的由即时通讯客户端101和服务端103所构成的硬件环境中。如图1所示,服务端103通过网络与即时通讯客户端101进行连接,可用于为终端或终端上安装的客户端提供服务(如即时通讯服务),可在服务端103上或独立于服务端103设置后端数据库105,用于为服务端103提供数据存储服务。即时通讯客户端101为1个或多个,在基于群组的即时通讯服务中,即时通讯客户端101为参与消息群组的多个即时通讯客户端。上述网络包括但不限于:广域网、城域网或局域网,即时通讯客户端101包括但不限于PC、手机、平板电脑等。
本申请实施例中的一种即时通讯的消息存储方法可以由服务端103来执行,如图2所示,该方法可以包括以下步骤:
步骤S202,在第一进程接收到目标消息的情况下,将目标消息存储至第一缓存,并在异步任务池中创建目标消息的分布式存储任务,其中,目标消息为即时通讯客户端在目标群组中发送的即时通讯消息,第一进程用于接收即时通讯消息。
即时通讯客户端之间的消息传输,实际上是依赖服务端中转数据的,即发送端发出即时通讯消息,首先由服务端接收到该即时通讯消息,再由服务端向接收端发送有新消息通知,接收端收到有新消息通知后从服务端获取该即时通讯消息,或者接收端主动接收新的即时通讯消息。而服务端在其中扮演记录员的角色,即存储发送端发送的即时通讯消息,并记录该即时通讯消息的读取状态。相关技术中,服务端直接将即时通讯消息存储在数据库,接收端接收消息时,从数据库中获取相应的即时通讯消息,这样对数据库的读写操作的频率极高,尤其在大群群聊中多用户参与的即时通讯场景下,由于需要将群组消息同步到各个参与端,群组消息的同步存储性能消耗大,即时通讯消息的存储和查询的响应速度都有所降低。
本申请实施例中,目标群组中的某一即时通讯客户端在该消息群组中发送了新的即时通讯消息(目标消息)后,服务端第一进程从外部消息接口处监听到了该目标消息,第一进程不将目标消息直接存储在数据库中,而是先暂存在该第一缓存中,并在异步任务池中创建该目标消息的分布式存储任务。以workqueue(工作队列)实现异步任务池为例,创建任务即是创建该任务的线程,不同的线程搭载不同的任务,通过队列决定任务被执行的先后顺序,同时队列也用于暂存任务,各个任务暂存在工作队列中,直至监听该工作队列的进程或线程从该工作队列中提取任务后,销毁对应的线程,并释放内存。需要说明的是,服务端在接收到第一缓存存储成功的确认信息之后再执行创建异步任务的步骤,即:
在第一进程接收到目标消息的情况下,将目标消息存储至第一缓存;
在接收到目标消息存储至第一缓存成功的消息后,在异步任务池中创建目标消息的分布式存储任务;
在接收到目标消息存储至第一缓存失败的消息后,放弃在异步任务池中创建目标消息的分布式存储任务。
本申请实施例中,服务端接收目标消息之后,需要先查询该目标消息是否已经存在,即对该目标消息进行去重。去重的具体方法为:提取该目标消息的识别标识;在第一缓存、异步任务池、第二缓存以及后端数据库任一查询到该识别标识的情况下,确定该目标消息已经存在。该目标消息已经存在,就不再在第一缓存中存储该目标消息,也就不进行异步任务的创建了。若经过去重步骤确定该目标消息为新消息,则先在第一缓存中存储,存储成功再创建异步任务,异步任务创建成功后给发送该目标消息的即时通讯客户端返回存储成功确认回执。
本申请实施例中,第一进程无需等待该分布式存储任务执行完毕,创建任务后即可返回继续监听外部消息接口。
步骤S204,在第二进程检测到异步任务池中存在分布式存储任务的情况下,将第一缓存中的目标消息保存至多个第二缓存,其中,第二缓存为与目标群组中的多个即时通讯客户端对应的缓存,一个即时通讯客户端对应一个第二缓存,第二缓存用于对应的即时通讯客户端根据消息接收指令从第二缓存中读取目标消息。
本申请实施例中,服务端第二进程与第一进程采用不同的工作时钟,即二者异步执行,第二进程用于监听异步任务池,即监听该工作队列。第二缓存为服务端为该目标群组的多个即时通讯客户端配置的缓存空间,第二缓存与第一缓存可在物理空间上分离,即可根据距离即时通讯客户端的远近选择合适的服务节点作为即时通讯客户端的第二缓存,并通过该服务节点为即时通讯客户端提供即时通讯服务。本申请实施例中的服务端可为中心服务器+分布式子服务器组建的服务系统,分布式子服务器即为该服务节点,作为子服务端,中心服务器作为主服务端,共同为即时通讯客户端提供即时通讯服务,中心服务器+分布式子服务器的模式能够极大缓解中心服务器的高并发压力。
本申请实施例中,在第二进程检测到存在该分布式存储任务的情况下,服务端从第一缓存中读取目标消息,并将目标消息下发至与目标群组中的多个即时通讯客户端对应的第二缓存,其中,一个即时通讯客户端可以对应一个第二缓存,即一个服务节点只为一个即时通讯客户端服务,当然,实际情况中,为了资源利用最大化,一个服务节点可以为多个即时通讯客户端服务,即一个第二缓存可对应多个即时通讯客户端。目标群组中的即时通讯客户端接收新消息时,从自己对应的第二缓存处读取新消息,能够减缓中心服务器的压力,同时提升消息存储的效率及响应速度。
本申请实施例中,基于中心服务器+分布式子服务器的模式,服务端的第一进程、第二进程可为一个硬件设备上的进程,如中心服务器,也可为不同硬件设备上执行的进程,如中心服务器、分布式子服务器,不同进程、线程之间通信连接。
通过步骤S202至S204,本申请通过搭建缓存层和异步任务池,不直接将即时通讯消息存储在数据库中,且通过异步的方式将即时通讯消息写扩散至同一个消息群组下的多个即时通讯客户端对应的缓存中,异步的方式减小了服务端的性能要求,分布式缓存的方式也降低了服务端中心服务器的访问量,提高即时通讯消息的存储和查询的响应速度,解决了群组消息的同步存储性能消耗大的技术问题。
作为一种可选的实施方式,将目标消息从第一缓存中保存至多个第二缓存包括:
步骤1,确定所有即时通讯客户端的消息响应度,其中,消息响应度包括即时通讯客户端从对应的第二缓存中读取消息的频率和主动接收未读消息的平均时长;
步骤2,按照消息响应度对所有第二缓存排序;
步骤3,创建至少一个线程;
步骤4,通过线程,从第一缓存中读取目标消息,并按照第二缓存的排序顺序依次将目标消息写入所有第二缓存中。
本申请实施例中,同时向目标群组中的多个即时通讯客户端对应的第二缓存下发即时通讯消息可能由于高并发而存在响应延迟等情况,为了缓解服务端压力,可以根据即时通讯客户端从第二缓存读取消息的频率和主动接收未读消息的平均时长来决定消息分布式缓存的优先级。如有的用户经常点击目标群组查看是否有新消息,则该用户的即时通讯客户端从第二缓存读取消息的频率高,有的用户很长时间不点击该目标群组,新消息总是经过很长时间才被用户接收,则该用户的即时通讯客户端主动接收未读消息的平均时长较长。本申请综合上述两个因素组成消息响应度,从而按照消息响应度对所有第二缓存排序,从而通过至少一个线程按照第二缓存的排序顺序依次将目标消息写入所有第二缓存中。
作为一种可选的实施方式,将第一缓存中的目标消息保存至多个第二缓存包括按照如下方式将目标消息保存至一个第二缓存:
步骤1,从第一缓存中读取目标消息;
步骤2,提取目标消息的消息体和识别标识,其中,消息体为服务端存储即时通讯消息的数据结构;
步骤3,将识别标识推入第二缓存中的未读消息队列和历史消息队列,并将识别标识和消息体映射存储在第二缓存中。
本申请实施例中,如图3所示,服务端第一缓存中存储有会话A的新消息,则第二进程从第一缓存中读取会话A的新消息,将新消息写入消息体,将新消息的消息ID(即识别标识)写入会话A的历史消息队列和未读消息队列,从而通过历史消息队列和未读消息队列来记录即时通讯客户端对新消息的读取状态。同理,服务端第一缓存中存储有会话B的新消息,则第二进程从第一缓存中读取会话B的新消息,将新消息写入消息体,将新消息的消息ID(即识别标识)写入会话B的历史消息队列和未读消息队列,从而通过历史消息队列和未读消息队列来记录即时通讯客户端对新消息的读取状态。上述识别标识至少包含发送方根据消息的发送顺序确定的第一消息id和服务端分配的第二消息id。
作为一种可选的实施方式,将识别标识推入第二缓存中的未读消息队列和历史消息队列,并将识别标识和消息体映射存储在第二缓存中之后,所述方法还包括:
步骤1,将目标消息的识别标识和消息体推入后端消息队列;
步骤2,在第三进程从后端消息队列中监听到目标消息的识别标识和消息体的情况下,将目标消息的识别标识和消息体映射存储于后端数据库中。
本申请实施例中,第三进程可为中心服务器上的进程,也可为分布式子服务器上的进程。第三进程与第一进程采用不同的工作时钟,即二者异步执行。通过第三进程,服务端采用异步的方式将即时通讯消息写入后端数据库,减少同步压力,第一进程无需等待即时通讯消息存储至后端数据库后再去监听外部消息接口,大大提高了消息接收、存储的响应速度。
可选地,目标消息保存到后端数据库之后,可以将第一缓存中的目标消息删除。
作为一种可选的实施方式,将识别标识推入第二缓存中的未读消息队列和历史消息队列,并将识别标识和消息体映射存储在第二缓存中之后,所述方法还包括:
在接收到对目标消息的已读确认信息的情况下,将目标消息的识别标识推出第二缓存的未读消息队列,其中,已读确认信息为第二缓存对应的即时通讯客户端在从第二缓存中读取到目标消息后发送的。
本申请实施例中,通过历史消息队列和未读消息队列来记录即时通讯客户端对新消息的读取状态,其中,在用户的即时通讯客户端从第二缓存中读取到目标消息后,该即时通讯客户端会返回已读确认信息ack,服务端据此将目标消息的识别标识从第二缓存的未读消息队列中删除,从而将该目标消息从未读消息变成已读消息。
可选地,若后端数据库中也设置有未读消息队列,则在接收到对目标消息的已读确认信息的情况下,还需要将目标消息的识别标识推出后端数据库的未读消息队列。从第二缓存的未读消息队列中删除目标消息的识别标识与从后端数据库的未读消息队列中删除目标消息的识别标识可以是异步的,其中,第二缓存与即时通讯客户端的交互更频繁,实时性要求更强,因此可以有限更新第二缓存中的状态,后端数据库可以通过异步任务池进行状态更新。
下面对本申请完整的消息存储流程进行综合说明。
如图4所示,API网关是将即时通讯客户端与服务端连接起来的中央接口,API网关可以处理重要的安全和管理事务,例如身份验证、输入验证、指标收集及响应转换。其中,不同的设备和用户需要访问的信息不同,因此可以为每个用户、每种类型的即时通讯客户端分配唯一的API(Application Programming Interface,应用程序接口),在接收到即时通讯客户端的新消息时可以快速响应。即时通讯客户端通过该API网关提供的API发出即时通讯消息。完整的消息存储流程包括:
步骤1,即时通讯客户端通过该API网关提供的API接口发出即时通讯消息。
步骤2,消息服务(服务端提供的即时通讯服务)将即时通讯消息放入分布式缓存(第一缓存也组成分布式缓存)。
步骤3,缓存成功,则将即时通讯消息放入异步任务。
步骤4,服务端向即时通讯客户端返回消息存储的确认信息ACK。
步骤5,消息服务通过异步的写扩散操作将即时通讯消息写入接收端对应的分布式缓存(第二缓存),实际是将即时通讯消息写入接收端的消息队列。
步骤6,消息服务通过异步的方式将即时通讯消息写入后端数据库对应的消息队列(后端消息队列)。
步骤7,数据库(后端数据库)从该消息队列中读取即时通讯消息,写入数据库。
步骤8,消息服务删除第二缓存中暂存的即时通讯消息。
本申请基于上述消息的存储方法,还提出一种消息的查询方法。
作为一种可选的实施方式,将识别标识推入第二缓存中的未读消息队列和历史消息队列,并将识别标识和消息体映射存储在第二缓存中之后,所述方法还包括:
步骤1,在接收到目标即时通讯客户端发送的消息查询请求的情况下,确认消息查询请求的查询目标;
步骤2,从第二缓存中的未读消息队列提取出查询目标的识别标识;和/或,从第二缓存中的历史消息队列提取出查询目标的识别标识;
步骤3,在第二缓存中确定与查询目标的识别标识映射存储的目标消息体,并向目标即时通讯客户端返回目标消息体。
另外,在第二缓存的未读消息队列不包含查询目标的识别标识的情况下,从后端数据库中的未读消息队列提取出查询目标的识别标识;和/或,
在第二缓存的历史消息队列不包含查询目标的识别标识的情况下,从后端数据库中的历史消息队列提取出查询目标的识别标识。
在第二缓存的历史消息队列不包含查询目标的识别标识的情况下,从后端数据库中的历史消息队列提取出查询目标的识别标识。
本申请实施例中,可以查询历史消息和未读消息,查询历史消息时,服务端先查找并返回历史消息队列中的消息ID,再找出与历史消息的ID映射存储的消息体,并向即时通讯客户端返回该消息体。查询未读消息时,服务端先查找并返回未读消息队列中的消息ID,再找出与未读消息的ID映射存储的消息体,并向即时通讯客户端返回该消息体。无论ID的查询还是消息体的查询,服务端都是优先查询即时通讯客户端对应的第二缓存,没有命中的话,则穿透到后端数据库查询。
如图5所示为本申请提供的消息查询流程示意。消息查询包括:
步骤1,即时通讯客户端通过该API网关提供的API接口发出即时通讯消息的消息查询请求。
步骤2,服务端在分布式缓存(第二缓存)中查询消息ID,查询成功则返回消息ID,查询失败则穿透到后端数据库查询消息ID。
步骤3,服务端在分布式缓存(第二缓存)中查询消息ID映射存储的消息体,查询成功则返回消息体,查询失败则穿透到后端数据库查询消息体。
步骤4,服务端将所查询的消息组成消息列表返回即时通讯客户端。
本申请还提供了一种消息撤回方法,该方法包括:
步骤1,在接收到消息撤回请求的情况下,确认消息撤回请求的撤回目标;
步骤2,在第一缓存和异步任务池中删除撤回目标的消息体和识别标识;
步骤3,若异步任务已经执行,则删除第二缓存和后端消息队列中存储的撤回目标的消息体和识别标识;
步骤4,若后端消息队列已执行,则删除后端数据库中存储的撤回目标的消息体和识别标识。
本申请实施例中,由于在服务端中第一缓存和异步任务池构成第一级存储,第二缓存和后端消息队列构成第二级存储,后端数据库构成第三级存储,因此进行消息撤回步骤时,需要逐级撤回,即若撤回目标仅存储在了第一缓存和异步任务池(在异步任务池中创建了异步的分布式缓存任务),则仅需删除第一缓存和异步任务池中的该撤回目标的消息体和识别标识即可。而若是异步任务已经执行,则需要穿透到第二级存储进行消息撤回操作,即删除第二缓存和后端消息队列中存储的撤回目标的消息体和识别标识。而若是后端消息队列已经执行,则需要穿透到第三级存储进行消息撤回操作,即删除后端数据库中存储的撤回目标的消息体和识别标识。
根据本申请实施例的又一方面,如图6所示,提供了一种即时通讯的消息存储装置,包括:
中间存储模块601,用于在第一进程接收到目标消息的情况下,将目标消息存储至第一缓存,并在异步任务池中创建目标消息的分布式存储任务,其中,目标消息为即时通讯客户端在目标群组中发送的即时通讯消息,第一进程用于接收即时通讯消息;
分布式存储模块603,用于在第二进程检测到异步任务池中存在分布式存储任务的情况下,将第一缓存中的目标消息保存至多个第二缓存,其中,第二缓存为与目标群组中的多个即时通讯客户端对应的缓存,一个即时通讯客户端对应一个第二缓存,第二缓存用于对应的即时通讯客户端根据消息接收指令从第二缓存中读取目标消息。
需要说明的是,该实施例中的中间存储模块601可以用于执行本申请实施例中的步骤S202,该实施例中的分布式存储模块603可以用于执行本申请实施例中的步骤S204。
此处需要说明的是,上述模块与对应的步骤所实现的示例和应用场景相同,但不限于上述实施例所公开的内容。需要说明的是,上述模块作为装置的一部分可以运行在如图1所示的硬件环境中,可以通过软件实现,也可以通过硬件实现。
可选地,该中间存储模块,具体用于:
在第一进程接收到目标消息的情况下,将目标消息存储至第一缓存;
在接收到目标消息存储至第一缓存成功的消息后,在异步任务池中创建目标消息的分布式存储任务;
在接收到目标消息存储至第一缓存失败的消息后,放弃在异步任务池中创建目标消息的分布式存储任务。
可选地,该分布式存储模块,用于按照如下方式将目标消息保存至一个第二缓存:
从第一缓存中读取目标消息;
提取目标消息的消息体和识别标识,其中,消息体为服务端存储即时通讯消息的数据结构;
将目标消息的识别标识推入第二缓存中的未读消息队列和历史消息队列,并将识别标识和消息体映射存储在第二缓存中。
可选地,该即时通讯的消息存储装置,还包括数据库存储模块,用于:
将目标消息的识别标识和消息体推入后端消息队列;
在第三进程从后端消息队列中监听到目标消息的识别标识和消息体的情况下,将目标消息的识别标识和消息体映射存储于后端数据库中。
可选地,该即时通讯的消息存储装置,还包括未读消息更新模块,用于:
在接收到对目标消息的已读确认信息的情况下,将目标消息的识别标识推出第二缓存的未读消息队列,其中,已读确认信息为第二缓存对应的即时通讯客户端在从第二缓存中读取到目标消息后发送的。
可选地,该即时通讯的消息存储装置,还包括消息查询模块,用于:
在接收到目标即时通讯客户端发送的消息查询请求的情况下,确认消息查询请求的查询目标;
从第二缓存中的未读消息队列提取出查询目标的识别标识;和/或,
从第二缓存中的历史消息队列提取出查询目标的识别标识;
在第二缓存中确定与查询目标的识别标识映射存储的目标消息体,并向目标即时通讯客户端返回目标消息体。
可选地,该消息查询模块,还用于:
在第二缓存的未读消息队列不包含查询目标的识别标识的情况下,从后端数据库中的未读消息队列提取出查询目标的识别标识;和/或,
在第二缓存的历史消息队列不包含查询目标的识别标识的情况下,从后端数据库中的历史消息队列提取出查询目标的识别标识。
可选地,该消息查询模块,还用于:
在第二缓存中未找到与查询目标的识别标识映射存储的目标消息体的情况下,从后端数据库中确定与查询目标的识别标识映射存储的目标消息体。
可选地,该即时通讯的消息存储装置,还包括消息撤回模块,用于:
在接收到消息撤回请求的情况下,确认消息撤回请求的撤回目标;
在第一缓存和异步任务池中删除撤回目标的消息体和识别标识;
若异步任务已经执行,则删除第二缓存和后端消息队列中存储的撤回目标的消息体和识别标识;
若后端消息队列已执行,则删除后端数据库中存储的撤回目标的消息体和识别标识。
可选地,该分布式存储模块,还用于:
确定所有即时通讯客户端的消息响应度,其中,消息响应度包括即时通讯客户端从对应的第二缓存中读取消息的频率和主动接收未读消息的平均时长;
按照消息响应度对所有第二缓存排序;
创建至少一个线程;
通过线程,从第一缓存中读取目标消息,并按照第二缓存的排序顺序依次将目标消息写入所有第二缓存中。
根据本申请实施例的另一方面,本申请提供了一种电子设备,如图7所示,包括存储器701、处理器703、通信接口705及通信总线707,存储器701中存储有可在处理器703上运行的计算机程序,存储器701、处理器703通过通信接口705和通信总线707进行通信,处理器703执行计算机程序时实现上述方法的步骤。
上述电子设备中的存储器、处理器通过通信总线和通信接口进行通信。所述通信总线可以是外设部件互连标准(Peripheral Component Interconnect,简称PCI)总线或扩展工业标准结构(Extended Industry Standard Architecture,简称EISA)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。
存储器可以包括随机存取存储器(Random Access Memory,简称RAM),也可以包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。
上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(Digital Signal Processing,简称DSP)、专用集成电路(Application SpecificIntegrated Circuit,简称ASIC)、现场可编程门阵列(Field-Programmable Gate Array,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
根据本申请实施例的又一方面还提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述任一实施例的步骤。
可选地,在本申请实施例中,计算机可读介质被设置为存储用于所述处理器执行以下步骤的程序代码:
在第一进程接收到目标消息的情况下,将目标消息存储至第一缓存,并在异步任务池中创建目标消息的分布式存储任务,其中,目标消息为即时通讯客户端在目标群组中发送的即时通讯消息,第一进程用于接收即时通讯消息;
在第二进程检测到异步任务池中存在分布式存储任务的情况下,将第一缓存中的目标消息保存至多个第二缓存,其中,第二缓存为与目标群组中的多个即时通讯客户端对应的缓存,一个即时通讯客户端对应一个第二缓存,第二缓存用于对应的即时通讯客户端根据消息接收指令从第二缓存中读取目标消息。
可选地,本实施例中的具体示例可以参考上述实施例中所描述的示例,本实施例在此不再赘述。
本申请实施例在具体实现时,可以参阅上述各个实施例,具有相应的技术效果。
可以理解的是,本文描述的这些实施例可以用硬件、软件、固件、中间件、微码或其组合来实现。对于硬件实现,处理单元可以实现在一个或多个专用集成电路(ApplicationSpecific Integrated Circuits,ASIC)、数字信号处理器(Digital Signal Processing,DSP)、数字信号处理设备(DSP Device,DSPD)、可编程逻辑设备(Programmable LogicDevice,PLD)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)、通用处理器、控制器、微控制器、微处理器、用于执行本申请所述功能的其它电子单元或其组合中。
对于软件实现,可通过执行本文所述功能的单元来实现本文所述的技术。软件代码可存储在存储器中并通过处理器执行。存储器可以在处理器中或在处理器外部实现。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。需要说明的是,在本文中,诸如“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上所述仅是本申请的具体实施方式,使本领域技术人员能够理解或实现本申请。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所申请的原理和新颖特点相一致的最宽的范围。
Claims (13)
1.一种即时通讯的消息存储方法,应用于服务端,其特征在于,包括:
在第一进程接收到目标消息的情况下,将所述目标消息存储至第一缓存,并在异步任务池中创建所述目标消息的分布式存储任务,其中,所述目标消息为即时通讯客户端在目标群组中发送的即时通讯消息,所述第一进程用于接收所述即时通讯消息;
在第二进程检测到所述异步任务池中存在所述分布式存储任务的情况下,将所述第一缓存中的所述目标消息保存至多个第二缓存,其中,所述第二缓存为与所述目标群组中的多个即时通讯客户端对应的缓存,一个所述即时通讯客户端对应一个所述第二缓存,所述第二缓存用于对应的所述即时通讯客户端根据消息接收指令从所述第二缓存中读取所述目标消息。
2.根据权利要求1所述的方法,其特征在于,在第一进程接收到目标消息的情况下,将所述目标消息存储至第一缓存,并在异步任务池中创建所述目标消息的分布式存储任务具体包括:
在第一进程接收到目标消息的情况下,将所述目标消息存储至第一缓存;
在接收到所述目标消息存储至所述第一缓存成功的消息后,在异步任务池中创建所述目标消息的分布式存储任务;和/或
在接收到所述目标消息存储至所述第一缓存失败的消息后,放弃在异步任务池中创建所述目标消息的分布式存储任务。
3.根据权利要求1所述的方法,其特征在于,将所述第一缓存中的所述目标消息保存至多个第二缓存包括按照如下方式将所述目标消息保存至一个所述第二缓存:
从所述第一缓存中读取所述目标消息;
提取所述目标消息的消息体和识别标识,其中,所述消息体为服务端存储即时通讯消息的数据结构;
将所述识别标识推入所述第二缓存中的未读消息队列和历史消息队列,并将所述识别标识和所述消息体映射存储在所述第二缓存中。
4.根据权利要求3所述的方法,其特征在于,将所述识别标识推入所述第二缓存中的未读消息队列和历史消息队列,并将所述识别标识和所述消息体映射存储在所述第二缓存中之后,所述方法还包括:
将所述目标消息的识别标识和消息体推入后端消息队列;
在第三进程从所述后端消息队列中监听到所述目标消息的识别标识和消息体的情况下,将所述目标消息的识别标识和消息体映射存储于所述后端数据库中。
5.根据权利要求3所述的方法,其特征在于,将所述识别标识推入所述第二缓存中的未读消息队列和历史消息队列,并将所述识别标识和所述消息体映射存储在所述第二缓存中之后,所述方法还包括:
在接收到对所述目标消息的已读确认信息的情况下,将所述目标消息的识别标识推出所述第二缓存的未读消息队列,其中,所述已读确认信息为所述第二缓存对应的所述即时通讯客户端在从所述第二缓存中读取到所述目标消息后发送的。
6.根据权利要求3所述的方法,其特征在于,将所述识别标识推入所述第二缓存中的未读消息队列和历史消息队列,并将所述识别标识和所述消息体映射存储在所述第二缓存中之后,所述方法还包括:
在接收到目标即时通讯客户端发送的消息查询请求的情况下,确认所述消息查询请求的查询目标;
从所述第二缓存中的未读消息队列提取出所述查询目标的识别标识;和/或,
从所述第二缓存中的历史消息队列提取出所述查询目标的识别标识;
在所述第二缓存中确定与所述查询目标的识别标识映射存储的目标消息体,并向所述目标即时通讯客户端返回所述目标消息体。
7.根据权利要求6所述的方法,其特征在于,所述方法还包括:
在所述第二缓存的未读消息队列不包含所述查询目标的识别标识的情况下,从所述后端数据库中的未读消息队列提取出所述查询目标的识别标识;和/或,
在所述第二缓存的历史消息队列不包含所述查询目标的识别标识的情况下,从所述后端数据库中的历史消息队列提取出所述查询目标的识别标识。
8.根据权利要求6或7所述的方法,其特征在于,所述方法还包括:
在所述第二缓存中未找到与所述查询目标的识别标识映射存储的目标消息体的情况下,从所述后端数据库中确定与所述查询目标的识别标识映射存储的目标消息体。
9.根据权利要求1至7任一所述的方法,所述方法还包括:
在接收到消息撤回请求的情况下,确认所述消息撤回请求的撤回目标;
在所述第一缓存和所述异步任务池中删除所述撤回目标的消息体和识别标识;
若异步任务已经执行,则删除第二缓存和后端消息队列中存储的所述撤回目标的消息体和识别标识;
若后端消息队列已执行,则删除后端数据库中存储的所述撤回目标的消息体和识别标识。
10.根据权利要求1至7任一所述的方法,其特征在于,将所述第一缓存中的所述目标消息保存至多个第二缓存包括:
确定所有所述即时通讯客户端的消息响应度,其中,所述消息响应度包括所述即时通讯客户端从对应的所述第二缓存中读取消息的频率和主动接收未读消息的平均时长;
按照所述消息响应度对所有所述第二缓存排序;
创建至少一个线程;
通过所述线程,从所述第一缓存中读取所述目标消息,并按照所述第二缓存的排序顺序依次将所述目标消息写入所有所述第二缓存中。
11.一种即时通讯的消息存储装置,其特征在于,包括:
中间存储模块,用于在第一进程接收到目标消息的情况下,将所述目标消息存储至第一缓存,并在异步任务池中创建所述目标消息的分布式存储任务,其中,所述目标消息为即时通讯客户端在目标群组中发送的即时通讯消息,所述第一进程用于接收所述即时通讯消息;
分布式存储模块,用于在第二进程检测到所述异步任务池中存在所述分布式存储任务的情况下,将所述第一缓存中的所述目标消息保存至多个第二缓存,其中,所述第二缓存为与所述目标群组中的多个即时通讯客户端对应的缓存,一个所述即时通讯客户端对应一个所述第二缓存,所述第二缓存用于对应的所述即时通讯客户端根据消息接收指令从所述第二缓存中读取所述目标消息。
12.一种电子设备,包括存储器、处理器、通信接口及通信总线,所述存储器中存储有可在所述处理器上运行的计算机程序,所述存储器、所述处理器通过所述通信总线和所述通信接口进行通信,其特征在于,所述处理器执行所述计算机程序时实现上述权利要求1至10任一项所述的方法的步骤。
13.一种具有处理器可执行的非易失的程序代码的计算机可读介质,其特征在于,所述程序代码使所述处理器执行所述权利要求1至10任一所述方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111160494.6A CN113886494A (zh) | 2021-09-30 | 2021-09-30 | 即时通讯的消息存储方法、装置、设备及计算机可读介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111160494.6A CN113886494A (zh) | 2021-09-30 | 2021-09-30 | 即时通讯的消息存储方法、装置、设备及计算机可读介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113886494A true CN113886494A (zh) | 2022-01-04 |
Family
ID=79004812
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111160494.6A Pending CN113886494A (zh) | 2021-09-30 | 2021-09-30 | 即时通讯的消息存储方法、装置、设备及计算机可读介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113886494A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114338584A (zh) * | 2022-01-11 | 2022-04-12 | 平安科技(深圳)有限公司 | 消息撤回方法和消息传输系统 |
CN115002062A (zh) * | 2022-05-25 | 2022-09-02 | 中国平安财产保险股份有限公司 | 消息处理方法、装置、设备及可读存储介质 |
CN115473866A (zh) * | 2022-09-14 | 2022-12-13 | 康键信息技术(深圳)有限公司 | 一种会话管理方法、系统、设备及存储介质 |
CN116016805A (zh) * | 2023-03-27 | 2023-04-25 | 四川弘和通讯集团有限公司 | 数据处理方法、装置、电子设备及存储介质 |
-
2021
- 2021-09-30 CN CN202111160494.6A patent/CN113886494A/zh active Pending
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114338584A (zh) * | 2022-01-11 | 2022-04-12 | 平安科技(深圳)有限公司 | 消息撤回方法和消息传输系统 |
CN114338584B (zh) * | 2022-01-11 | 2023-11-14 | 平安科技(深圳)有限公司 | 消息撤回方法和消息传输系统 |
CN115002062A (zh) * | 2022-05-25 | 2022-09-02 | 中国平安财产保险股份有限公司 | 消息处理方法、装置、设备及可读存储介质 |
CN115002062B (zh) * | 2022-05-25 | 2024-04-05 | 中国平安财产保险股份有限公司 | 消息处理方法、装置、设备及可读存储介质 |
CN115473866A (zh) * | 2022-09-14 | 2022-12-13 | 康键信息技术(深圳)有限公司 | 一种会话管理方法、系统、设备及存储介质 |
CN116016805A (zh) * | 2023-03-27 | 2023-04-25 | 四川弘和通讯集团有限公司 | 数据处理方法、装置、电子设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113886494A (zh) | 即时通讯的消息存储方法、装置、设备及计算机可读介质 | |
CN103780679B (zh) | 基于http协议的长延时远程调用方法 | |
WO2016177285A1 (zh) | 一种数据推送方法及装置 | |
CN103312624B (zh) | 一种消息队列服务系统和方法 | |
CN110413650B (zh) | 一种业务数据的处理方法、装置、设备和存储介质 | |
CN104125163B (zh) | 一种数据处理方法、装置及终端 | |
CN103581230A (zh) | 文件传输系统和方法、接收端、发送端 | |
CN105812351A (zh) | 实现会话共享的方法和系统 | |
CN103024053A (zh) | 云存储方法、资源调度系统、云存储节点及系统 | |
CN102769640B (zh) | 用户信息的更新方法、服务器以及系统 | |
CN108512930B (zh) | 一种共享文件的管理方法、装置、服务器和存储介质 | |
CN109787884B (zh) | 一种消息推送方法和装置 | |
US11055259B2 (en) | Method and system for deleting obsolete files from a file system | |
CN101977361A (zh) | 一种批量短信预处理方法 | |
CN112256776A (zh) | 表单重复提交检测方法、装置、计算机设备和存储介质 | |
CN111597259A (zh) | 数据存储系统、方法、装置、电子设备及存储介质 | |
CN113656178B (zh) | 数据处理方法、装置、设备及可读存储介质 | |
US20200311029A1 (en) | Key value store using generation markers | |
CN112099864A (zh) | 一种异步数据的处理方法及装置 | |
US9626378B2 (en) | Method for handling requests in a storage system and a storage node for a storage system | |
CN102325098A (zh) | 群信息获取方法和系统 | |
CN104376097A (zh) | 基于Windows服务程序的主动式缓存方法 | |
CN108769244B (zh) | 一种存储任务信息获取方法及相关装置 | |
WO2019242279A1 (zh) | 一种消息处理方法及装置 | |
CN107040455B (zh) | 一种基于redis的即时消息通讯方法和系统 |
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 |