CN112416614A - 基于消息队列的数据处理方法、系统及服务器 - Google Patents
基于消息队列的数据处理方法、系统及服务器 Download PDFInfo
- Publication number
- CN112416614A CN112416614A CN202011171947.0A CN202011171947A CN112416614A CN 112416614 A CN112416614 A CN 112416614A CN 202011171947 A CN202011171947 A CN 202011171947A CN 112416614 A CN112416614 A CN 112416614A
- Authority
- CN
- China
- Prior art keywords
- message
- target
- batch
- cache server
- 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.)
- Pending
Links
- 238000003672 processing method Methods 0.000 title claims abstract description 16
- 238000012545 processing Methods 0.000 claims abstract description 139
- 238000000034 method Methods 0.000 claims description 50
- 230000004044 response Effects 0.000 claims description 31
- 238000003860 storage Methods 0.000 claims description 24
- 230000002159 abnormal effect Effects 0.000 claims description 22
- 239000003550 marker Substances 0.000 claims description 12
- 230000006854 communication Effects 0.000 abstract description 8
- 238000004891 communication Methods 0.000 abstract description 7
- 230000008569 process Effects 0.000 description 9
- 238000012544 monitoring process Methods 0.000 description 7
- 230000001960 triggered effect Effects 0.000 description 7
- 238000004519 manufacturing process Methods 0.000 description 4
- 238000013507 mapping Methods 0.000 description 4
- 230000005540 biological transmission Effects 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 230000002349 favourable effect Effects 0.000 description 3
- 230000005856 abnormality Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000004083 survival effect Effects 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 238000010923 batch production Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000003993 interaction Effects 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
- 230000002085 persistent effect Effects 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 230000001052 transient effect Effects 0.000 description 1
- 238000013024 troubleshooting Methods 0.000 description 1
Images
Classifications
-
- 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
- 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/568—Storing data temporarily at an intermediate stage, e.g. caching
-
- 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)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本发明实施例提供一种基于消息队列的数据处理方法、系统及服务器,属于通信技术领域。其中,方法包括解析从消息队列获取的目标消息的目标关键字段和目标消息序列号,并从缓存服务器获取与目标关键字段对应的最大消息序列号;根据所述最大消息序列号与所述目标消息序列号的大小关系、以及所述缓存服务器中是否存储有目标消息处理中标记位,判断是否消费所述目标消息;当目标消息消费成功时,以目标消息序列号更新缓存服务器存储的最大消息序列号。采用本发明能够在保证数据一致性的前提下保证同一条消息只被消费一次。
Description
技术领域
本发明涉及通信技术领域,特别涉及一种基于消息队列的数据处理方法、系统及服务器。
背景技术
业务组件之间采用同步通信模式时,交互效率低下。例如,请求端向服务端发送业务请求后,需要同步等待服务端返回业务响应,浪费空闲计算资源。并且,各个请求端与服务端直接通信,当流量大量并发时,服务端资源调度频繁造成服务端有效的资源利用率低,进而导致服务端处理效率低、响应速度慢。
为了保证了业务系统的高可用和高性能,可以将请求端与服务端之间的同步通信模式改为异步通信模式。并且,为了缓解流量大量并发时的服务端处理压力,可以在请求端与服务端之间增加消息队列(Message Queue,MQ),以使服务端从消息队列中分批获取业务请求以对并发流量进行削峰。
本专利申请的发明人通过研究请求端、消息队列以及服务端之间的通信过程发现,现有技术至少存在以下问题:在请求端(可称作生产者,Producer)与服务端(可称作消费者,Consumer)之间增加消息队列降低了消息(Message)传输的可靠性。为了克服消息在从生产者到消息队列的传输途中出现异常、以及在消息队列处出现异常等情况,生产者可以向消息队列重复发送同一消息。同理,为了克服消息在从消息队列到消费者的传输途中出现异常、以及在消费者处出现异常等情况,消息队列可以重复向消费者提供同一消息。这样可能导致同一消息被重复消费以及消费者处理失效消息后引发数据不一致问题。
发明内容
本申请的目的在于提供一种基于消息队列的数据处理方法、系统及服务器,以解决现有技术存在的部分或全部问题。所述技术方案如下:
第一方面,提供了一种基于消息队列的数据处理方法,应用于消费端,所述方法包括:
解析从消息队列获取的目标消息的目标关键字段和目标消息序列号,并从缓存服务器获取与所述目标关键字段对应的最大消息序列号;其中,所述目标消息序列号为具有时序的识别码;
根据所述最大消息序列号与所述目标消息序列号的大小关系、以及所述缓存服务器中是否存储有目标消息处理中标记位,判断是否消费所述目标消息;
当所述目标消息消费成功时,以所述目标消息序列号更新所述缓存服务器存储的所述最大消息序列号。
可选的,根据所述最大消息序列号与所述目标消息序列号的大小关系、以及所述缓存服务器中是否存储有目标消息处理中标记位,判断是否消费所述目标消息包括:
若所述最大消息序列号小于所述目标消息序列号且所述缓存服务器中不存在所述目标消息处理中标记位,则在所述缓存服务器中记录所述目标消息处理中标记位,并消费所述目标消息;
若所述最大消息序列号不小于所述目标消息序列号,或所述最大消息序列号小于所述目标消息序列号且所述缓存服务器中存在目标消息处理中标记位,则忽略所述目标消息。
在实施中,消费端获取到的每条消息均携带有具有时序的识别码。每成功消费一条消息后,消费端可以在缓存服务器中记录这条消息的消息序列号。在消费目标消息之前,消费端可以对比目标消息的消息序列号与缓存服务器中记录的最大消息序列号。如果目标消息的消息序列号较大,说明目标消息是最新消息,并且未被成功消费过;如果目标消息的消息序列号较小,说明目标消息不是最新消息;如果二者相等,说明目标消息是最新消息,但已经被成功消费过。基于每条消息的消息序列号,消费端可以确定消费最新且未被成功消费过的消息、忽略失效消息或已经消费过的消息。这样,能够保证只消费最新消息,并且同一条消息只被消费一次。
可选的,所述解析从消息队列获取的目标消息的目标关键字段和目标消息序列号之前,所述方法还包括:
从消息队列获取目标批次消息,查询所述缓存服务器是否存在目标批次处理中标记位;其中,所述目标批次消息包含所述目标消息;
若存在,则丢弃所述目标批次消息;若不存在,则在所述缓存服务器中记录所述目标批次处理中标记位。
在实施中,消费端可以从消息队列批量获取消息。在每消费一批消息之前,消费端可以在缓存服务器中记录这批消息对应的处理中标记位。在获取到目标批次消息后,消费端可以查询缓存服务器中是否记录了与目标批次消息对应的目标批次处理中标记位。如果不存在,说明目标批次消息可能未被任意消费端获取过;如果存在,说明目标批次消息被任意消费端获取过,并且可能已被消费。基于目标批次处理中标记位,消费端可以在确定目标批次消息被任意消费端获取过之后,丢弃整批消息。这样,无需逐条处理目标批次消息中的消息,节约消费端的计算资源。
可选的,所述从消息队列获取目标批次消息包括从所述消息队列中拉取所述目标批次消息或者接收由所述消息队列推送的所述目标批次消息;
从所述消息队列拉取到所述目标批次消息之后,所述方法还包括:
在缓存服务器中记录所述目标批次消息的最大下标值,以根据所述最大下标值拉取下一批次的消息;
接收到所述消息队列推送的所述目标批次消息之后,所述方法还包括:
向所述消息队列回复成功接收响应,并由所述消息队列在缓存服务器中记录所述目标批次消息的最大下标值,以使所述消息队列根据所述最大下标值推送下一批次的消息。
在实施中,可以由消费端主动从消息队列拉取目标批次消息,也可以由消息队列主动向消费端推送目标批次消息。其中,消费端每成功拉取一批消息后,可以在缓存服务器中记录已拉取的消息的最大下标;消息队列每成功推送一批消息后,可以在缓存服务器中记录已推送的消息的最大下标。最大下标用于确定下一批消息从哪里开始拉取或推送。
可选的,所述方法还包括:
当所述目标消息消费成功时,删除所述目标消息处理中标记位;
若所述目标消息处理中标记位在所述缓存服务器中存储时间超过第一预设时长,则触发告警。
在实施中,消费端每成功消费一条消息,可以删除缓存服务器中存储的与该消息对应的处理中标记位。如果目标消息处理中标记位在缓存服务器中的存储时间过长,说明消费端处理目标消息的过程发生异常,此时触发告警利于排除故障。
可选的,所述方法还包括:
当所述目标消息消费失败时,将所述目标消息移动至异常消息队列;
若所述异常消息队列中存在任意消息,则触发告警。
在实施中,如果目标消息本身存在异常,消费端将不能成功消费目标消息。消费端消费目标消息失败时,可以主动将目标消息移动至异常消息队列以触发告警,利于排除故障。
可选的,忽略所述目标消息包括:
将所述目标消息存放至等待队列,以使所述消费端从所述等待队列中获取并再次判断是否消费所述目标消息。
在实施中,将获取到的重复消息暂时存储在等待队列,使消费端出现数据不一致的情况时,能够从等待队列中重新获取并消费有效的消息,进而保证数据一致性。
可选的,所述方法还包括:
当所述目标批次消息中的所有消息处理完成时,删除所述目标批次处理中标记位;
若目标批次处理中标记位在所述缓存服务器中存储时间超过第二预设时长,则触发告警。
在实施中,消费端每成功消费一批消息,可以删除缓存服务器中存储的与批次消息对应的处理中标记位。如果目标批次处理中标记位在缓存服务器中的存储时间过长,说明消费端处理目标批次消息的过程发生异常,此时触发告警利于排除故障。
第二方面,提供了一种基于消息队列的数据处理方法,应用于消息队列,所述方法包括:
查询已推送成功的消息的最大下标值,根据所述最大下标值向消费端推送目标批次消息;
若接收到所述消费端回复的成功接收响应,或者确定缓存服务器中存在目标批次处理中标记位,则确定所述目标批次消息推送成功,并记录所述目标批次消息的最大下标值;
若在第三预设时长内未接收到所述成功接收响应,且所述缓存服务器中不存在所述目标批次处理中标记位,则确定所述目标批次消息推送失败并触发告警;
其中,所述目标批次处理中标记位由所述消费端在接收到所述目标批次消息时在所述缓存服务器中记录。
在实施中,消费端每成功获取到一批消息,可以向消息队列回复与这批消息对应的成功接收响应。并在开始消费这批消息之前,消费端可以在缓存服务器中记录与这批消息对应的处理中标记位。消息队列在向消费端推送目标批次消息后,若未及时接收到消费端回复的成功接收响应,说明消息队列与消费端之间的网络传输可能发生异常或者消费端可能发生异常。此时,消息队列可以通过判断缓存服务器中是否存在目标批次处理中标记位来判断目标批次消息是否未被任意消费端获取过。如果存在,说明目标批次消息被任意消费端获取过,并且可能已被消费,此时可以不推送目标批次消息,避免重复推送。如果不存在,说明目标批次消息可能未被任意消费端成功获取过,此时可以触发告警利于排除故障。
可选的,所述方法还包括:
所述目标批次消息中的各条消息携带有消息序列号,所述各条消息的消息序列号为具有时序的识别码;
所述消息序列号用于使所述消费端判断是否消费所述消息序列号对应的消息。
在实施中,生产者可以在生成消息时,将具有时序的识别码添加至消息的消息体中。这样,消息队列中的每条消息均携带有具有时序的消息序列号,可以为消费端确定消息是否失效或重复提供基础。
第三方面,提供了一种基于消息队列的数据处理系统,所述系统包括消息队列和消费端,其特征在于,所述消费端用于:
解析从消息队列获取的目标消息的目标关键字段和目标消息序列号,并从缓存服务器获取与所述目标关键字段对应的最大消息序列号;其中,所述目标消息序列号为具有时序的识别码;
若所述最大消息序列号不小于所述目标消息序列号,或所述最大消息序列号小于所述目标消息序列号且所述缓存服务器中存在目标消息处理中标记位,则忽略所述目标消息;
若所述最大消息序列号小于所述目标消息序列号且所述缓存服务器中不存在所述目标消息处理中标记位,则在所述缓存服务器中记录所述目标消息处理中标记位,并消费所述目标消息;
当所述目标消息消费成功时,以所述目标消息序列号更新所述缓存服务器存储的所述最大消息序列号。
可选的,在解析从消息队列获取的目标消息的目标关键字段和目标消息序列号之前,所述消费端还用于:
从消息队列获取目标批次消息,查询所述缓存服务器是否存在目标批次处理中标记位;其中,所述目标批次消息包含所述目标消息;
若存在,则丢弃所述目标批次消息;若不存在,则在所述缓存服务器中记录所述目标批次处理中标记位。
可选的,所述消费端从所述消息队列中拉取所述目标批次消息或者接收由所述消息队列推送的所述目标批次消息;其中,
从所述消息队列拉取到所述目标批次消息之后,所述消费端还用于:
在缓存服务器中记录所述目标批次消息的最大下标值,以根据所述最大下标值拉取下一批次的消息;
接收到所述消息队列推送的所述目标批次消息之后,所述消费端还用于:
向所述消息队列回复成功接收响应,并由所述消息队列在缓存服务器中记录所述目标批次消息的最大下标值,以使所述消息队列根据所述最大下标值推送下一批次的消息。
可选的,所述消费端还用于:
当所述目标消息消费成功时,删除所述目标消息处理中标记位;
若所述目标消息处理中标记位在所述缓存服务器中存储时间超过第一预设时长,则触发告警。
可选的,所述消费端还用于:
当所述目标消息消费失败时,将所述目标消息移动至异常消息队列;
若所述异常消息队列中存在任意消息,则触发告警。
可选的,所述消费端还用于:
当所述目标批次消息中的所有消息处理完成时,删除所述目标批次处理中标记位;
若目标批次处理中标记位在所述缓存服务器中存储时间超过第二预设时长,则触发告警。
可选的,所述消息队列用于:
查询所述缓存服务器中记录的最大下标值,根据所述缓存服务器中记录的最大下标值向所述消费端推送目标批次消息;
若接收到所述成功接收响应,或者确定缓存服务器中存在所述目标批次处理中标记位,则确定所述目标批次消息推送成功,并在所述缓存服务器中记录所述目标批次消息的最大下标值;
若在第三预设时长内未接收到所述成功接收响应,且所述缓存服务器中不存在所述目标批次处理中标记位,则确定所述目标批次消息推送失败并触发告警。
第四方面,提供了一种服务器,其特征在于,所述服务器包括处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行,以实现如第一方面或第二方面所述的方法。
第五方面,提供了一种缓存服务器,其特征在于,所述缓存服务器与消息队列和消费端共同实现如第一方面或第二方面所述的方法。
第六方面,提供了一种计算机可读存储介质,其特征在于,所述存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由处理器加载并执行,以实现如第一方面或第二方面所述的方法。
由上可见,本发明实施例提供的技术方案带来的有益效果至少包括:第一,消费端通过对比目标消息序列号与缓存服务器中存储的最大消息序列号的大小,可以判断目标消息是否为失效消息或者重复消息;通过查询缓存服务器中是否存在目标消息处理中标记位,可以进一步确定目标消息是否为重复消息,以避免重复处理或消息乱序。进而,消费端能够忽略失效消息和重复消息,在保证数据一致性的前提下保证同一条消息只被消费一次。第二,消息队列通过已推送成功的消息的最大下标值,可以确定下一批次的消息为哪些消息;通过查询缓存服务器中是否存在目标批次处理中标记位,可以判断目标批次消息是否已被成功推送。进而避免重复推送目标批次消息以及在推送失败时及时触发告警以排除故障。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种基于消息队列的数据处理系统的结构示意图;
图2为本发明实施例提供的一种以消费端为执行主体的数据处理方法的流程图;
图3为本发明实施例提供的一种消费端处理单条消息的具体流程图;
图4为本发明实施例提供的一种消费端处理批量消息的具体流程图;
图5为本发明实施例提供的一种以消息队列为执行主体的数据处理方法的流程图;
图6为本发明实施例提供的一种消息队列向消费端推送消息的具体流程图;
图7为本发明实施例提供的一种服务器的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
本发明实施例提供了一种基于消息队列的数据处理方法、系统及服务器。参阅图1,本发明提供的基于消息队列的数据处理系统可以包括消息队列、消费端和缓存服务器。其中,消息队列可以是基于RocketMQ或Kafka技术创建的,还可以是基于其他技术创建的,本发明对此不作限制。消费端可以包括两个以上消费者,同一时刻可以仅由其中一个消费者消费消息,其他消费者处于备用状态,如果负责消费消息的消费者发生故障,可以及时切换至一个备用消费者来消费消息。各个消费者可以理解为能够处理消息的任意一台网络设备或者由多台网络设备组成的集群设备。缓存服务器可以是能够提供数据存储及查询功能的任意一台网络设备或者由多台网络设备组成的集群设备。本发明通过消息队列实现生产端与消费端之间进行异步通信。例如,消息队列可以接收生产端发送的消息并将消息发送给消费端,还可以向生产端返回对应的响应以及接收来自消费端的响应。
需要说明的是,生产端可以是任意生产者。生产端在生成一条新的消息时,可以将一个具有时序的识别码(可称作消息序列号)添加进消息体(Body)中。例如,在对消息要求绝对时序的业务场景下,生产端在生成消息时可以向单台全局序列服务器(即一台能够生成有序序列号的网络设备)请求获取一个在时间上绝对有序的全局唯一的消息序列号,并将该消息序列号添加进消息体中。此外,在允许消息时序出现小范围误差的业务场景下,各个生产者也可以向分布式部署的序列服务器就近请求获取消息序列号,或者自己生成消息序列号。当然,各个生产者还可以根据实际情况通过其他途径为各条消息获取消息序列号,本发明对此不作限制。
在一个实施例中,各个生产者为了保证消息不被丢失,通常可以向消息队列重复发送同一消息,触发重发机制的条件以及重发次数可以根据情况预先设定,本发明对此不作限制。
下面将结合具体实施方式,对本发明实施例提供的一种基于消息队列的数据处理方法进行详细的说明。为了便于理解,请结合参考图2和图3。
步骤201,解析目标消息的目标关键字段和目标消息序列号,并从缓存服务器获取与目标关键字段对应的最大消息序列号。
在一个实施例中,相互关联的多条消息可以具有相同的关键字段(可记作key)。消费端从消息队列接收到的消息均携带有消息序列号,各条消息的消息序列号为具有时序的识别码,不同消息具有不同的消息序列号。为了便于描述,可以将具有相同的关键字段的消息称作同类消息,可以将消费端接收到的任意一条消息称作目标消息,相应的,可以将目标消息携带的关键字段称作目标关键字段,将目标消息携带的消息序列号称作目标消息序列号(可记作seq_recieve)。
消费端每成功消费一条接收到的最新消息,便可以在缓存服务器中记录该消息的关键字段与该消息的消息序列号的映射关系项。这样,消费端根据目标消息的目标关键字段可以查找映射关系项,进而获取缓存服务器中存储的与目标关键字段对应的最大消息序列号(可记作max_seq)。基于该最大消息序列号可以确定消费端是否消费了与目标消息具有相同目标关键字段的任意消息,以及确定目标消息与已经消费的同类消息的时序关系。
举例来说,某一生产者(例如某一用户终端)分别先后向指定的消息队列发出了第一昵称请求和第二昵称请求,用于指示消费端将用户昵称依次修改为第一昵称和第二昵称。第一昵称请求和第二昵称请求均与同一用户终端对应,因此,第一昵称请求和第二昵称请求的关键字段可以是用户识别码(可称作userID),即第一昵称请求和第二昵称请求通过用户识别码相互关联。第一昵称请求和第二昵称请求的消息序列号可以反映第一昵称请求和第二昵称请求的时序关系。
当然,在一个实施例中,同类消息也可以来自不同生产者(例如不同用户终端)。以修改群聊名称为例,第一用户终端和第二用户终端分别先后向指定的消息队列发出了第一群聊名称请求和第二群聊名称请求。第一群聊名称请求和第二群聊名称请求均与同一聊天群对应,因此,第一群聊名称请求和第二群聊名称请求的关键字段可以是用于唯一标识该聊天群的识别码。
可选的,消费端可以从消息队列逐条获取消息或者批量获取消息。当消费端从消息队列批量获取消息时,步骤201之前的处理可以包括:从消息队列获取目标批次消息,并查询缓存服务器是否存在目标批次处理中标记位;其中,目标批次消息包含目标消息;若存在,则丢弃目标批次消息;若不存在,则在缓存服务器中记录目标批次处理中标记位并处理目标批次消息。
在一个实施例中,在每消费一批消息之前,消费端可以在缓存服务器中记录与这批消息对应的处理中标记位。为了便于描述,可以将消息队列获取到的任意一批消息称作目标批次消息,相应的,可以将与目标批次消息对应的处理中标记位称作目标批次处理中标记位。
如图4所示,在获取到目标批次消息后,消费端可以查询缓存服务器是否记录了目标批次处理中标记位。如果没有记录,说明目标批次消息很可能未被任意消费端获取过,此时可以在缓存服务器中记录目标批次处理中标记位并处理目标批次消息中的各条消息。如果有记录,说明目标批次消息被任意消费端获取过,并且可能已被成功消费,此时可以丢弃目标批次消息。基于目标批次处理中标记位,消费端可以在确定目标批次消息被任意消费端获取过之后,丢弃整批消息。这样,无需逐条处理目标批次消息中的消息,节约消费端的计算资源。其中,以目标批次消息为消息队列接收到的第1-100条消息为例,目标批次处理中标记位可以记作PROCESSING:[0-99]。
值得一提的是,对于消费端而言可以有两种方式从消息队列获取消息。具体而言,当采用推方式(Push)时,由消息队列主动将消息推送给消费端;当采用拉方式(Pull)时,由消费端主动从消息队列拉取消息。
可选的,消费端从消息队列拉取到目标批次消息之后的处理还可以包括:在缓存服务器中记录目标批次消息的最大下标值,以根据最大下标值拉取下一批次的消息。
可选的,消费端接收到消息队列推送的目标批次消息之后的处理还可以包括:向消息队列回复成功接收响应,并由消息队列在缓存服务器中记录目标批次消息的最大下标值,以使消息队列根据所述最大下标值推送下一批次的消息。
在一个实施例中,消息队列每接收到一条消息(包括生产者生成的新消息以及重发的消息),会为该消息设置一个消息下标(可记作offset)。通过消息下标可以定位到对应的消息。以消费端从消息队列主动拉取100条消息为例,目标批次消息可以是消息队列接收到的第1-100条消息。其中,消息下标从0开始递增,消息队列接收到的第1条消息的消息下标可以是[0],第100条消息的消息下标可以是[99]。消费端从消息队列拉取到消息下标范围为[0-99]的目标批次消息后,可以在缓存服务器中记录目标批次消息的最大下标值(可记作MAX_PULL_OFFSET=99)。这样,在获取目标批次消息之后,消费端便可以继续根据缓存服务器中记录的最大下标值MAX_PULL_OFFSET=99,从第100条消息之后开始拉取下一批消息,即拉取消息下标范围为[100-109]的消息。当然,当消息队列中的消息不足100条时,消息队列可以在消费端拉取消息时向消费端提供当前消息队列中排列的全部消息。
可选的,当采用推方式时,由消息队列向消费端主动推送消息。消息队列推送消息的具体处理可参阅图5及图6。
步骤501,查询已推送成功的消息的最大下标值,根据最大下标值向消费端推送目标批次消息。
在一个实施例中,消息队列在推送任意一批消息前,可以向缓存服务器查询已经推送成功的消息的最大下标值,并向消费端推送该最大下标值对应的消息之后的消息。其中,每批消息至少包含一条消息。可以理解,如果消息队列还未向任意消费端推送过任意消息,缓存服务器中将未存储最大下标值或者存储的最大下标值为空,消息队列可以在未查询到最大下标值时从第1条消息开始向消费端推送消息,或者消息队列无需查询最大下标值直接向消费端推送第一批消息。
步骤502,若接收到消费端回复的成功接收响应,或者确定缓存服务器中存在目标批次处理中标记位,则确定目标批次消息推送成功,并记录目标批次消息的最大下标值。
在一个实施例中,消费端接收到消息队列推送消息之后,会向消息队列返回对应的成功接收响应。消息队列可以通过判断是否接收到成功接收响应来确定对应的消息是否已被成功推送。当接收到与目标批次消息对应的成功接收响应时,可以在缓存服务器中记录目标批次消息的最大下标值,进而根据该最大下标值推送下一批次的消息。
在一个实施例中,可能由于消费端到消息队列间网络异常等情况,消费端成功接收到消息队列推送的消息,但消息队列未接收到消费端返回的成功接收响应,消息队列可能再次向消费端推送目标批次消息。因此,为了更加准确地确定目标批次消息是否推送成功,消息队列可以进一步判断缓存服务器中是否存在目标批次处理中标记位。若存在目标批次处理中标记位,说明已有消费端在处理目标批次消息,目标批次消息无疑已推送成功,此时也可在缓存服务器中记录目标批次消息的最大下标值,避免重复向消费端推送同一批消息。
例如,目标批次消息的下标范围为[0-99],与目标批次消息对应的成功接收响应可以是携带下标范围[0-99]的成功接收响应。当接收到下标范围[0-99]的成功接收响应时,消息队列可以在缓存服务器中记录目标批次消息的最大下标值MAX_PUSH_OFFSET=99。
值得一提的是,当消息队列确定目标批次消息推送成功时,还可以记录已推送成功的消息的下标范围,便于分析和统计消息。例如,当接收到下标范围[0-99]的成功接收响应或者缓存服务器中存在目标批次处理中标记位PROCESSING:[0-99]时,在缓存服务器中记录PUSH_SUCCESS:[0-99]。当继续接收到下标范围[100-109]的成功接收响应或者查询到处理中标记位PROCESSING:[100-109]时,可以将缓存服务器中已经记录的PUSH_SUCCESS:[0-99]更新为PUSH_SUCCESS:[0-109]。
步骤503,若在第三预设时长内未接收到成功接收响应,且缓存服务器中不存在目标批次处理中标记位,则确定目标批次消息推送失败并触发告警。
在一个实施例中,消息队列可以在发出目标批次消息时开始计时,如果在预设的时间间隔(可称作第三预设时长)内未接收到消费端返回的与目标批次消息对应的成功接收响应,则目标批次消息可能推送失败。进一步地,如果缓存服务器中不存在目标批次处理中标记位,说明没有消费端在处理目标批次消息,此时可以确定目标批次消息推送失败并触发告警。
值得一提的是,在向消费端推送目标批次消息之前,消息队列可以查询缓存服务器中是否存在目标批次推送中标记位。若不存在,消息队列可以在缓存服务器中记录目标批次推送中标记位,并在确定所述目标批次消息推送成功之后,删除所述目标批次推送中标记位。推送目标批次推送中标记位反映了消息队列正在推送或者已经推送了目标批次消息,在缓存服务器中记录目标批次推送中标记位,便于分析和统计消息。例如,目标批次消息的下标范围为[0-99],在推送目标批次消息前,可以在缓存服务器中记录目标批次推送中标记位PUSHING:[0-99]。
在步骤201之后,为了确定消费端即将消费的目标消息是否为失效消息或者重复消息,在处理目标消息前,消费端可以通过对比目标消息序列号与缓存服务器中记录的同类消息的最大消息序列号的大小关系,来确定同类消息的消费进度。例如:如果最大消息序列号大于目标消息序列号,说明目标消息为失效消息;如果最大消息序列号等于目标消息序列号,说明目标消息为重复消息;如果最大消息序列号小于目标消息序列号,说明目标消息相较于已成功消费的消息而言是新消息。
在一个实施例中,可能出现消费端中负责消费消息的消费者在成功消费了目标消息后出现故障,未能及时删除目标消息处理中标记位,消息队列可能将目标消息重复发给消费端。为了避免消费端中的其他消费者重复消费目标消息。可以在确定最大消息序列号小于目标消息序列号后进一步判断缓存服务器中是否存在目标消息处理中标记位。如果不存在目标消息处理中标记位,可以认为目标消息为未被任意消费者消费过的新消息;如果存在目标消息处理中标记位,可以说明已经有消费者正在处理或已经成功消费了目标消息,目标消息为重复消息,此时可以忽略目标消息。
相应的,针对未被任意消费者消费过的新消息的处理可以参见步骤202,针对失效消息和重复消息的处理可以参见步骤203。
步骤202,若最大消息序列号小于目标消息序列号且缓存服务器中不存在目标消息处理中标记位,消费端则在缓存服务器中记录目标消息处理中标记位,并消费目标消息。
在一个实施例中,在每消费一条消息之前,消费端可以在缓存服务器中记录与这条消息对应的处理中标记位。为了便于描述,可以将将与目标消息对应的处理中标记位称作目标消息处理中标记位。目标消息处理中标记位可以包含目标关键字段和目标消息序列号(可记作key+seq_receive=true)。目标消息处理中标记位还可以包含处理目标消息的消费者的唯一身份标识(可记作key+seq_receive+consumerID=true),这样便于查看负责消费目标消息的消费者,进而统计和分析消息消费情况、以及准确定位出现异常的消费者。
步骤203,若最大消息序列号不小于目标消息序列号,或最大消息序列号小于目标消息序列号且缓存服务器中存在目标消息处理中标记位,则忽略所述目标消息。
在一个实施例中,某一用户终端在十点十分十秒(可记作10:10:10)发出了第一昵称请求,并在十点十分十一秒(可记作10:10:11)发出了第二昵称请求。由于用户终端到消息队列之间或者消息队列到消费端之间的网络不稳定等因素,消费端接收到的第一昵称请求和第二昵称请求的顺序发生颠倒。此时,消费端会先消费第二昵称请求,然后消费第一昵称请求。这样,造成用户昵称最终被消费端设置为第一昵称,与用户终端期望设置的第二昵称不一致。或者,由于用户终端的重发机制,消费端接收到了两次第二昵称请求,造成消费端重复消费第二昵称请求,浪费计算资源。因此,消费端可以采用步骤203来忽略重复消息和失效消息。
一般而言,忽略目标消息可以理解为丢弃目标消息。在某些情况下,针对重复消息,忽略目标消息可以理解为暂时不对目标消息进行处理,并将目标消息存放到预设的等待队列中以等待消费端从等待队列中获取并再次判断是否消费目标消息。
仍以某一用户终端先后发出第一昵称请求和第二昵称请求为例,由于消费端采用多线程并行处理消息或者由于其他情况,缓存服务器中可能同时记录有第一昵称请求处理中标记位和第二昵称请求处理中标记位,并且后续消费端可能率先成功消费第二昵称请求,然后成功消费第一昵称请求。消费端在缓存服务器中已存在第二昵称请求处理中标记位的情况下,或者在已成功消费第二昵称请求并且正在消费第一昵称请求的情况下,均可以将再次获取到的第二昵称请求暂时存放到等待队列中而不是直接丢弃。因为如果直接丢弃再次获取到的第二昵称请求,用户昵称最终将被消费端设置为第一昵称,与用户终端期望设置的第二昵称不一致。而将再次获取到的第二昵称请求暂时存放到等待队列,使得消费端成功消费第一昵称请求之后,可以从等待队列中再次获取并消费第二昵称请求,从而保证数据一致性。
步骤204,当目标消息消费成功时,消费端以目标消息序列号更新缓存服务器存储的最大消息序列号。
在一个实施例中,当消费端成功消费目标消息之后,可以及时更新缓存服务器存储的最大消息序列号。例如,可以在缓存服务器中新增目标消息的目标关键字段与目标消息序列号的映射关系项,或者将缓存服务器已经记录的同类消息的映射关系项中的消息序列号替换为目标消息序列号。
可选的,消费端每成功消费一条消息,可以删除缓存服务器中存储的与该单条消息对应的处理中标记位。相应地,步骤204的处理还可以包括:当所述目标消息消费成功时,删除所述目标消息处理中标记位;若所述目标消息处理中标记位在所述缓存服务器中存储时间超过第一预设时长,则触发告警。
在一个实施例中,缓存服务器可以在消费端记录目标消息处理中标记位时开始计时,如果在预设的时间间隔(可称作第一预设时长)内消费端未将目标消息处理中标记位删除,则说明目标消息的消费过程出现异常,此时可以触发告警利于排除故障。
可选的,如果存在目标消息本身异常等问题,正常消费端将不能成功消费目标消息。此时,消费端可以主动将消费失败的目标消息移动至异常消息队列。相应的,本发明提供的数据处理方法还可以包括:当目标消息消费失败时,将目标消息移动至异常消息队列;若异常消息队列中存在任意消息,则触发告警。
在一个实施例中,数据处理系统还可以包括监控服务器(附图中未示出),利用监控服务器对异常消息队列进行实时监控。一旦发现异常消息队列中存储了任意消息,可以通过邮件、短信等渠道发出警报,以通知技术人员排除故障。当然,为了避免频繁告警,可以在监控服务器上设置其他触发告警的条件,本发明对此不作限制。
可选的,为了消费端重复消费避免目标批次消息,本发明提供的数据处理方法还可以包括:当目标批次消息中的所有消息处理完成时,删除目标批次处理中标记位;若目标批次处理中标记位在缓存服务器中存储时间超过第二预设时长,则触发告警。
在一个实施例中,可能出现例如消费端在缓存服务器中记录目标批次处理中标记位之后,还没来得及成功消费完目标批次消息便出现故障的问题。这种情况下,目标批次处理中标记位将持续在缓存服务器中存储。切换消费端后,由于缓存服务器中存在目标批次处理中标记位,新的消费端即使获取到目标批次消息,也可能将其丢弃。因此,若目标批次处理中标记位在缓存服务器中存储时间超过预设的时间间隔(可称作第二预设时长),可以确定目标批次消息消费异常并触发告警。
值得一提的是,数据处理系统也可以利用监控服务器对缓存服务器进行监控进行监控以及时发现异常,进而及时告警以排除故障。例如,第一预设时间和第二预设时间均可以由监控服务器来监控。具体而言,当任意一条消息对应的单条消息处理中标记位在缓存服务器中的存活时间超过第一预设时长,当任意批次的消息对应的批量消息处理中标记位在缓存服务器中的存活时间超过第二预设时长,均可以由监控服务器出发告警。
需要说明的是,第一预设时间、第二预设时间和第三预设时间的取值可以相同也可以不同,可以根据经验在相应的网络设备中预先设置。
相较于现有技术,本发明实施例至少可以带来以下有益效果:第一,消费端通过对比目标消息序列号与缓存服务器中存储的最大消息序列号的大小,可以判断目标消息是否为失效消息或者重复消息;通过查询缓存服务器中是否存在目标消息处理中标记位,可以进一步确定目标消息是否为重复消息,以避免重复处理或消息乱序。进而,消费端能够忽略失效消息和重复消息,在保证数据一致性的前提下保证同一条消息只被消费一次。第二,消息队列通过已推送成功的消息的最大下标值,可以确定下一批次的消息为哪些消息;通过查询缓存服务器中是否存在目标批次处理中标记位,可以判断目标批次消息是否已被成功推送。进而避免重复推送目标批次消息以及在推送失败时及时触发告警以排除故障。
基于相同的技术构思,本发明实施例还提供了一种基于消息队列的数据处理系统,所述系统包括消息队列和消费端,其中,所述消费端用于:
解析从消息队列获取的目标消息的目标关键字段和目标消息序列号,并从缓存服务器获取与所述目标关键字段对应的最大消息序列号;其中,所述目标消息序列号为具有时序的识别码;
若所述最大消息序列号不小于所述目标消息序列号,或所述最大消息序列号小于所述目标消息序列号且所述缓存服务器中存在目标消息处理中标记位,则忽略所述目标消息;
若所述最大消息序列号小于所述目标消息序列号且所述缓存服务器中不存在所述目标消息处理中标记位,则在所述缓存服务器中记录所述目标消息处理中标记位,并消费所述目标消息;
当所述目标消息消费成功时,以所述目标消息序列号更新所述缓存服务器存储的所述最大消息序列号。
可选的,在解析从消息队列获取的目标消息的目标关键字段和目标消息序列号之前,所述消费端还用于:
从消息队列获取目标批次消息,查询所述缓存服务器是否存在目标批次处理中标记位;其中,所述目标批次消息包含所述目标消息;
若存在,则丢弃所述目标批次消息;若不存在,则在所述缓存服务器中记录所述目标批次处理中标记位。
可选的,所述消费端从所述消息队列中拉取所述目标批次消息或者接收由所述消息队列推送的所述目标批次消息;其中,
从所述消息队列拉取到所述目标批次消息之后,所述消费端还用于:
在缓存服务器中记录所述目标批次消息的最大下标值,以根据所述最大下标值拉取下一批次的消息;
接收到所述消息队列推送的所述目标批次消息之后,所述消费端还用于:
向所述消息队列回复成功接收响应,并由所述消息队列在缓存服务器中记录所述目标批次消息的最大下标值,以使所述消息队列根据所述最大下标值推送下一批次的消息。
可选的,所述消费端还用于:
当所述目标消息消费成功时,删除所述目标消息处理中标记位;
若所述目标消息处理中标记位在所述缓存服务器中存储时间超过第一预设时长,则触发告警。
可选的,所述消费端还用于:
当所述目标消息消费失败时,将所述目标消息移动至异常消息队列;
若所述异常消息队列中存在任意消息,则触发告警。
可选的,所述消费端还用于:
当所述目标批次消息中的所有消息处理完成时,删除所述目标批次处理中标记位;
若目标批次处理中标记位在所述缓存服务器中存储时间超过第二预设时长,则触发告警。
可选的,所述消息队列用于:
查询所述缓存服务器中记录的最大下标值,根据所述缓存服务器中记录的最大下标值向所述消费端推送目标批次消息;
若接收到所述成功接收响应,或者确定缓存服务器中存在所述目标批次处理中标记位,则确定所述目标批次消息推送成功,并在所述缓存服务器中记录所述目标批次消息的最大下标值;
若在第三预设时长内未接收到所述成功接收响应,且所述缓存服务器中不存在所述目标批次处理中标记位,则确定所述目标批次消息推送失败并触发告警。
需要说明的是,上述实施例提供的数据处理系统与数据处理实施例属于同一构思,其具体实现过程以及所产生的技术效果详见方法实施例,这里不再赘述。
图7是本发明实施例提供的一种服务器的结构示意图。该服务器700可因配置或性能不同而产生比较大的差异,可以包括一个以上中央处理器722(例如,一个以上处理器)和存储器732,一个以上存储应用程序742或数据744的存储介质730(例如一个以上海量存储设备)。其中,存储器732和存储介质730可以是短暂存储或持久存储。存储在存储介质730的程序可以包括一个以上模块(图示没标出),每个模块可以包括对文本标注设备700中的一系列指令操作。更进一步地,中央处理器722可以设置为与存储介质730通信,在服务器700上执行存储介质730中的一系列指令操作。
服务器700还可以包括一个以上电源729,一个以上有线或无线网络接口750,一个以上输入输出接口758,一个以上键盘756,和/或,一个以上操作系统741,例如WindowsServer,Mac OS X,Unix,Linux,FreeBSD等等。
服务器700可以包括有存储器,以及一个以上的程序,其中一个以上程序存储于存储器中,且经配置以由一个以上处理器执行所述一个以上程序包含用于进行上述推送流媒体数据的指令。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件来实现。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该实现基于消息队列的数据处理方法的软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括存储若干指令用以使得一台网络设备执行各个实施例或者实施例的某些部分所述的方法。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (14)
1.一种基于消息队列的数据处理方法,应用于消费端,其特征在于,所述方法包括:
解析从消息队列获取的目标消息的目标关键字段和目标消息序列号,并从缓存服务器获取与所述目标关键字段对应的最大消息序列号;其中,所述目标消息序列号为具有时序的识别码;
根据所述最大消息序列号与所述目标消息序列号的大小关系、以及所述缓存服务器中是否存储有目标消息处理中标记位,判断是否消费所述目标消息;
当所述目标消息消费成功时,以所述目标消息序列号更新所述缓存服务器存储的所述最大消息序列号。
2.如权利要求1所述的方法,其特征在于,根据所述最大消息序列号与所述目标消息序列号的大小关系、以及所述缓存服务器中是否存储有目标消息处理中标记位,判断是否消费所述目标消息包括:
若所述最大消息序列号小于所述目标消息序列号且所述缓存服务器中不存在所述目标消息处理中标记位,则在所述缓存服务器中记录所述目标消息处理中标记位,并消费所述目标消息;
若所述最大消息序列号不小于所述目标消息序列号,或所述最大消息序列号小于所述目标消息序列号且所述缓存服务器中存在目标消息处理中标记位,则忽略所述目标消息。
3.如权利要求1所述的方法,其特征在于,所述解析从消息队列获取的目标消息的目标关键字段和目标消息序列号之前,所述方法还包括:
从消息队列获取目标批次消息,并查询所述缓存服务器是否存在目标批次处理中标记位;其中,所述目标批次消息包含所述目标消息;
若存在,则丢弃所述目标批次消息;若不存在,则在所述缓存服务器中记录所述目标批次处理中标记位。
4.如权利要求3所述的方法,其特征在于,所述从消息队列获取目标批次消息包括从所述消息队列中拉取所述目标批次消息或者接收由所述消息队列推送的所述目标批次消息;
从所述消息队列拉取到所述目标批次消息之后,所述方法还包括:
在缓存服务器中记录所述目标批次消息的最大下标值,以根据所述最大下标值拉取下一批次的消息;
接收到所述消息队列推送的所述目标批次消息之后,所述方法还包括:
向所述消息队列回复成功接收响应,并由所述消息队列在缓存服务器中记录所述目标批次消息的最大下标值,以使所述消息队列根据所述最大下标值推送下一批次的消息。
5.如权利要求1所述的方法,其特征在于,所述方法还包括:
当所述目标消息消费成功时,删除所述目标消息处理中标记位;
若所述目标消息处理中标记位在所述缓存服务器中存储时间超过第一预设时长,则触发告警。
6.如权利要求1所述的方法,其特征在于,所述方法还包括:
当所述目标消息消费失败时,将所述目标消息移动至异常消息队列;
若所述异常消息队列中存在任意消息,则触发告警。
7.如权利要求1所述的方法,其特征在于,忽略所述目标消息包括:
将所述目标消息存放至等待队列,以使所述消费端从所述等待队列中获取并再次判断是否消费所述目标消息。
8.如权利要求3所述的方法,其特征在于,所述方法还包括:
当所述目标批次消息中的所有消息处理完成时,删除所述目标批次处理中标记位;
若目标批次处理中标记位在所述缓存服务器中存储时间超过第二预设时长,则触发告警。
9.一种基于消息队列的数据处理方法,应用于消息队列,其特征在于,所述方法包括:
查询已推送成功的消息的最大下标值,根据所述最大下标值向消费端推送目标批次消息;
若接收到所述消费端回复的成功接收响应,或者确定缓存服务器中存在目标批次处理中标记位,则确定所述目标批次消息推送成功,并记录所述目标批次消息的最大下标值;
若在第三预设时长内未接收到所述成功接收响应,且所述缓存服务器中不存在所述目标批次处理中标记位,则确定所述目标批次消息推送失败并触发告警;
其中,所述目标批次处理中标记位由所述消费端在接收到所述目标批次消息时在所述缓存服务器中记录。
10.如权利要求9所述的方法,其特征在于,所述方法还包括:
所述目标批次消息中的各条消息携带有消息序列号,所述各条消息的消息序列号为具有时序的识别码;
所述消息序列号用于使所述消费端判断是否消费所述消息序列号对应的消息。
11.一种基于消息队列的数据处理系统,所述系统包括消息队列和消费端,其特征在于,所述消费端用于实现如权利要求1至8任一项所述的方法,和/或所述消息队列用于实现如权利要求9至10任一项所述的方法。
12.一种服务器,其特征在于,所述服务器包括处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行,以实现如权利要求1至8任一项所述的方法,或者实现如权利要求9至10任一项所述的方法。
13.一种缓存服务器,其特征在于,所述缓存服务器与消息队列和消费端共同实现如权利要求1至10任一项所述的方法。
14.一种计算机可读存储介质,其特征在于,所述存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由处理器加载并执行,以实现如权利要求1至8任一项所述的方法,或者实现如权利要求9至10任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011171947.0A CN112416614A (zh) | 2020-10-28 | 2020-10-28 | 基于消息队列的数据处理方法、系统及服务器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011171947.0A CN112416614A (zh) | 2020-10-28 | 2020-10-28 | 基于消息队列的数据处理方法、系统及服务器 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112416614A true CN112416614A (zh) | 2021-02-26 |
Family
ID=74840976
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011171947.0A Pending CN112416614A (zh) | 2020-10-28 | 2020-10-28 | 基于消息队列的数据处理方法、系统及服务器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112416614A (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113239088A (zh) * | 2021-04-12 | 2021-08-10 | 上海沐融信息科技有限公司 | 一种异步化可调节预取量的序号发生器获取方法及装置 |
CN113742107A (zh) * | 2021-09-03 | 2021-12-03 | 广州新丝路信息科技有限公司 | 一种避免消息队列中消息丢失的处理方法及相关设备 |
CN114039961A (zh) * | 2021-10-08 | 2022-02-11 | 中移(杭州)信息技术有限公司 | 基于WebSocket的消息推送方法、设备、服务器及存储介质 |
CN114253747A (zh) * | 2021-12-27 | 2022-03-29 | 北京宇信科技集团股份有限公司 | 一种分布式消息管理系统和方法 |
CN114443327A (zh) * | 2022-01-28 | 2022-05-06 | 苏州浪潮智能科技有限公司 | 一种消息调度方法、系统及相关组件 |
CN114500416A (zh) * | 2021-12-14 | 2022-05-13 | 阿里巴巴(中国)有限公司 | 用于最多一次消息投递的投递方法和投递系统 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150127769A1 (en) * | 2013-11-06 | 2015-05-07 | Amazon Technologies, Inc. | Strict queue ordering in a distributed system |
CN108874562A (zh) * | 2018-06-21 | 2018-11-23 | 北京顺丰同城科技有限公司 | 分布式高并发消息队列推送系统 |
CN108984325A (zh) * | 2018-07-20 | 2018-12-11 | 北京北信源信息安全技术有限公司 | 消息队列消费方法和装置 |
CN110535787A (zh) * | 2019-07-25 | 2019-12-03 | 北京奇艺世纪科技有限公司 | 消息消费方法、装置及可读存储介质 |
CN110633320A (zh) * | 2018-05-30 | 2019-12-31 | 北京京东尚科信息技术有限公司 | 分布式数据服务的处理方法、系统、设备及存储介质 |
CN111190747A (zh) * | 2019-12-20 | 2020-05-22 | 北京金山云网络技术有限公司 | 用于消息队列的消息丢失检测方法和装置 |
CN111314422A (zh) * | 2020-01-17 | 2020-06-19 | 平安医疗健康管理股份有限公司 | 基于kafka的消息处理方法、系统、存储介质及计算机设备 |
-
2020
- 2020-10-28 CN CN202011171947.0A patent/CN112416614A/zh active Pending
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150127769A1 (en) * | 2013-11-06 | 2015-05-07 | Amazon Technologies, Inc. | Strict queue ordering in a distributed system |
CN110633320A (zh) * | 2018-05-30 | 2019-12-31 | 北京京东尚科信息技术有限公司 | 分布式数据服务的处理方法、系统、设备及存储介质 |
CN108874562A (zh) * | 2018-06-21 | 2018-11-23 | 北京顺丰同城科技有限公司 | 分布式高并发消息队列推送系统 |
CN108984325A (zh) * | 2018-07-20 | 2018-12-11 | 北京北信源信息安全技术有限公司 | 消息队列消费方法和装置 |
CN110535787A (zh) * | 2019-07-25 | 2019-12-03 | 北京奇艺世纪科技有限公司 | 消息消费方法、装置及可读存储介质 |
CN111190747A (zh) * | 2019-12-20 | 2020-05-22 | 北京金山云网络技术有限公司 | 用于消息队列的消息丢失检测方法和装置 |
CN111314422A (zh) * | 2020-01-17 | 2020-06-19 | 平安医疗健康管理股份有限公司 | 基于kafka的消息处理方法、系统、存储介质及计算机设备 |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113239088A (zh) * | 2021-04-12 | 2021-08-10 | 上海沐融信息科技有限公司 | 一种异步化可调节预取量的序号发生器获取方法及装置 |
CN113742107A (zh) * | 2021-09-03 | 2021-12-03 | 广州新丝路信息科技有限公司 | 一种避免消息队列中消息丢失的处理方法及相关设备 |
CN113742107B (zh) * | 2021-09-03 | 2024-06-07 | 广州新丝路信息科技有限公司 | 一种避免消息队列中消息丢失的处理方法及相关设备 |
CN114039961A (zh) * | 2021-10-08 | 2022-02-11 | 中移(杭州)信息技术有限公司 | 基于WebSocket的消息推送方法、设备、服务器及存储介质 |
CN114500416A (zh) * | 2021-12-14 | 2022-05-13 | 阿里巴巴(中国)有限公司 | 用于最多一次消息投递的投递方法和投递系统 |
CN114253747A (zh) * | 2021-12-27 | 2022-03-29 | 北京宇信科技集团股份有限公司 | 一种分布式消息管理系统和方法 |
CN114443327A (zh) * | 2022-01-28 | 2022-05-06 | 苏州浪潮智能科技有限公司 | 一种消息调度方法、系统及相关组件 |
CN114443327B (zh) * | 2022-01-28 | 2024-10-22 | 苏州浪潮智能科技有限公司 | 一种消息调度方法、系统及相关组件 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112416614A (zh) | 基于消息队列的数据处理方法、系统及服务器 | |
WO2021121370A1 (zh) | 用于消息队列的消息丢失检测方法和装置 | |
CN109714409B (zh) | 一种消息的管理方法和系统 | |
US9094466B2 (en) | Maintaining caches of object location information in gateway computing devices using multicast messages | |
US8370847B2 (en) | Managing persistence in a messaging system | |
CN112367149B (zh) | 消息获取方法、装置、设备及存储介质 | |
CN112445626B (zh) | 一种基于消息中间件的数据处理方法和装置 | |
CN109905479B (zh) | 文件传输方法和装置 | |
CN111416823A (zh) | 一种数据传输方法和装置 | |
CN112486701A (zh) | 一种消息异步处理方法及其设备 | |
US10938633B2 (en) | Facilitating resilient and fault tolerant asynchronous messaging | |
CN116405547A (zh) | 消息推送方法、装置及处理器、电子设备、存储介质 | |
CN113986583A (zh) | 一种分布式消息处理方法、装置、系统、设备及存储介质 | |
US11190301B2 (en) | Method and device for setting out-of-order value of network | |
CN116489223A (zh) | 数据上报方法、数据上报装置、电子设备及存储介质 | |
CN116633874A (zh) | 基于阻塞队列的消息处理方法、装置、设备及存储介质 | |
EP3710929B1 (en) | Optimized reconciliation in a controller switch network | |
CN113032492B (zh) | 一种边缘端数据传输与存储的方法以及装置 | |
CN114786216A (zh) | 应用层数据传输方法、装置、设备及介质 | |
CN112468386B (zh) | 一种重复消息的处理方法及终端 | |
CN114201659A (zh) | 一种消息轨迹传输查询方法、装置及系统 | |
CN113472691A (zh) | 一种基于消息队列和纠删码的海量时序数据异地归档方法 | |
CN112910983A (zh) | 消息推送方法、装置、设备和介质 | |
CN115209360B (zh) | 基于对象的聚合容器数据传输方法和装置 | |
CN115086318B (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 |