CN103503388B - 一种分布式队列消息读取方法及设备、系统 - Google Patents

一种分布式队列消息读取方法及设备、系统 Download PDF

Info

Publication number
CN103503388B
CN103503388B CN201180001873.9A CN201180001873A CN103503388B CN 103503388 B CN103503388 B CN 103503388B CN 201180001873 A CN201180001873 A CN 201180001873A CN 103503388 B CN103503388 B CN 103503388B
Authority
CN
China
Prior art keywords
message
internal indicator
distributed
client
distributed 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
CN201180001873.9A
Other languages
English (en)
Other versions
CN103503388A (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.)
Shenzhen Huawei Cloud Computing Technology Co ltd
Original Assignee
Huawei Technologies 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 Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Publication of CN103503388A publication Critical patent/CN103503388A/zh
Application granted granted Critical
Publication of CN103503388B publication Critical patent/CN103503388B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9063Intermediate storage in different physical parts of a node or terminal

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer And Data Communications (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

一种分布式队列消息读取方法及设备、系统,该方法包括:接收客户端发送的获取消息请求;从分布式队列中获取与所述获取消息请求对应的消息,所述消息中携带有内部标识ID;提取所述消息携带的内部标识ID,并且判断分布式数据库中是否存储有所述内部标识ID;若是,则删除所述分布式数据库中存储的所述消息携带的内部标识ID,以及从获取的所述消息中删除所述内部标识ID,并将删除了所述内部标识ID的消息发送给所述客户端。本发明实施例可以避免客户端从分布式队列中读取到相同的消息,降低消息重复处理的风险。

Description

一种分布式队列消息读取方法及设备、系统
技术领域
本发明涉及数据处理领域,尤其涉及一种分布式队列消息读取方法及设备、系统。
背景技术
随着云计算兴起,分布式也成为软件设计开发的趋势,而分布式软件开发的核心之一就是分布式队列。在分布式队列中,为了提高分布式队列的可靠性,分布式队列在存储一条消息时往往存储该消息的多个副本;而当分布式队列的某一条消息被客户端读取时,分布式队列需要删除该消息的所有副本,从而避免相同的消息被客户端读取后进行重复处理,影响业务流程。
实际应用中,分布式队列可能存在大量并发访问,分布式队列某一条消息被读取后,需要一段时间来删除该消息的所有副本,当该消息的副本数量较多时,删除该消息的所有副本所需要的一段时间也较长,在这段时间内客户端可能读取到相同的消息,加剧了消息重复处理的风险。
发明内容
针对上述缺陷,本发明实施例提供的一种分布式队列消息读取方法及设备、系统,能够避免客户端从分布式队列中读取到相同的消息,降低消息重复处理的风险。
一种分布式队列消息读取方法,包括:
接收客户端发送的获取消息请求;
从分布式队列中获取与所述获取消息请求对应的消息,所述消息中携带有内部标识ID;
提取所述消息携带的内部标识ID,并且判断分布式数据库中是否存储有所述内部标识ID;若是,则删除所述分布式数据库中存储的所述消息携带的内部标识ID,以及从获取的所述消息中删除所述内部标识ID,并将删除了所述内部标识ID的消息发送给所述客户端。
另一种分布式队列消息读取方法,包括:
接收客户端发送的获取消息请求;
从分布式队列中获取与所述获取消息请求对应的消息,所述消息中携带有内部标识ID;
提取所述消息的内部标识ID,并根据所述内部标识ID确定出对应的分布式行级锁,若所述分布式行级锁中存储的Value值表示可读,则将所述Value值置为表示不可读,以及从获取的所述消息中删除所述内部标识ID,并将删除了所述内部标识ID的消息发送给所述客户端。
一种分布式队列消息读取设备,包括:
接收单元,用于接收客户端发送的获取消息请求;
获取单元,用于从分布式队列中获取与所述获取消息请求对应的消息,所述消息中携带有内部标识ID;
判断单元,用于提取所述消息的内部标识ID,并且判断分布式数据库中是否存储有所述内部标识ID;
控制单元,用于在所述判断单元的判断结果为是时,删除所述分布式数据库中存储的所述消息携带的内部标识ID,以及从获取的所述消息中删除所述内部标识ID,并将删除了所述内部标识ID的消息发送给所述客户端;
所述分布式数据库,用于存储所述消息的内部标识ID。
另一种分布式队列消息读取设备,包括:
第二接收单元,用于接收客户端发送的获取消息请求;
第二获取单元,用于从分布式队列中获取与所述获取消息请求对应的消息,所述消息中携带有内部标识ID;
提取单元,用于提取所述消息的内部标识ID,并根据所述内部标识ID确定出对应的分布式行级锁;
识别单元,用于识别所述分布式行级锁中存储的Value值是否表示可读;
第二控制单元,用于在所述分布式行级锁中存储的Value值表示可读时,将所述Value值置为表示不可读,以及从获取的所述消息中删除所述内部标识ID,并将删除了所述内部标识ID的消息发送给所述客户端。
一种分布式队列消息读取系统,包括客户端以及上述任意一种分布式队列消息读取设备;
所述客户端,用于发送获取消息请求给所述分布式队列消息读取设备,以及接收所述分布式队列消息读取设备发送的与所述获取消息请求对应的消息进行业务处理。
本发明实施例中,当接收到客户端发送的获取消息请求后,可以从分布式队列中获取与该获取消息请求对应的消息并提取该消息携带的内部标识ID,若分布式数据库中存储有该内部标识ID,则删除分布式数据库中存储的该消息携带的内部标识ID,以及从该消息中删除该内部标识ID,并将删除了该内部标识ID的消息发送给客户端。基于该技术方案,当任意客户端对已经读取过的消息进行重复读取时,即使分布式队列中存在相同的消息(即消息的副本),也会因为分布式数据库中已删除了该消息携带的内部标识ID,而不会发送给客户端进行处理,从而可以避免客户端从分布式队列中读取到相同的消息,降低消息重复处理的风险。
本发明实施例中,当接收到客户端发送的获取消息请求后,可以从分布式队列中获取与该获取消息请求对应的消息并提取该消息携带的内部标识ID,以及根据该消息携带的内部标识ID确定出分布式行级锁后,识别分布式行级锁中存储的Value值是否表示可读,若表示可读,则将该Value值置为表示不可读,以及从该消息中删除该内部标识ID,并将删除了该内部标识ID的消息发送给客户端。基于该技术方案,当任意客户端对已经读取过的消息进行重复读取时,即使分布式队列中存在相同的消息(即消息的副本),也会因为分布式行级锁中的Value值表示不可读,而不会发送给客户端进行处理,从而可以防止客户端从分布式队列中读取到相同的消息,降低消息重复处理的风险。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种分布式队列消息读取方法的流程示意图;
图2为图1所示方法包含的分布式队列消息存储方法的流程示意图;
图3为图2所示的分布式队列消息存储方法的模块化示意图;
图4为本发明实施例提供的另一种分布式队列消息读取方法的流程示意图;
图5为本发明实施例提供的又一种分布式队列消息读取方法的流程示意图;
图6为本发明实施例提供的另一种分布式队列消息读取方法的模块化示意图;
图7、图8为本发明实施例提供的分布式队列消息读取设备的结构示意图;
图9为本发明实施例提供的分布式队列消息读取系统的结构示意图;
图10为本发明实施例提供的又一种分布式队列消息读取方法的流程示意图;
图11为图10所示方法包含的分布式队列消息存储方法的流程示意图;
图12为图11所示的分布式队列消息存储方法的模块化示意图;
图13为本发明实施例提供的另一种分布式队列消息读取方法的流程示意图;
图14为本发明实施例提供的又一种分布式队列消息读取方法的流程示意图;
图15为本发明实施例提供的一种DHT的原理图;
图16、图17为本发明实施例提供的分布式队列消息读取设备的结构示意图;
图18为本发明实施例提供的另一种分布式队列消息读取系统的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例中提供了一种方法、系统和设备,用于降低了接入设备的复杂度和负担。以下分别进行详细说明。
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例提供的一种分布式队列消息读取方法及设备、系统,能够避免客户端从分布式队列中读取到相同的消息,降低消息重复处理的风险。以下分别进行详细说明。
请参阅图1,图1为本发明实施例提供的一种分布式队列消息读取方法的流程示意图。如图1所示,该方法可以包括以下步骤:
101、接收客户端发送的获取消息请求。
一个实施例中,可以由去重复代理服务器来接收客户端发送的获取消息请求。一般地,客户端发送的获取消息请求中都会携带有指示信息(例如消息自身标识),该指示信息用于指示客户端希望获取到的消息,这是本领域技术人员公知的常识,本发明实施例不作详细介绍。
102、从分布式队列中获取与上述获取消息请求对应的消息,其中,该消息中携带有内部标识ID;
一个实施例中,从分布式队列中获取与上述获取消息请求对应的消息具体可以为:
去重复代理服务器将客户端发送的获取消息请求转发至分布式队列,并且接收分布式队列发送的与上述获取消息请求对应的消息。
其中,分布式队列可以根据客户端发送的获取消息请求中携带的指示信息(例如消息自身标识),将与上述获取消息请求对应的消息发送给去重复代理服务器。
103、提取上述消息的内部标识ID,并且判断分布式数据库中是否存储有该内部标识ID;若是,则执行步骤104;若否,则执行步骤105。
一个实施例中,去重复代理服务器提取上述消息的内部标识ID之后,可以将提取的内部标识ID和分布式数据库中存储的内部标识ID进行比对,如果发现分布式数据库中存储有上述消息携带的内部标识ID(即所提取的内部标识ID与分布式数据库中存储的某一个内部标识ID相同),则说明当前从分布式队列中获取的与上述获取消息请求对应的消息还没有被客户端读取过,进而可以执行步骤104;反之,如果发现分布式数据库中没有存储上述消息携带的内部标识ID(即提取的内部标识ID与分布式数据库中存储的内部标识ID均不相同),则说明当前从分布式队列中获取的与上述获取消息请求对应的消息已经被客户端读取过,进而可以执行步骤105。
104、删除分布式数据库中存储的上述消息携带的内部标识ID,以及从获取的上述消息中删除上述内部标识ID,并将删除了上述内部标识ID的消息发送给客户端。
一个实施例中,如果发现从上述消息中提取的内部标识ID与分布式数据库中存储的某一个内部标识ID相同,则说明当前从分布式队列中获取的与上述获取消息请求对应的消息还没有被客户端读取过,此时去重复代理服务器可以删除分布式数据库中存储的上述消息携带的内部标识ID。这样即使分布式队列中还存在相同的消息(即消息的副本),也会因为分布式数据库中已删除了该消息中携带的内部标识ID,而不会发送给客户端进行处理,从而可以防止客户端从分布式队列中读取到相同的消息,降低消息重复处理的风险。
另外,去重复代理服务器删除分布式数据库中存储的上述消息携带的内部标识ID之后,可以将上述消息携带的内部标识ID删除,并将已删除内部标识ID的消息发送给客户端,使客户端可以对该消息进行业务处理。
105、发送错误响应给客户端。
一个实施例中,如果发现从上述消息中提取的内部标识ID与分布式数据库中存储的内部标识ID均不相同,则说明当前从分布式队列中获取的与上述获取消息请求对应的消息已经被客户端读取过,去重复代理服务器可以发送错误响应null给客户端,防止客户端从分布式队列中读取到相同的消息进行重复处理。
一个实施例中,本发明实施例提供的上述方法还可以包括以下步骤:
分布式队列发送与上述获取消息请求对应的消息给去重复代理服务器之后,分布式队列可以删除上述获取消息请求对应的消息的所有副本,从而可以尽量地避免客户端从分布式队列中读取到相同的消息进行重复处理,也使得分布式队列保持尽可能多的空闲空间,用于存储其他的消息及其副本。
一个实施例中,对应于上述读取过程,本发明实施例提供的上述方法在上述步骤101之前还可以包括消息的存储过程,该存储过程可以包括以下步骤:
A、去重复代理服务器接收客户端的输入消息。
B、去重复代理服务器为客户端输入消息生成内部标识ID,并将所述内部标识ID加入客户端输入消息。
一个实施例中,去重复代理服务器可以采用随机生成方式或哈希HASH算法为客户端输入消息生成内部标识ID,其中,去重复代理服务器为每一个客户端输入消息生成的内部标识ID互不相同。
C、去重复代理服务器将加入内部标识ID后的消息存储到分布式队列;其中,分布式队列还存储至少一个加入内部标识ID后的消息的副本。
D、去重复代理服务器将为客户端输入消息生成的内部标识ID存储到分布式数据库。
其中,通过上述步骤A~B,去重复代理服务器可以为客户端输入消息生成内部标识ID,并加入客户端输入消息,以及将加入内部标识ID后的消息存储到分布式队列,以及将为客户端输入消息生成的内部标识ID存储到分布式数据库,使得去重复代理服务器可以根据图1所示的方法进行分布式队列消息读取,避免客户端从分布式队列中读取到相同的消息,降低消息重复处理的风险。
其中,上述步骤C、步骤D之间的顺序可以调换,或者上述步骤C、步骤D可以同时进行,本发明实施例不作限定。
本发明实施例中,分布式队列存储的消息中携带有内部标识ID,当接收到客户端发送的获取消息请求后,可以从分布式队列中获取与该获取消息请求对应的消息,并判断分布式数据库中是否存储有该内部标识ID,如果有(即提取的内部标识ID与分布式数据库中存储的某一个内部标识ID相同),则可以删除分布式数据中存储的上述消息携带的内部标识ID,以及删除上述消息携带的内部标识ID,以及将删除了内部标识ID的消息发送给客户端。基于上述技术方案,即使分布式队列中存在相同的消息(即消息的副本),也会因为分布式数据库中已删除了该消息中携带的内部标识ID,而不会发送给客户端进行处理,从而可以防止客户端从分布式队列中读取到相同的消息,降低消息重复处理的风险。
请参阅图2,图2为图1所示方法包含的分布式队列消息存储方法的流程示意图。如图2所示,该分布式队列消息存储方法包括以下步骤:
201、去重复代理服务器接收客户端输入的消息M。
202、去重复代理服务器采用HASH算法为消息M生成内部标识ID,并将生成的内部标识ID加入消息M。
203、去重复代理服务器将为消息M生成的内部标识ID存储到分布式数据库。
204、去重复代理服务器接收分布式数据库返回的存储确认消息OK。
205、去重复代理服务器将加入内部标识ID后的消息M存储到分布式队列;其中,分布式队列还存储至少一个加入内部标识ID后的消息M的副本。
在图2所示方法中,也可以先执行上述步骤205,然后再执行步骤203和步骤204,本发明实施例不作限定。
在图2所示方法的基础上,去重复代理服务器可以根据图1所示的方法进行分布式队列消息读取,避免客户端从分布式队列中读取到相同的消息,降低消息重复处理的风险。
请参阅图3,图3为图2所示的分布式队列消息存储方法的模块化示意图。如图3所示,该分布式队列消息存储方法的过程如下:
(1)、客户端A发送消息给去重复代理服务器;
(2)、去重复代理服务器为客户端A发送的消息生成一个内部标识ID,并将该内部标识ID存入分布式数据库;
(3)、去重复代理服务器将加入内部标识ID后的客户端A发送的消息发送到分布式队列存储;其中,分布式队列还存储至少一个加入内部标识ID后的客户端A发送的消息的副本。
在图3所示模块图的基础上,去重复代理服务器可以根据图1所示的方法进行分布式队列消息读取,避免客户端从分布式队列中读取到相同的消息,降低消息重复处理的风险。
请参阅图4,图4为本发明实施例提供的另一种分布式队列消息读取方法的流程示意图。如图4所示,该分布式队列消息读取方法包括以下步骤:
401、去重复代理服务器接收客户端发送的获取消息请求Get。
402、去重复代理服务器将客户端发送的获取消息请求Get转发至分布式队列。
403、去重复代理服务器接收分布式队列发送的与上述获取消息请求Get对应的消息M,其中,该消息M中携带有内部标识ID。
404、去重复代理服务器提取上述消息M的内部标识ID。
405、去重复代理服务器基于提取的内部标识ID,判断出分布式数据库中没有存储有该内部标识ID(即提取的内部标识ID与分布式数据中存储的内部标识ID均不相同)。
406、去重复代理服务器发送错误响应null给客户端。
在图4所示的方法中,去重复代理服务器判断出分布式数据库中没有存储有该内部标识ID(即提取的内部标识ID与分布式数据中存储的内部标识ID均不相同),说明当前分布式队列发送的与上述获取消息请求Get对应的消息M已经被客户端读取过,去重复代理服务器可以发送错误响应null给客户端,避免客户端从分布式队列中读取到相同的消息进行重复处理。
请参阅图5,图5为本发明实施例提供的又一种分布式队列消息读取方法的流程示意图。如图5所示,该分布式队列消息读取方法包括以下步骤:
501、去重复代理服务器接收客户端发送的获取消息请求Get。
502、去重复代理服务器将客户端发送的获取消息请求Get转发至分布式队列。
503、去重复代理服务器接收分布式队列发送的与上述获取消息请求Get对应的消息M,其中,该消息M中携带有内部标识ID。
其中,分布式队列将与上述获取消息请求Get对应的消息M发送给去重复代理服务器之后,可以删除分布式队列中存储的消息M的所有副本。
504、去重复代理服务器提取上述消息M的内部标识ID。
505、去重复代理服务器基于提取的内部标识ID,判断出分布式数据库中存储有该内部标识ID(即提取的内部标识ID与分布式数据中存储的某一个内部标识ID相同)。
506、去重复代理服务器删除分布式数据库中存储的上述消息携带的内部标识ID。
507、去重复代理服务器将上述消息携带的内部标识ID删除,并将删除了内部标识ID的消息发送给客户端。
在图5所示的方法中,即使分布式队列中存在相同的消息(即消息的副本),也会因为分布式数据库中已删除了该消息中携带的内部标识ID,而不会发送给客户端进行处理,从而可以避免客户端从分布式队列中读取到相同的消息,降低消息重复处理的风险。
一个实施例中,分布式队列可能存在大量客户端并发访问,在这种情况下,应用本发明实施例提供的上述方法,可以避免客户端从分布式队列中读取到相同的消息,降低消息重复处理的风险。以下通过具体实施例进行详细说明。
请参阅图6,图6为本发明实施例提供的另一种分布式队列消息读取方法的模块化示意图。如图6所示,客户端A、B、C分别通过各自对应的去重复代理服务器并发访问分布式队列,即客户端A通过其对应的去重复代理服务器发送获取消息请求至分布式队列;客户端B通过其对应的去重复代理服务器发送获取消息请求至分布式队列;客户端C通过其对应的去重复代理服务器发送获取消息请求至分布式队列,从而构成对分布式队列的并发访问。
假设客户端A、B、C均需要读取分布式队列存储的消息M,则分布式队列在接收到客户端A、B、C通过各自对应的去重复代理服务器发送的获取消息请求之后,会对客户端A、B、C发送的获取消息请求逐一进行处理。例如,分布式队列可以根据预设策略或根据随机方式选取出客户端A发送的获取消息请求进行处理,即分布式队列可以根据客户端A发送的获取消息请求中携带的指示信息(例如消息自身标识),将与客户端A发送的获取消息请求对应的消息M发送给客户端A对应的去重复代理服务器;客户端A对应的去重复代理服务器接收到分布式队列发送的与客户端A发送的获取消息请求对应的消息M后,可以提取该消息M的内部标识ID,并且判断分布式数据库中是否存储有该内部标识ID,如果有,则删除分布式数据库中存储的该消息M携带的内部标识ID,以及将该消息M携带的内部标识ID删除,以及将删除了内部标识ID的消息发送给客户端A。
其中,分布式队列将与客户端A发送的获取消息请求对应的消息M发送给客户端A对应的去重复代理服务器之后,分布式队列可以启动删除消息M的所有副本操作。由于分布式队列删除消息M的所有副本是需要一段时间的,而在这段时间内分布式队列还会继续对客户端B、C的获取消息请求进行处理,因此在分布式队列删除完毕消息M的所有副本之前,分布式队列仍有可能将消息M的副本发送给客户端B或客户端C对应的去重复代理服务器。进一步地,假设分布式队列将消息M的副本发送给客户端B对应的去重复代理服务器,那么客户端B对应的去重复代理服务器接收到分布式队列发送的与客户端B发送的获取消息请求对应的M消息(即副本)后,可以提取该消息M的内部标识ID,并且判断分布式数据库中没有存储有该内部标识ID(已被客户端A对应的去重复代理服务器删除),则客户端B对应的去重复代理服务器发送错误响应null给客户端B,从而可以避免客户端B从分布式队列中读取到相同的消息M进行重复处理。
由此可见,本发明实施例提供的上述方法即使在分布式队列存在大量客户端并发访问的情况下,也可以避免客户端从分布式队列中读取到相同的消息,降低消息重复处理的风险。
本发明实施例中,在不损失分布式优势的情况下,去重复代理服务器对客户端是透明的,客户端还是像现有技术一样使用分布式队列,分布式队列不需要处理客户端读取重复的情况,降低了客户端使用分布式队列的难度,而且简化了使用分布式队列的分布式软件的设计与开发。
请参阅图7,图7为本发明实施例提供的一种分布式队列消息读取设备的结构示意图。如图7所示,该设备可以包括:
接收单元701,用于接收客户端发送的获取消息请求;
获取单元702,用于从分布式队列中获取与上述获取消息请求对应的消息,该消息中携带有内部标识ID;
判断单元703,用于基于提取的内部标识ID,判断分布式行数据库705中是否存储有该内部标识ID;
控制单元704,用于在判断单元703的判断结果为是时,删除分布式数据库705中存储的上述消息携带的内部标识ID,以及从获取的上述消息中删除上述内部标识ID,并将删除了上述内部标识ID的消息发送给客户端;或者用于在判断单元703的判断结果为否时,发送错误响应给客户端;
分布式数据库705,用于存储上述消息的内部标识ID;
请参阅图8,图8为本发明实施例提供的另一种分布式队列消息读取设备的结构示意图。如图8所示,该设备在图7所示设备的基础上,进一步还包括生成单元706、存储单元707。在图8所示的设备中,接收单元701还用于接收客户端输入消息,相应地,生成单元706用于为客户端输入消息生成内部标识ID,并加入客户端输入消息;存储单元707用于将加入内部标识ID后的客户端输入消息存储到分布式队列;其中,该分布式队列还存储至少一个加入内部标识ID后的客户端输入消息的副本;以及将为客户端输入消息生成的内部标识ID存储到分布式数据库705。
作为一个可选的实施方式,图8所示的设备中生成单元706具体用于采用随机生成方式或哈希HASH算法为客户端输入消息生成内部标识ID,并加入客户端输入消息;其中,为每一个客户端输入消息生成的内部标识ID互不相同。
作为一个可选的实施方式,图7、图8所示的设备中,获取单元702具体用于将客户端发送的获取消息请求转发至分布式队列,以及接收分布式队列发送的与上述获取消息请求对应的消息,该消息中携带有内部标识ID。
一个实施例中,分布式队列发送与上述获取消息请求对应的消息给获取单元702之后,分布式队列还用于该消息的所有副本。
本发明实施例中,分布式队列存储的消息中携带有内部标识ID,当接收单元701接收到客户端发送的获取消息请求后,获取单元702可以从分布式队列中获取与该获取消息请求对应的消息,判断单元703基于提取的内部标识ID,可以判断分布式数据库中是否存储有该内部标识ID,如果有,则控制单元704删除分布式数据库705中存储的上述消息携带的内部标识ID,以及将上述消息携带的内部标识ID删除,以及将删除了内部标识ID的消息发送给客户端。基于上述技术方案,即使分布式队列中存在相同的消息(即消息的副本),也会因为分布式数据库中已删除了该消息携带的内部标识ID,而不会发送给客户端进行处理,从而可以防止客户端从分布式队列中读取到相同的消息,降低消息重复处理的风险。
请参阅图9,图9为本发明实施例提供的一种分布式队列消息读取系统的结构示意图。如图9所示,该系统可以包括客户端901以及分布式队列消息读取设备902;其中,分布式队列消息读取设备902的结构、功能均与图7或图8所示的分布式队列消息读取设备相同,本发明实施例不作复述。
其中,客户端901用于发送获取消息请求给分布式队列消息读取设备902,以及接收分布式队列消息读取设备902发送的与获取消息请求对应的消息进行业务处理。
本发明实施例提供的分布式队列消息读取系统可以避免客户端901从分布式队列中读取到相同的消息,降低消息重复处理的风险。
在上述实施例描述的方法、设备和系统中,为客户端输入消息生成的内部标识ID是存储在分布式数据库中的,进而可以避免客户端从分布式队列中读取到相同的消息,降低消息重复处理的风险。作为另一种可选的实施方式,为客户端输入消息生成的内部标识ID也可以存储在分布式行级锁中,同样可以避免客户端从分布式队列中读取到相同的消息,降低消息重复处理的风险。以下分别进行详细说明。
请参阅图10,图10为本发明实施例提供的另一种分布式队列消息读取方法的流程示意图。如图10所示,该方法可以包括以下步骤:
其中,步骤1001、1002分别与上述实施例中的步骤101、102相同,本发明实施例此处不作复述。
1003、提取上述消息的内部标识ID,并根据该内部标识ID确定出对应的分布式行级锁。
本发明实施例中,每一个分布式行级锁中均存储一个关键值key-Value值对,如果某一个分布式行级锁中存储的关键值key=上述内部标识ID,则可以确定出对应的分布式行级锁。本发明实施例后续将对分布式行级锁进行详细介绍。
1004、判断确定出的分布式行级锁中存储的Value值是否表示可读,如果是,则执行步骤1005;如果否,则执行步骤1006。
一个实施例中,Value值=上述内部标识ID时,可以表示可读,而Value值为其他数值时表示不可读;或者,Value值为非零值时表示可读,而Value值为零时表示不可读,本发明实施例不作限定。
一个实施例中,去重复代理服务器提取上述消息的内部标识ID之后,可以根据该内部标识ID确定出对应的分布式行级锁,如果发现分布式行级锁中存储的Value值表示可读,则说明当前从分布式队列中获取的与上述获取消息请求对应的消息还没有被客户端读取过,进而可以执行步骤1005;反之,如果发现分布式行级锁中存储的Value值表示不可读,则说明当前从分布式队列中获取的与上述获取消息请求对应的消息已经被客户端读取过,进而可以执行步骤1006。
1005、将Value值置为表示不可读,以及从获取的上述消息中删除上述内部标识ID,并将删除了上述内部标识ID的消息发送给客户端。
一个实施例中,如果发现分布式行级锁中存储的Value值表示可读,则说明当前从分布式队列中获取的与上述获取消息请求对应的消息还没有被客户端读取过,此时去重复代理服务器可以将分布式行级锁中存储的Value值置为表示不可读,这样即使分布式队列中还存在相同的消息(即消息的副本),也会因为分布式行级锁中存储的Value值表示不可读,而不会发送给客户端进行处理,从而可以避免客户端从分布式队列中读取到相同的消息,降低消息重复处理的风险。
另外,去重复代理服务器将分布式行级锁中存储的Value值设为表示不可读之后,可以删除上述消息携带的内部标识ID,并将已删除内部标识ID的消息发送给客户端,使得客户端可以对该消息进行业务处理。
1006、发送错误响应给客户端。
一个实施例中,如果发现分布式行级锁中存储的Value值表示不可读,则说明当前从分布式队列中获取的与上述获取消息请求对应的消息已经被客户端读取过,去重复代理服务器可以发送错误响应null给客户端,避免客户端从分布式队列中读取到相同的消息进行重复处理。
一个实施例中,图10所示的方法还可以包括以下步骤:
分布式队列发送与上述获取消息请求对应的消息给去重复代理服务器之后,分布式队列可以删除上述获取消息请求对应的消息的所有副本,从而可以尽量地避免客户端从分布式队列中读取到相同的消息进行重复处理,也使得分布式队列保持尽可能多的空闲空间,用于存储其他的消息及其副本。
一个实施例中,对应于上述读取过程,图10所示的方法在上述步骤1001之前还可以包括消息的存储过程,该存储过程可以包括以下步骤:
A、去重复代理服务器接收客户端的输入消息。
B、去重复代理服务器为客户端输入消息生成内部标识ID,并将该内部标识ID加入客户端输入消息。
一个实施例中,去重复代理服务器可以采用随机生成方式或哈希HASH算法为客户端输入消息生成内部标识ID,其中,去重复代理服务器为每一个客户端输入消息生成的内部标识ID互不相同。
C、去重复代理服务器将加入内部标识ID后的消息存储到分布式队列;其中,分布式队列还存储至少一个加入内部标识ID后的消息的副本。
D、将为客户端输入消息生成的内部标识ID作为关键值key存储到分布式行级锁中,该关键值key与一个Value值匹配(即分布式行级锁中存储一个key-Value值对),Value值表示可读。
其中,通过上述步骤A~B,去重复代理服务器可以为客户端输入消息生成内部标识ID,并加入客户端输入消息,以及将加入内部标识ID后的消息存储到分布式队列,以及将为客户端输入消息生成的内部标识ID存储到分布式行级锁,使得去重复代理服务器可以根据图10所示的方法进行分布式队列消息读取,避免客户端从分布式队列中读取到相同的消息,降低消息重复处理的风险。
其中,上述步骤C、步骤D之间的顺序可以调换,或者上述步骤C、步骤D可以同时进行,本发明实施例不作限定。
图10所示的方法中,当接收到客户端发送的获取消息请求后,去重复代理服务器可以从分布式队列中获取与该获取消息请求对应的消息并提取该消息携带的内部标识ID,以及根据该消息携带的内部标识ID确定出分布式行级锁后,识别分布式行级锁中存储的Value值是否表示可读,若可读,则将该Value值置为表示不可读,以及将该消息携带的内部标识ID删除,以及将删除内部标识ID的消息发送给客户端。基于该技术方案,即使分布式队列中存在相同的消息(即消息的副本),也会因为分布式行级锁中的Value值表示不可读,而不会发送给客户端进行处理,从而可以避免客户端从分布式队列中读取到相同的消息,降低消息重复处理的风险。
请参阅图11,图11为图10所示方法包含的分布式队列消息存储方法的流程示意图。如图11所示,该分布式队列消息存储方法包括以下步骤:
1101、去重复代理服务器接收客户端输入的消息M。
1102、去重复代理服务器采用HASH算法为消息M生成内部标识ID,并将生成的内部标识ID加入消息M。
1103、去重复代理服务器将为消息M生成的内部标识ID,将该内部标识ID作为关键值key存储到分布式行级锁中,该关键值key与一个Value值匹配(即分布式行级锁中存储一个key-Value值对),该Value值表示可读。
1104、去重复代理服务器接收分布式行级锁返回的存储确认消息OK。
1105、去重复代理服务器将加入内部标识ID后的消息M存储到分布式队列;其中,分布式队列还存储至少一个加入内部标识ID后的消息M的副本。
在图11所示方法中,也可以先执行上述步骤1105,然后再执行步骤1103和步骤1104,本发明实施例不作限定。
在图11所示方法的基础上,去重复代理服务器可以根据图10所示的方法进行分布式队列消息读取,避免客户端从分布式队列中读取到相同的消息,降低消息重复处理的风险。
请参阅图12,图12为图11所示的分布式队列消息存储方法的模块化示意图。如图12所示,该分布式队列消息存储方法的过程如下:
(1)、客户端A发送消息给去重复代理服务器;
(2)、去重复代理服务器为客户端A发送的消息生成一个内部标识ID,并将该内部标识ID作为关键值key存储到分布式行级锁中,该关键值key与一个Value值匹配(即分布式行级锁中存储一个key-Value值对),Value值表示可读;
(3)、去重复代理服务器将加入内部标识ID后的客户端A发送的消息发送到分布式队列存储;其中,分布式队列还存储至少一个加入内部标识ID后的客户端A发送的消息的副本。
在图12所示模块图的基础上,去重复代理服务器可以根据图10所示的方法进行分布式队列消息读取,避免客户端从分布式队列中读取到相同的消息,降低消息重复处理的风险。
请参阅图13,图13为本发明实施例提供的另一种分布式队列消息读取方法的流程示意图。如图13所示,该分布式队列消息读取方法包括以下步骤:
1301、去重复代理服务器接收客户端发送的获取消息请求Get。
1302、去重复代理服务器将客户端发送的获取消息请求Get转发至分布式队列。
1303、去重复代理服务器接收从分布式队列中获取与上述获取消息请求Get对应的消息M,其中,该消息M中携带有内部标识ID。
1304、去重复代理服务器提取上述消息M的内部标识ID。
1305、去重复代理服务器根据该内部标识ID确定出对应的分布式行级锁,以及判断出该分布式行级锁中存储的Value值表示不可读;
1306、去重复代理服务器发送错误响应null给客户端。
在图13所示的方法中,去重复代理服务器判断出该分布式行级锁中存储的Value值表示不可读时,说明当前从分布式队列中获取的与上述获取消息请求Get对应的消息M已经被客户端读取过,去重复代理服务器可以发送错误响应null给客户端,避免客户端从分布式队列中读取到相同的消息进行重复处理。
请参阅图14,图14为本发明实施例提供的又一种分布式队列消息读取方法的流程示意图。如图14所示,该分布式队列消息读取方法包括以下步骤:
1401、去重复代理服务器接收客户端发送的获取消息请求Get。
1402、去重复代理服务器将客户端发送的获取消息请求Get转发至分布式队列。
1403、去重复代理服务器接收分布式队列发送的与上述获取消息请求Get对应的消息M,其中,该消息M中携带有内部标识ID。
其中,分布式队列将与上述获取消息请求Get对应的消息M发送给去重复代理服务器之后,可以删除分布式队列中存储的消息M的所有副本。
1404、去重复代理服务器提取上述消息M的内部标识ID。
1405、去重复代理服务器根据该内部标识ID确定出对应的分布式行级锁,以及判断出该分布式行级锁中存储的Value值表示可读。
1406、去重复代理服务器将该分布式行级锁中存储的Value值置为表示不可读。
1407、去重复代理服务器将上述消息携带的内部标识ID删除,以及将删除内部标识ID的消息发送给客户端。
在图14所示的方法中,即使分布式队列中存在相同的消息(即消息的副本),也会因为分布式行级锁中存储的Value值表示不可读,而不会发送给客户端进行处理,从而可以避免客户端从分布式队列中读取到相同的消息,降低消息重复处理的风险。
本发明实施例提供的上述方法即使在分布式队列存在大量客户端并发访问的情况下,也可以防止客户端从分布式队列中读取到相同的消息,降低消息重复处理的风险。
本发明实施例中,上述的分布式行级锁的设计思路可以如下:
1、由于客户端发送的消息携带有自身标识(属于现有技术),因此,可以以消息携带的自身标识为基础,并通过Hash算法生成一个内部标识ID(因为Hash算法的原理,不同的消息就会对应到不同的内部标识ID)。
2、将生成的内部标识ID作为Key存储到分布式行级锁中,构成一个key-Value值对,Value值可以为任意非空的数值(例如Key=内部标识ID,value=内部标识ID),表示可读。
3、上述存储key-Value值对的分布式行级锁可以看作是采用分布式哈希表(DistributedHashTable,DHT)算法实现的一个KV存储引擎。其中,KV存储引擎存放数据的原理是先把存放数据的空间固定并形成0~2^32环形(如图15所示的DHT原理图),然后将存放数据的主机标识通过Hash算法生成一个值,这个值在数据空间上形成一个主机节点,然后在存放Key-Value值对时,KV存储引擎会将Key通过Hash算法得到一个Hash值,该Hash值在存储空间环上表示为一个值节点,如果该值节点没有落在一个主机节点上,那么KV存储引擎会沿着存储空间环顺时针找到第一个(或者N个,如果需要N个备份)主机节点即存储该键值对主机。
4、当去重复代理服务器根据提取的内部标识ID确定出对应的分布式行级锁(即KV存储引擎),并判断确定出的分布式行级锁(即KV存储引擎)中存储的内部标识ID(即Key)对应的Value值是否表示可读时,这一过程又被称为获取锁过程;若Value值表示可读,则说明当前从分布式队列中获取的与上述获取消息请求对应的消息还没有被客户端读取过,客户端可以读取。其中,客户端能够读到消息就表示获取了锁。
5、当去代理服务器将上述消息携带的内部标识ID删除并发送给客户端后,可以将分布式行级锁(即KV存储引擎)存储的Value值置为表示不可读(例如Value值置空,或为零),以使其他客户端无法再去读这个消息,这一过程又被称为加锁过程。
上述步骤3描述了KV存储引擎的DHT实现原理,其中,Key-Value值对会均匀的分布在某个主机(或某几个主机)上,在整个分布式对外服务的过程中,对分布式行级锁的访问也会均匀的分布到不同的主机上,不会产生对一台主机的海量访问,避免分布式行级锁成为新的性能瓶颈。
请参阅图16,图16为本发明实施例提供的另一种分布式队列消息读取设备的结构示意图。如图16所示,该设备可以包括:
第二接收单元1601,用于接收客户端发送的获取消息请求;
第二获取单元1602,用于从分布式队列中获取与上述获取消息请求对应的消息,该消息中携带有内部标识ID;
提取单元1603,用于提取上述消息的内部标识ID,并根据该内部标识ID确定出对应的分布式行级锁1606;
识别单元1604,用于识别上述分布式行级锁1606中存储的Value值是否表示可读;
第二控制单元1605,用于在上述分布式行级锁1606中存储的Value值表示可读时,将Value值置为表示不可读,以及从获取的上述消息中删除上述内部标识ID,并将删除了上述内部标识ID的消息发送给客户端。
请参阅图17,图17为本发明实施例提供的另一种分布式队列消息读取设备的结构示意图。如图17所示,该设备在图16所示设备的基础上,还进一步包括第二生成单元1607、第二存储单元1608。在图17所示的设备中,第二接收单元1601还用于接收客户端输入消息;相应地,第二生成单元1607用于为客户端输入消息生成内部标识ID,并加入客户端输入消息;第二存储单元1608用于将加入内部标识ID后的客户端输入消息存储到分布式队列;其中,该分布式队列还存储至少一个加入内部标识ID后的客户端输入消息的副本;以及第二存储单元1608将为客户端输入消息生成的内部标识ID作为关键值key存储到分布式行级锁1606中,该关键值key与一个Value值匹配,该Value值表示可读。
一个实施例中,当提取单元1603提取的分布式行级锁存储的关键值key=上述内部标识ID时,就可以确定出对应的分布式行级锁1606。
请参阅图18,图18为本发明实施例提供的一种分布式队列消息读取系统的结构示意图。如图18所示,该系统可以包括客户端1801以及分布式队列消息读取设备1802;其中,分布式队列消息读取设备1802的结构、功能均与图16或图17所示的分布式队列消息读取设备相同,本发明实施例不作复述。
其中,客户端1801用于发送获取消息请求给分布式队列消息读取设备1802,以及接收分布式队列消息读取设备1802发送的与获取消息请求对应的消息进行业务处理。
基于上述技术方案,即使分布式队列中存在相同的消息(即消息的副本),也会因为分布式行级锁中的Value值表示不可读,而不会发送给客户端进行处理,从而可以避免客户端从分布式队列中读取到相同的消息,降低消息重复处理的风险。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:只读存储器(Read-OnlyMemory,ROM)、随机存取存储器(RandomAccessMemory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上对本发明实施例所提供的一种分布式队列消息读取方法及设备、系统进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

Claims (17)

1.一种分布式队列消息读取方法,其特征在于,包括:
接收客户端发送的获取消息请求;
从分布式队列中获取与所述获取消息请求对应的消息,所述消息中携带有内部标识ID;
提取所述消息携带的内部标识ID,并且判断分布式数据库中是否存储有所述内部标识ID;若是,则删除所述分布式数据库中存储的所述消息携带的内部标识ID,以及从获取的所述消息中删除所述内部标识ID,并将删除了所述内部标识ID的消息发送给所述客户端。
2.根据权利要求1所述方法,其特征在于,所述方法还包括:
从分布式队列中获取与所述获取消息请求对应的消息后,所述分布式队列中删除与所述获取消息请求对应的消息的所有副本。
3.根据权利要求1或2所述方法,其特征在于,所述方法还包括:
接收客户端的输入消息;
为所述客户端输入消息生成内部标识ID,并将所述内部标识ID加入到所述客户端输入消息中;
将加入内部标识ID后的所述客户端输入消息存储到所述分布式队列;所述分布式队列还存储至少一个所述加入内部标识ID后的所述客户端输入消息的副本;
将为所述客户端输入消息生成的内部标识ID存储到所述分布式数据库。
4.根据权利要求3所述方法,其特征在于,所述为所述客户端输入消息生成内部标识ID,包括:
采用随机生成方式或哈希HASH算法为所述客户端输入消息生成内部标识ID,其中,为每一个客户端输入消息生成的内部标识ID互不相同。
5.根据权利要求1所述方法,其特征在于,所述从分布式队列中获取与所述获取消息请求对应的消息,包括:
将所述客户端发送的获取消息请求转发至所述分布式队列;
接收所述分布式队列发送的与所述获取消息请求对应的消息。
6.一种分布式队列消息读取方法,其特征在于,包括:
接收客户端发送的获取消息请求;
从分布式队列中获取与所述获取消息请求对应的消息,所述消息中携带有内部标识ID;
提取所述消息的内部标识ID,并根据所述内部标识ID确定出对应的分布式行级锁,若所述分布式行级锁中存储的Value值表示可读,则将所述Value值置为表示不可读,以及从获取的所述消息中删除所述内部标识ID,并将删除了所述内部标识ID的消息发送给所述客户端。
7.根据权利要求6所述方法,其特征在于,所述方法还包括:
接收客户端的输入消息;
为所述客户端输入消息生成内部标识ID,并加入所述客户端输入消息;
将加入内部标识ID后的所述客户端输入消息存储到所述分布式队列;所述分布式队列还存储至少一个所述加入内部标识ID后的所述客户端输入消息的副本;
将为所述客户端输入消息生成的内部标识ID作为关键值key存储到所述分布式行级锁中,所述关键值key与一个Value值匹配,所述Value值表示可读。
8.根据权利要求7所述方法,其特征在于,所述根据所述内部标识ID确定出对应的分布式行级锁包括:
根据所述内部标识ID确定出对应的分布式行级锁,所述对应的分布式行级锁存储的关键值key=所述内部标识ID。
9.一种分布式队列消息读取设备,其特征在于,包括:
接收单元,用于接收客户端发送的获取消息请求;
获取单元,用于从分布式队列中获取与所述获取消息请求对应的消息,所述消息中携带有内部标识ID;
判断单元,用于提取所述消息的内部标识ID,并且判断分布式数据库中是否存储有所述内部标识ID;
控制单元,用于在所述判断单元的判断结果为是时,删除所述分布式数据库中存储的所述消息携带的内部标识ID,以及从获取的所述消息中删除所述内部标识ID,并将删除了所述内部标识ID的消息发送给所述客户端;
所述分布式数据库,用于存储所述消息的内部标识ID。
10.根据权利要求9所述设备,其特征在于,所述获取单元从分布式队列中获取与所述获取消息请求对应的消息后,所述分布式队列删除与所述获取消息请求对应的消息的所有副本。
11.根据权利要求9或10所述的设备,其特征在于,
所述接收单元还用于接收客户端输入消息;
所述设备还包括:
生成单元,用于为所述客户端输入消息生成内部标识ID,并加入所述客户端输入消息;
存储单元,用于将加入内部标识ID后的所述客户端输入消息存储到所述分布式队列;所述分布式队列还存储至少一个所述加入内部标识ID后的所述客户端输入消息的副本;以及将为所述客户端输入消息生成的内部标识ID存储到所述分布式数据库。
12.根据权利要求11所述的设备,其特征在于,所述生成单元具体用于采用随机生成方式或哈希HASH算法为所述客户端输入消息生成内部标识ID,并加入所述客户端输入消息;为每一个客户端输入消息生成的内部标识ID互不相同。
13.根据权利要求9所述的设备,其特征在于,所述获取单元具体用于将所述客户端发送的获取消息请求转发至所述分布式队列,接收所述分布式队列发送的与所述获取消息请求对应的消息,所述消息中携带有内部标识ID。
14.一种分布式队列消息读取设备,其特征在于,包括:
第二接收单元,用于接收客户端发送的获取消息请求;
第二获取单元,用于从分布式队列中获取与所述获取消息请求对应的消息,所述消息中携带有内部标识ID;
提取单元,用于提取所述消息的内部标识ID,并根据所述内部标识ID确定出对应的分布式行级锁;
识别单元,用于识别所述分布式行级锁中存储的Value值是否表示可读;
第二控制单元,用于在所述分布式行级锁中存储的Value值表示可读时,将所述Value值置为表示不可读,以及从获取的所述消息中删除所述内部标识ID,并将删除了所述内部标识ID的消息发送给所述客户端。
15.根据权利要求14所述的设备,其特征在于,
所述第二接收单元还用于接收客户端输入消息;
所述设备还包括:
第二生成单元,用于为所述客户端输入消息生成内部标识ID,并加入所述客户端输入消息;
第二存储单元,用于将加入内部标识ID后的所述客户端输入消息存储到所述分布式队列;所述分布式队列还存储至少一个所述加入内部标识ID后的所述客户端输入消息的副本;以及将为所述客户端输入消息生成的内部标识ID作为关键值key存储到所述分布式行级锁中,所述关键值key与一个Value值匹配,所述Value值表示可读。
16.根据权利要求15所述的设备,其特征在于,所述提取单元提取的分布式行级锁存储的关键值key=所述内部标识ID。
17.一种分布式队列消息读取系统,其特征在于,包括客户端以及上述权利要求9~13任意一项所述的分布式队列消息读取设备,或上述权利要求14~16任意一项所述的分布式队列消息读取设备;
所述客户端,用于发送获取消息请求给所述分布式队列消息读取设备,以及接收所述分布式队列消息读取设备发送的与所述获取消息请求对应的消息进行业务处理。
CN201180001873.9A 2011-09-01 2011-09-01 一种分布式队列消息读取方法及设备、系统 Active CN103503388B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2011/079241 WO2012162969A1 (zh) 2011-09-01 2011-09-01 一种分布式队列消息读取方法及设备、系统

Publications (2)

Publication Number Publication Date
CN103503388A CN103503388A (zh) 2014-01-08
CN103503388B true CN103503388B (zh) 2016-08-03

Family

ID=47258305

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201180001873.9A Active CN103503388B (zh) 2011-09-01 2011-09-01 一种分布式队列消息读取方法及设备、系统

Country Status (2)

Country Link
CN (1) CN103503388B (zh)
WO (1) WO2012162969A1 (zh)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108197222B (zh) * 2017-12-28 2020-03-24 北京中关村科金技术有限公司 一种异常流数据的修复方法、系统及相关装置
CN110245028B (zh) * 2019-05-13 2023-08-25 平安科技(深圳)有限公司 IoT-MQ的消息存储方法、装置、计算机设备和存储介质
CN113127217A (zh) * 2019-12-30 2021-07-16 中移(成都)信息通信科技有限公司 数据发布方法、装置、设备及存储介质
CN113794998B (zh) * 2021-08-20 2022-07-15 上海德吾信息科技有限公司 一种基于分布式锁的信息发送方法、装置及存储介质
CN114253745B (zh) * 2021-12-16 2023-06-20 北京金堤科技有限公司 一种消息去重处理方法、装置、存储介质和电子设备
CN115550361B (zh) * 2022-09-20 2024-08-06 三未信安科技股份有限公司 一种基于消息队列的集群实现方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101512527A (zh) * 2006-10-05 2009-08-19 国际商业机器公司 用于处理请求的数据处理系统和方法
CN101547212A (zh) * 2008-03-29 2009-09-30 华为技术有限公司 一种分布式对象的调度方法和系统
CN102023974A (zh) * 2009-09-14 2011-04-20 中国移动通信集团公司 一种通过消息队列处理消息的方法、装置和系统

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050271049A1 (en) * 2004-06-03 2005-12-08 International Business Machines Corporation DHCP cache method and apparatus
US7984094B2 (en) * 2009-06-23 2011-07-19 Microsoft Corporation Using distributed queues in an overlay network

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101512527A (zh) * 2006-10-05 2009-08-19 国际商业机器公司 用于处理请求的数据处理系统和方法
CN101547212A (zh) * 2008-03-29 2009-09-30 华为技术有限公司 一种分布式对象的调度方法和系统
CN102023974A (zh) * 2009-09-14 2011-04-20 中国移动通信集团公司 一种通过消息队列处理消息的方法、装置和系统

Non-Patent Citations (5)

* Cited by examiner, † Cited by third party
Title
一种基于Paxos 算法的容错机制;王利军,等;《计算机应用与软件》;20110630;第28卷(第6期);全文 *
一种并行层次化的重复数据删除技术;贾志凯,等;《计算机研究与发展》;20110215;全文 *
分布式消息队列的设计与实现;曹婧华,等;《河南科技大学学报:自然科学版》;20100831;第31卷(第4期);全文 *
基于N-Gram的文本去重方法研究;王小华,等;《杭州电子科技大学学报》;20100430;全文 *
基于散列思想的网页去重系统;孔素然;《硅谷》;20101123;全文 *

Also Published As

Publication number Publication date
WO2012162969A1 (zh) 2012-12-06
CN103503388A (zh) 2014-01-08

Similar Documents

Publication Publication Date Title
CN112000741B (zh) 内外网数据交换系统、方法、装置、计算机设备和介质
CN107391758B (zh) 数据库切换方法、装置及设备
CN103119550B (zh) 存储具有时变特性的电子内容
CN103503388B (zh) 一种分布式队列消息读取方法及设备、系统
CN101313495B (zh) 数据同步方法、系统及装置
CN109634932A (zh) 一种智能合约存储方法及存储系统
CN108351806A (zh) 分布式基于流的数据库触发器
CN110888837B (zh) 对象存储小文件归并方法及装置
CN101964820A (zh) 一种保持数据一致性的方法及系统
CN107580032B (zh) 数据处理方法、装置及设备
CN110188103A (zh) 数据对账方法、装置、设备和存储介质
CN111414424B (zh) 一种配置数据自动同步redis的方法、系统、介质及设备
CN110019048A (zh) 基于MongoDB的文件处理方法、装置、系统及服务器
CN109889588B (zh) 文件获取方法、装置、计算机设备和存储介质
CN111083179A (zh) 物联网云平台、基于物联网云平台的设备交互方法及装置
CN112035471A (zh) 一种事务处理方法及计算机设备
US20200379982A1 (en) Information processing system and method of controlling information processing system
CN109597903A (zh) 图像文件处理装置和方法、文件存储系统及存储介质
CN108243207B (zh) 一种网络云盘的数据存储方法
CN113918437B (zh) 用户行为数据分析方法、装置、计算机设备和存储介质
CN112860412B (zh) 业务数据处理方法、装置、电子设备及存储介质
CA3065729A1 (en) Business rules processing framework
CN103646015B (zh) 发送、接收以及传输xml报文的方法和系统
CN106980618A (zh) 基于MongoDB分布式集群架构的文件存储方法和系统
KR101797482B1 (ko) 데이터베이스 시스템에서 블록 복구 방법, 장치 및 컴퓨터 판독가능 매체에 저장된 컴퓨터-프로그램

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
TR01 Transfer of patent right

Effective date of registration: 20220214

Address after: 550025 Huawei cloud data center, jiaoxinggong Road, Qianzhong Avenue, Gui'an New District, Guiyang City, Guizhou Province

Patentee after: Huawei Cloud Computing Technologies Co.,Ltd.

Address before: 518129 Bantian HUAWEI headquarters office building, Longgang District, Guangdong, Shenzhen

Patentee before: HUAWEI TECHNOLOGIES Co.,Ltd.

TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20221209

Address after: 518000 Huawei Headquarters Office Building 101, Wankecheng Community, Bantian Street, Longgang District, Shenzhen, Guangdong

Patentee after: Shenzhen Huawei Cloud Computing Technology Co.,Ltd.

Address before: 550025 Huawei cloud data center, jiaoxinggong Road, Qianzhong Avenue, Gui'an New District, Guiyang City, Guizhou Province

Patentee before: Huawei Cloud Computing Technologies Co.,Ltd.

TR01 Transfer of patent right