CN113722125A - 基于分布式订阅发布网络的数据处理方法及系统 - Google Patents
基于分布式订阅发布网络的数据处理方法及系统 Download PDFInfo
- Publication number
- CN113722125A CN113722125A CN202111047876.8A CN202111047876A CN113722125A CN 113722125 A CN113722125 A CN 113722125A CN 202111047876 A CN202111047876 A CN 202111047876A CN 113722125 A CN113722125 A CN 113722125A
- Authority
- CN
- China
- Prior art keywords
- subscription
- data
- content
- node
- data production
- 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.)
- Granted
Links
- 238000003672 processing method Methods 0.000 title claims abstract description 18
- 238000004519 manufacturing process Methods 0.000 claims abstract description 235
- 238000000034 method Methods 0.000 claims description 12
- 238000012545 processing Methods 0.000 claims description 12
- 238000012544 monitoring process Methods 0.000 claims description 9
- 238000003745 diagnosis Methods 0.000 description 9
- 238000010586 diagram Methods 0.000 description 4
- 238000012986 modification Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 238000004891 communication Methods 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000004927 fusion Effects 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 238000011084 recovery 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
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/547—Messaging middleware
-
- 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)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Transfer Between Computers (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明提供一种基于分布式订阅发布网络的数据处理方法及系统,将获取的订阅客户端发送的订阅请求中的订阅内容拆分成多个订阅子内容,将各个订阅子内容分发给与订阅内容匹配的各个数据生产节点,使每个数据生产节点基于接收到订阅子内容建立与订阅客户端之间的订阅关系;当监听到各个数据生产节点中存在故障数据生产节点时,将故障数据生产节点对应的订阅关系分发给未发生故障的数据生产节点,使未发生故障的数据生产节点根据订阅关系指示的订阅子内容生产相应的订阅数据,反馈订阅数据;将每个订阅子内容对应的订阅数据返回给订阅请求指示的订阅客户端标识对应的订阅客户端。本发明可以适用分布式订阅发布网络,减轻订阅发布者的负担。
Description
技术领域
本发明涉及电数字数据处理技术领域,更具体地说,涉及一种基于分布式订阅发布网络的数据处理方法及系统。
背景技术
在分布式订阅发布网络中,通常采用“订阅发布者---消息队列中间件---数据生产者”,实现数据的处理与传递,具体的,订阅发布者可以向消息队列中间件发布订阅某些数据的订阅消息,数据生产者在从消息队列中间件中获取到相应的订阅消息后,周期性生成与该订阅消息对应的订阅数据,并将生成的订阅数据通过消息队列中间件推送给订阅发布者。但是这种方式,当数据产者在生产与订阅消息相应订阅数据的过程中发生故障时,即使数据生产者恢复了,由于该订阅消息在消息队列中间件中已经被消费过了,所以数据生产者无法再从消息队列中间件中获取该订阅消息,从而导致无法再生产与该订阅消息相应的订阅数据,订阅发布者也无法再获取到请求订阅的订阅数据。
在现在有技术中,可以通过另外的通道通知订阅发布者,让订阅发布者重新发起订阅消息,但是这样耦合了订阅发布者和数据生产者之间的关系,不适用于分布式订阅发布网络,并且还会加重订阅发布者的负担。
发明内容
有鉴于此,本发明提供一种基于分布式订阅发布网络的数据处理方法及系统,以实现在适用于分布式订阅发布网络的基础上,减轻订阅发布者的负担。
本发明第一方面公开一种基于分布式订阅发布网络的数据处理方法,所述方法包括:
获取订阅客户端发送的订阅请求,其中,所述订阅请求包括订阅内容和订阅客户端标识;
将所述订阅内容拆分成多个订阅子内容,并将各个所述订阅子内容分别分发给与所述订阅内容匹配的各个数据生产节点,以使每个所述数据生产节点基于接收到所述订阅子内容建立与所述订阅客户端之间的订阅关系;其中,与所述订阅内容匹配的各个所述数据生产节点属于同一个分布式订阅发布网络集群;
当监听到各个所述数据生产节点中存在故障数据生产节点时,将所述故障数据生产节点对应的所述订阅关系分发给各个所述数据节点中未发生故障的数据生产节点,以使所述未发生故障的数据生产节点根据对应的所述订阅关系指示的所述订阅子内容生产相应的订阅数据,并反馈所述订阅数据;
将所述订阅内容对应的每个所述订阅子内容对应的所述订阅数据返回给所述订阅请求指示的所述订阅客户端标识对应的订阅客户端。
可选的,所述接收订阅客户端发送的订阅请求,包括:
从预先设置的消息队列中间件的订阅主题中获取订阅客户端发送的订阅请求。
可选的,所述将所述订阅内容拆分成多个订阅子内容,并将所述各个订阅子内容分别分发给与所述订阅内容匹配的各个数据生产节点,包括:
将所述订阅内容拆分成多个订阅子内容;
基于与所述订阅内容匹配的消息队列将所述各个订阅子内容分别分发给与所述订阅内容匹配的各个数据生产节点。
可选的,所述当监听到各个所述数据生产节点中存在故障数据生产节点时,将所述故障数据生产节点对应的所述订阅关系分发给各个所述数据节点中未发生故障的数据生产节点,包括:
通过与所述订阅内容匹配的主节点监听与所述订阅内容匹配的各个所述数据生产节点;其中,所述主节点为通过主节点选取算法选出的与所述订阅内容匹配的各个所述数据生产节点中的任一所述数据生产节点;
当监听到与所述订阅内容匹配的各个所述数据生产节点中存在故障数据生产节点时,且所述故障数据生产节点不为所述主节点时,通过所述主节点将所述故障数据生产节点对应的所述订阅关系分发给各个所述数据节点中未发生故障的数据生产节点;其中,所述主节点为通过主节点选取算法选出的与所述订阅内容匹配的各个所述数据生产节点中的任一所述数据生产节点;
当监听到与所述订阅内容匹配的各个所述数据生产节点中存在故障数据生产节点,且所述故障数据生产节点为所述主节点时,重新通过所述主节点选取算法从各个所述未发生故障的数据生产节点中,确定新的主节点;
通过所述新的主节点将所述故障数据生产节点对应的所述订阅关系分发给各个所述数据节点中未发生故障的数据生产节点。
可选的,所述将所述订阅内容对应的每个所述订阅子内容对应的所述订阅数据返回给所述订阅请求指示的所述订阅客户端标识对应的订阅客户端,包括:
从所述订阅客户端标识中提取与所述订阅客户端对应的目标消费主题;
通过所述目标消费主题接收所述订阅内容对应的各个所述未发生故障的数据生产节点反馈的订阅数据;
通过所述目标消费主题将所述订阅内容对应的各个所述订阅子内容对应的订阅数据返回给所述订阅请求指示的所述订阅客户端标识对应的订阅客户端。
本发明第二方面公开一种基于分布式订阅发布网络的数据处理系统,其特征在于,所述系统包括:
获取单元,用于获取订阅客户端发送的订阅请求,其中,所述订阅请求包括订阅内容和订阅客户端标识;
第一分发单元,用于将所述订阅内容拆分成多个订阅子内容,并将所述各个订阅子内容分别分发给与所述订阅内容匹配的各个数据生产节点,以使每个所述数据生产节点基于接收到所述订阅子内容建立与所述订阅客户端之间的订阅关系;其中,与所述订阅内容匹配的各个所述数据生产节点属于同一个分布式订阅发布网络集群;
第二分发单元,用于当监听到各个所述数据生产节点中存在故障数据生产节点时,将所述故障数据生产节点对应的所述订阅关系分发给各个所述数据节点中未发生故障的数据生产节点,以使所述未发生故障的数据生产节点根据对应的所述订阅关系指示的所述订阅子内容生产相应的订阅数据,并反馈所述订阅数据;
返回单元,用于将所述订阅内容对应的每个所述订阅子内容对应的所述订阅数据返回给所述订阅请求指示的所述订阅客户端标识对应的订阅客户端。
可选的,所述获取单元,包括:
获取子单元,用于从预先设置的消息队列中间件的订阅主题中获取订阅客户端发送的订阅请求。
可选的,所述第一分发单元,包括:
拆分单元,用于将所述订阅内容拆分成多个订阅子内容;
第三分发单元,用于基于与所述订阅内容匹配的消息队列将所述各个订阅子内容分别分发给与所述订阅内容匹配的各个数据生产节点。
可选的,所述第二分发单元,包括:
监听单元,用于通过与所述订阅内容匹配的主节点监听与所述订阅内容匹配的各个所述数据生产节点;其中,所述主节点为通过主节点选取算法选出的与所述订阅内容匹配的各个所述数据生产节点中的任一所述数据生产节点;
第四分发单元,用于当监听到与所述订阅内容匹配的各个所述数据生产节点中存在故障数据生产节点时,且所述故障数据生产节点不为所述主节点时,通过所述主节点将所述故障数据生产节点对应的所述订阅关系分发给各个所述数据节点中未发生故障的数据生产节点;其中,所述主节点为通过主节点选取算法选出的与所述订阅内容匹配的各个所述数据生产节点中的任一所述数据生产节点;
选取单元,用于当监听到与所述订阅内容匹配的各个所述数据生产节点中存在故障数据生产节点,且所述故障数据生产节点为所述主节点时,重新通过所述主节点选取算法从各个所述未发生故障的数据生产节点中,确定新的主节点;
第五分发单元,用于通过所述新的主节点将所述故障数据生产节点对应的所述订阅关系分发给各个所述数据节点中未发生故障的数据生产节点。
可选的,所述返回单元,包括:
确定单元,用于从所述订阅客户端标识中提取与所述订阅客户端对应的目标消费主题;
接收单元,用于通过所述目标消费主题接收所述订阅内容对应的各个所述未发生故障的数据生产节点反馈的订阅数据;
返回子单元,用于通过所述目标消费主题将所述订阅内容对应的各个所述订阅子内容对应的订阅数据返回给所述订阅请求指示的所述订阅客户端标识对应的订阅客户端。
本发明提供一种基于分布式订阅发布网络的数据处理方法及系统,通过获取订阅客户端发送的订阅请求,将该订阅请求中的订阅内容拆分成多个订阅子内容,并将各个订阅子内容分别分发给与订阅内容匹配的各个数据生产节点,以使每个数据生产节点基于接收到订阅子内容建立与订阅客户端之间的订阅关系,并在监听到与订阅内容匹配的各个数据生产节点中存在故障数据生产节点时,将该故障数据生产节点对应的订阅关系分发给各个数据生产节点中未发生故障的数据生产节点,以使未发生故障的数据生产节点根据对应的订阅关系指示的订阅子内容生产相应的订阅数据,并反馈订阅数据;将订阅内容对应的每个订阅子内容对应的订阅数据返回给订阅请求指示的订阅客户端标识对应的订阅客户端。本发明提供的技术方案,通过使每个数据生产节点基于接收到订阅子内容建立与订阅客户端之间的订阅关系,以便在监听到某个数据生产节点发生故障时,将发生故障的数据生产节点对应的订阅关系分发给与该故障数据生产节点属于同一个分布式订阅发布网络集群的未发生故障的数据生产节点,以便未发生故障的数据生产节点根据对应的订阅关系指示的订阅子内容生产相应的订阅数据,并反馈订阅数据,不需要通过另外的通道通知订阅发布者,让订阅发布者重新发起订阅消息,从而实现了在适用于分布式订阅发布网络的基础上,减轻订阅发布者(订阅客户端)的负担。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本发明实施例提供的一种基于分布式订阅发布网络的数据处理方法的流程示意图;
图2为本发明实施例提供的一种订阅关系表的示例图;
图3为本发明实施例提供的一种未发生故障的数据生产节点在接收到主节点分发的订阅关系后,将接收到的订阅关系持久化至数据库中,并对数据中存储订阅关系表进行更新的示例图;
图4为本发明实施例提供的一种基于分布式订阅发布网络的数据处理方法的示例图;
图5为本发明实施例提供的一种基于分布式订阅发布网络的数据处理系统的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本文使用的术语“包括”及其变形是开放性包括,即“包括但不限于”。术语“基于”是“至少部分地基于”。术语“一个实施例”表示“至少一个实施例”;术语“另一实施例”表示“至少一个另外的实施例”;术语“一些实施例”表示“至少一些实施例”。其他术语的相关定义将在下文描述中给出。
需要注意,本发明公开中提及的“第一”、“第二”等概念仅用于对不同的装置、模块或单元进行区分,并非用于限定这些装置、模块或单元所执行的功能的顺序或者相互依存关系。
需要注意,本发明公开中提及的“一个”、“多个”的修饰是示意性而非限制性的,本领域技术人员应当理解,除非在上下文另有明确指出,否则应该理解为“一个或多个”。
由上述背景技术可知,当数据生产者发生故障并恢复后,通过另外的通道通知订阅发布者,让订阅发布者重新发起订阅消息,但是这样耦合了订阅发布者和数据生产者之间的关系,不适用于分布式订阅发布网络,并且还会加重订阅发布者的负担。
在现有技术中,由于分布式订阅网络中包括多个数据生产者,还是可以使这多个数据生产者同时从消息队列中间件获取该订阅发布者向消息队列中间件发布的订阅请求,这样即使某个数据生产者发生了故障,还有其他未发生故障的数据生产可以生产相应的订阅数据。但是这种方式,由于多个数据生产者同时进行工作,不仅会大增加网络通讯负荷,还需可靠算法保证数据的一致性。
在现有技术中,还可以通过数据生产者自己持有的需要恢复的订阅关系,比如:持久化到本地,当它发生了故障恢复时,从本地加载并恢复该订阅关系,但是在数据生产者从故障到恢复的这段时间,订阅发布者是无法收到所需的订阅数据的,具有一定的迟滞性。
因此,本发明提供一种基于分布式订阅发布网络的数据处理方法及系统,通过使每个数据生产节点基于接收到订阅子内容建立与订阅客户端之间的订阅关系,以便在监听到某个数据生产节点发生故障时,将发生故障的数据生产节点对应的订阅关系分发给与该数据生产节点属于同一个分布式订阅发布网络集群的未发生故障的数据生产节点,以便未发生故障的数据生产节点根据对应的订阅关系指示的订阅子内容生产相应的订阅数据,并反馈订阅数据,以便订阅客户端可以及时的获取到相应的订阅数据,并且不需要通过另外的通道通知订阅发布者,让订阅发布者重新发起订阅消息,从而实现了在适用于分布式订阅发布网络的基础上,减轻订阅发布者(订阅客户端)的负担。也不需要控制多个数据生产者同时进行相同的工作,不仅减少了网络通讯负荷,还避免了使用可靠算法保证数据的一致性。
参见图1,示出了本发明实施例提供的一种基于分布式订阅发布网络的数据处理方法的流程示意图,该基于分布式订阅发布网络的数据处理方法应用于基于分布式订阅发布网络的数据处理系统,其中,基于分布式订阅发布网络的数据处理系统如图5所示,该基于分布式订阅发布网络的数据处理方法具体包括以下步骤:
S101:获取订阅客户端发送的订阅请求,其中,订阅请求包括订阅内容和订阅客户端标识。
在具体执行步骤S101的过程中,订阅客户端可以向预先设置的消息队列中间件的订阅主题中发布订阅请求,进而可以从预先设置的消息队列中间件的订阅主题中获取该订阅客户端发送的订阅请求。其中,订阅请求可以包括至少一个订阅内容和订阅客户端标识。
需要说明的是,预先设置的消息队列中间件的订阅主题是由分布式订阅发布网络集群向基于分布式订阅发布网络的数据处理系统预先约定的主题。
需要说明的是,消息队列中间件可以为基于高级消息队列协议(AdvancedMessage Queuing Protocol,AMQP)协议的消息队列中间件,如:RabbitMQ、ActiveMQ、Qpid等等。其中,本申请实施例中采用的是RabbitMQ,以下简称为MQ,本申请实施例中采用交换机supcon.fusionsite.exchange.rtdata下的主题topic.subscribe作为预先约定的主题。
需要说明的是,订阅内容可以为请求订阅报警数据的订阅内容、请求订阅诊断数据的订阅内容等等。消费客户端一般为订阅客户端,也可以为除订阅客户端以外的其他订阅客户端。
在本申请实施例中,订阅客户端发送的订阅请求中可以携带有多个订阅内容,例如,订阅客户端发送的订阅请求中携带有请求订阅报警数据和请求订阅诊断数据两个订阅内容。有关于订阅请求中的携带的订阅内容的具体内容,发明人可以根据自己的需求进行设置,本申请实施例不加以限定。
S102:将订阅内容拆分成多个订阅子内容,并将各个订阅子内容分别分发给与订阅内容匹配的各个数据生产节点,以使每个数据生产节点基于接收到订阅子内容建立与订阅客户端之间的订阅关系;其中,与订阅内容匹配的各个数据生产节点属于同一个分布式订阅发布网络集群。
在步骤S102中,针对每个订阅客户端,在订阅请求中的订阅客户端标识中设置了与该订阅客户端对应的消费主题。
在具体执行步骤S102的过程中,在获取到订阅客户端发布的订阅请求后将该订阅请求中的订阅内容拆分成多个订阅子内容,并基于与该订阅内容匹配的消息队列将各个订阅子内容分别给与该订阅内容匹配的各个数据生产节点,以便每个数据生产节点在接收到相应的订阅子内容后,并基于该订阅子内容建立与订阅客户端之间的订阅关系。其中,与订阅内容匹配的各个数据生产节点属于同一个分布式订阅发布网络集群。
需要说明的是,针对与订阅内容匹配的每个数据生产节点,该数据生产节点在接收到订阅子内容后,可以生成与该订阅子内容相应的订阅数据,并反馈该订阅数据。进而可以从订阅请求中对应的订阅客户端标识中提取与订阅客户端对应的目标消费主题;基于MQ通过目标消费主题接收订阅内容对应的各个数据生产节点反馈的订阅数据;基于MQ通过目标消费主题将订阅内容对应的各个数据生产节点反馈的订阅数据返回给数据订阅请求指示的消费客户端。
需要说明的是,每个数据生产者可以接收多个订阅子内容,当数据生产者接收到多个订阅子内容时,针对每个订阅子内容而言,该数据生产者基于该订阅子内容建立与订阅客户端之间的订阅关系。
在本申请实施例中,针对每个数据生产节点而言,在基于接收到订阅子内容建立与订阅客户端之间的订阅关系后,可以该订阅关系持久化值数据库中,以便根据数据库存储的各个订阅关系建立相应的订阅关系数据表,如图2所示,
在本申请实施例中,若订阅请求中可以携带有多个订阅内容,通过订阅请求消息队列中间件将每个订阅内容拆分成多个订阅子内容,针对每个订阅内容,基于与该订阅内容匹配的消息队列将各个订阅子内容分别分发给与该订阅内容匹配的各个数据生产节点。
例如,订阅客户端发送的订阅请求中携带有请求报警数据的订阅内容、订阅诊断数据的订阅内容两个订阅内容,将请求报警数据的订阅内容拆分成多个订阅子内容,以及将请求诊断数据的订阅内容拆分成多个订阅子内容,进而可以基于与请求报警数据的订阅内容匹配的消息队列(queue.alarm)将请求报警数据的订阅内容对应的各个订阅子内容分别分发给与请求报警数据的订阅内容对应的各个报警服务节点(与请求报警数据的订阅内容匹配的各个数据生产节点);基于与请求诊断数据的订阅内容匹配的消息队列(queue.diag)将请求订阅针对数据对应的各个订阅子内容分别分发给与请求订阅诊断数据对应的各个诊断服务节点(与请求诊断数据的订阅内容匹配的各个数据生产节点)。
S103:当监听到各个数据生产节点中存在故障数据生产节点时,将故障数据生产节点对应的订阅关系分发给各个数据节点中未发生故障的数据生产节点,以使未发生故障的数据生产节点根据对应的订阅关系指示的订阅子内容生产相应的订阅数据,并反馈订阅数据。
在步骤S103中,针对每个订阅内容,通过主节点选取算法从与该订阅内容匹配的各个数据生产节点中选出主节点。
在具体执行步骤S103的过程中,通过与该订阅内容匹配的主节点监听与该订阅内容匹配的各个数据生产节点,当监听到与该订阅内容匹配的各个数据生产节点中存在故障数据生产节点时,进一步判断该故障数据生产节点是否为该主节点,在确定该故障数据生产节点不为主节点的情况下,通过该主节点将该故障数据生产节点对应的订阅关系分发给与该订阅内容匹配的各个数据生产节点中未发生故障数据生产节点,以使未发生故障的数据生产节点根据对应的订阅关系指示的订阅子内容生产相应的订阅数据,并反馈订阅数据。
在确定该故障数据生产节点为主节点的情况下,重新通过主节点选取算法从各个未发生故障的数据生产节点中,确定新的主节点;通过新的主节点将故障数据生产节点对应的订阅关系分发给各个数据节点中未发生故障的数据生产节点,以使未发生故障的数据生产节点根据对应的订阅关系指示的订阅子内容生产相应的订阅数据,并反馈订阅数据。
其中,未发生故障的数据生产节点可以根据主节点分配的订阅关系指示的订阅子内容生产相应的订阅数据,以及根据自身存在的订阅关系指示的订阅子内容生产相应的订阅数据。
在本申请实施例中,未发生故障的数据生产节点在接收到主节点分发的订阅关系后,将接收到的订阅关系持久化至数据库中,并对数据库中存储的订阅关系表进行更新。
例如,参见图3,数据生产节点A对应的订阅关系为订阅关系1和订阅关系2,数据生产节点B对应的订阅关系为订阅关系3和订阅关系4,数据生产节点C对应的订阅关系为订阅关系5和订阅关系6。其中,主节点为数据生产节点A。
当主节点(数据生产节点A)监听到数据生产节点C发生故障时,将数据生产节点C对应的订阅关系(订阅关系5和订阅关系6),分发给数据生产节点A(主节点)和数据生产节点B,数据生产节点A和数据节点B在接收到相应的订阅关系后,将接收到的订阅关系持久化至数据库中,并对数据库中存储的订阅关系表进行更新。
S104:将订阅内容对应的每个订阅子内容对应的订阅数据返回给数据订阅请求指示的订阅客户端标识对应的订阅客户端。
在具体执行步骤S104的过程中,从订阅请求中对应的订阅客户端标识中提取与订阅客户端对应的目标消费主题,基于MQ通过所确定的目标消费主题接收该订阅内容对应的各个未发生故障的数据生产节点反馈的订阅数据;基于MQ通过目标消费主题将订阅内容对应的各个订阅子内容对应的订阅数据返回给数据订阅请求指示的订阅客户端。
进一步的,在本申请实施例中,当订阅客户端因关机、崩溃、重启等原因下线时,将该订阅客户端对应的订阅关系从数据库中移除。
本发明提供一种基于分布式订阅发布网络的数据处理方法,通过获取订阅客户端发送的订阅请求,将该订阅请求中的订阅内容拆分成多个订阅子内容,并将各个订阅子内容分别分发给与订阅内容匹配的各个数据生产节点,以使每个数据生产节点基于接收到订阅子内容建立与订阅客户端之间的订阅关系,并在监听到与订阅内容匹配的各个数据生产节点中存在故障数据生产节点时,将该故障数据生产节点对应的订阅关系分发给各个数据生产节点中未发生故障的数据生产节点,以使未发生故障的数据生产节点根据对应的订阅关系指示的订阅子内容生产相应的订阅数据,并反馈订阅数据;将订阅内容对应的每个订阅子内容对应的订阅数据返回给订阅请求指示的订阅客户端标识对应的订阅客户端。本发明提供的技术方案,通过使每个数据生产节点基于接收到订阅子内容建立与订阅客户端之间的订阅关系,以便在监听到某个数据生产节点发生故障时,将发生故障的数据生产节点对应的订阅关系分发给与该故障数据生产节点属于同一个分布式订阅发布网络集群的未发生故障的数据生产节点,以便未发生故障的数据生产节点根据对应的订阅关系指示的订阅子内容生产相应的订阅数据,并反馈订阅数据,不需要通过另外的通道通知订阅发布者,让订阅发布者重新发起订阅消息,从而实现了在适用于分布式订阅发布网络的基础上,减轻订阅发布者(订阅客户端)的负担。
为了更好对上述内容进行理解,下面进行举例说明。
例如,参见图4,订阅客户端A向MQ的交换机supcon.fusionsite.exchange.rtdata下的主题topic.subscribe(订阅主题)发布相应的订阅请求,其中,订阅请求包括消费客户端为订阅客户端A、请求订阅报警数据的订阅内容和请求订阅诊断数据的订阅内容。
从MQ的主题topic.subscribe(订阅主题)中获取相应的订阅请求,将该订阅请求中的请求订阅报警数据的订阅内容拆分成两个订阅子内容,分别为订阅子内容1和订阅子内容2;将该订阅请求中的请求订阅诊断数据的订阅内容拆分成两个订阅子内容,分别为订阅子内容3和订阅子内容4。
基于与请求订阅报警数据的订阅内容匹配的消息队列queue.alarm将订阅子内容1和订阅子内容2分别分发给与请求订阅报警数据的订阅内容匹配的报警服务节点A和报警服务节点B;基于与请求订阅诊断数据的订阅内容匹配的消息队列queue.diag将订阅子内容3和订阅子内容4分别分发给与请求订阅诊断数据的订阅内容匹配的诊断服务节点A和诊断服务节点B;其中,报警服务节点A和报警服务节点B为与请求订阅报警数据的订阅内容匹配的各个数据生产节点;诊断服务节点A和诊断服务节点B为与请求订阅诊断数据的订阅内容匹配的各个数据生产节点。
从订阅请求中的订阅客户端标识中提取与订阅客户端A对应的目标消费主题为D1D94FAA-42BF-4741-B976XXX2;通过D1D94FAA-42BF-4741-B976XXXX2接收报警服务节点A、报警服务节点B、接收诊断服务节点A和诊断服务节点B反馈的订阅数据;通过D1D94FAA-42BF-4741-B976XXXX2将报警服务节点A、报警服务节点B、接收诊断服务节点A和诊断服务节点B反馈的订阅数据返回给订阅客户端A。
基于本发明实施例公开的基于分布式订阅发布网络的数据处理方法,本发明实施例还对应公开一种基于分布式订阅发布网络的数据处理系统,如图5所示,该系统包括:
获取单元51,用于获取订阅客户端发送的订阅请求,其中,订阅请求包括订阅内容和订阅客户端标识;
第一分发单元52,用于将订阅内容拆分成多个订阅子内容,并将各个订阅子内容分别分发给与订阅内容匹配的各个数据生产节点,以使每个数据生产节点基于接收到订阅子内容建立与订阅客户端之间的订阅关系;其中,与订阅内容匹配的各个数据生产节点属于同一个分布式订阅发布网络集群;
第二分发单元53,用于当监听到各个数据生产节点中存在故障数据生产节点时,将故障数据生产节点对应的订阅关系分发给各个数据节点中未发生故障的数据生产节点,以使未发生故障的数据生产节点根据对应的订阅关系指示的订阅子内容生产相应的订阅数据,并反馈订阅数据;
返回单元54,用于将订阅内容对应的每个订阅子内容对应的订阅数据返回给订阅请求指示的订阅客户端标识对应的订阅客户端。
上述本发明实施例公开的基于分布式订阅发布网络的数据处理系统中各个单元具体的原理和执行过程,与上述本发明实施例公开的基于分布式订阅发布网络的数据处理方法相同,可参见上述本发明实施例公开的基于分布式订阅发布网络的数据处理方法中相应的部分,这里不再进行赘述。
本发明提供一种基于分布式订阅发布网络的数据处理系统,通过获取订阅客户端发送的订阅请求,将该订阅请求中的订阅内容拆分成多个订阅子内容,并将各个订阅子内容分别分发给与订阅内容匹配的各个数据生产节点,以使每个数据生产节点基于接收到订阅子内容建立与订阅客户端之间的订阅关系,并在监听到与订阅内容匹配的各个数据生产节点中存在故障数据生产节点时,将该故障数据生产节点对应的订阅关系分发给各个数据生产节点中未发生故障的数据生产节点,以使未发生故障的数据生产节点根据对应的订阅关系指示的订阅子内容生产相应的订阅数据,并反馈订阅数据;将订阅内容对应的每个订阅子内容对应的订阅数据返回给订阅请求指示的订阅客户端标识对应的订阅客户端。本发明提供的技术方案,通过使每个数据生产节点基于接收到订阅子内容建立与订阅客户端之间的订阅关系,以便在监听到某个数据生产节点发生故障时,将发生故障的数据生产节点对应的订阅关系分发给与该故障数据生产节点属于同一个分布式订阅发布网络集群的未发生故障的数据生产节点,以便未发生故障的数据生产节点根据对应的订阅关系指示的订阅子内容生产相应的订阅数据,并反馈订阅数据,不需要通过另外的通道通知订阅发布者,让订阅发布者重新发起订阅消息,从而实现了在适用于分布式订阅发布网络的基础上,减轻订阅发布者(订阅客户端)的负担。
可选的,获取单元,包括:
获取子单元,用于从预先设置的消息队列中间件的订阅主题中获取订阅客户端发送的订阅请求。
可选的,第一分发单元,包括:
拆分单元,用于将订阅内容拆分成多个订阅子内容;
第三分发单元,用于基于与订阅内容匹配的消息队列将各个订阅子内容分别分发给与订阅内容匹配的各个数据生产节点。
可选的。第二分发单元,包括:
监听单元,用于通过与订阅内容匹配的主节点监听与订阅内容匹配的各个数据生产节点;其中,主节点为通过主节点选取算法选出与订阅内容匹配的各个数据生产节点中的任一数据生产节点;
第四分发单元,用于当监听到与订阅内容匹配的各个数据生产节点中存在故障数据生产节点时,且故障数据生产节点不为主节点时,通过主节点将故障数据生产节点对应的订阅关系分发给各个数据节点中未发生故障的数据生产节点;其中,主节点为通过主节点选取算法选出与订阅内容匹配的各个数据生产节点中的任一数据生产节点;
选取单元,用于当监听到与订阅内容匹配的各个数据生产节点中存在故障数据生产节点,且故障数据生产节点为主节点时,重新通过主节点选取算法从各个未发生故障的数据生产节点中,确定新的主节点;
第五分发单元,用于通过新的主节点将故障数据生产节点对应的订阅关系分发给各个数据节点中未发生故障的数据生产节点。
可选的,返回单元,包括:
确定单元,用于从订阅客户端标识中提取与订阅客户端对应的目标消费主题;
接收单元,用于通过目标消费主题接收订阅内容对应的各个未发生故障的数据生产节点反馈的订阅数据;
返回子单元,用于通过目标消费主题将订阅内容对应的各个订阅子内容对应的订阅数据返回给订阅请求指示的订阅客户端标识对应的订阅客户端。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统或系统实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的系统及系统实施例仅仅是示意性的,其中作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
以上仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (10)
1.一种基于分布式订阅发布网络的数据处理方法,其特征在于,所述方法包括:
获取订阅客户端发送的订阅请求,其中,所述订阅请求包括订阅内容和订阅客户端标识;
将所述订阅内容拆分成多个订阅子内容,并将各个所述订阅子内容分别分发给与所述订阅内容匹配的各个数据生产节点,以使每个所述数据生产节点基于接收到所述订阅子内容建立与所述订阅客户端之间的订阅关系;其中,与所述订阅内容匹配的各个所述数据生产节点属于同一个分布式订阅发布网络集群;
当监听到各个所述数据生产节点中存在故障数据生产节点时,将所述故障数据生产节点对应的所述订阅关系分发给各个所述数据节点中未发生故障的数据生产节点,以使所述未发生故障的数据生产节点根据对应的所述订阅关系指示的所述订阅子内容生产相应的订阅数据,并反馈所述订阅数据;
将所述订阅内容对应的每个所述订阅子内容对应的所述订阅数据返回给所述订阅请求指示的所述订阅客户端标识对应的订阅客户端。
2.根据权利要求1所述的方法,其特征在于,所述接收订阅客户端发送的订阅请求,包括:
从预先设置的消息队列中间件的订阅主题中获取订阅客户端发送的订阅请求。
3.根据权利要求2所述的方法,其特征在于,所述将所述订阅内容拆分成多个订阅子内容,并将所述各个订阅子内容分别分发给与所述订阅内容匹配的各个数据生产节点,包括:
将所述订阅内容拆分成多个订阅子内容;
基于与所述订阅内容匹配的消息队列将所述各个订阅子内容分别分发给与所述订阅内容匹配的各个数据生产节点。
4.根据权利要求1所述的方法,其特征在于,所述当监听到各个所述数据生产节点中存在故障数据生产节点时,将所述故障数据生产节点对应的所述订阅关系分发给各个所述数据节点中未发生故障的数据生产节点,包括:
通过与所述订阅内容匹配的主节点监听与所述订阅内容匹配的各个所述数据生产节点;其中,所述主节点为通过主节点选取算法选出与所述订阅内容匹配的各个所述数据生产节点中的任一所述数据生产节点;
当监听到与所述订阅内容匹配的各个所述数据生产节点中存在故障数据生产节点时,且所述故障数据生产节点不为所述主节点时,通过所述主节点将所述故障数据生产节点对应的所述订阅关系分发给各个所述数据节点中未发生故障的数据生产节点;其中,所述主节点为通过主节点选取算法选出的与所述订阅内容匹配的各个所述数据生产节点中的任一所述数据生产节点;
当监听到与所述订阅内容匹配的各个所述数据生产节点中存在故障数据生产节点,且所述故障数据生产节点为所述主节点时,重新通过所述主节点选取算法从各个所述未发生故障的数据生产节点中,确定新的主节点;
通过所述新的主节点将所述故障数据生产节点对应的所述订阅关系分发给各个所述数据节点中未发生故障的数据生产节点。
5.根据权利要求1所述的方法,其特征在于,所述将所述订阅内容对应的每个所述订阅子内容对应的所述订阅数据返回给所述订阅请求指示的所述订阅客户端标识对应的订阅客户端,包括:
从所述订阅客户端标识中提取与所述订阅客户端对应的目标消费主题;
通过所述目标消费主题接收所述订阅内容对应的各个所述未发生故障的数据生产节点反馈的订阅数据;
通过所述目标消费主题将所述订阅内容对应的各个所述订阅子内容对应的订阅数据返回给所述订阅请求指示的所述订阅客户端标识对应的订阅客户端。
6.一种基于分布式订阅发布网络的数据处理系统,其特征在于,所述系统包括:
获取单元,用于获取订阅客户端发送的订阅请求,其中,所述订阅请求包括订阅内容和所述订阅客户端标识;
第一分发单元,用于将所述订阅内容拆分成多个订阅子内容,并将所述各个订阅子内容分别分发给与所述订阅内容匹配的各个数据生产节点,以使每个所述数据生产节点基于接收到所述订阅子内容建立与所述订阅客户端之间的订阅关系;其中,与所述订阅内容匹配的各个所述数据生产节点属于同一个分布式订阅发布网络集群;
第二分发单元,用于当监听到各个所述数据生产节点中存在故障数据生产节点时,将所述故障数据生产节点对应的所述订阅关系分发给各个所述数据节点中未发生故障的数据生产节点,以使所述未发生故障的数据生产节点根据对应的所述订阅关系指示的所述订阅子内容生产相应的订阅数据,并反馈所述订阅数据;
返回单元,用于将所述订阅内容对应的每个所述订阅子内容对应的所述订阅数据返回给所述订阅请求指示的所述订阅客户端标识对应的订阅客户端。
7.根据权利要求6所述的系统,其特征在于,所述获取单元,包括:
获取子单元,用于从预先设置的消息队列中间件的订阅主题中获取订阅客户端发送的订阅请求。
8.根据权利要求7所述的系统,其特征在于,所述第一分发单元,包括:
拆分单元,用于将所述订阅内容拆分成多个订阅子内容;
第三分发单元,用于基于与所述订阅内容匹配的消息队列将所述各个订阅子内容分别分发给与所述订阅内容匹配的各个数据生产节点。
9.根据权利要求6所述的系统,其特征在于,所述第二分发单元,包括:
监听单元,用于通过与所述订阅内容匹配的主节点监听与所述订阅内容匹配的各个所述数据生产节点;其中,所述主节点为通过主节点选取算法选出与所述订阅内容匹配的各个所述数据生产节点中的任一所述数据生产节点;
第四分发单元,用于当监听到与所述订阅内容匹配的各个所述数据生产节点中存在故障数据生产节点时,且所述故障数据生产节点不为所述主节点时,通过所述主节点将所述故障数据生产节点对应的所述订阅关系分发给各个所述数据节点中未发生故障的数据生产节点;其中,所述主节点为通过主节点选取算法选出的与所述订阅内容匹配的各个所述数据生产节点中的任一所述数据生产节点;
选取单元,用于当监听到与所述订阅内容匹配的各个所述数据生产节点中存在故障数据生产节点,且所述故障数据生产节点为所述主节点时,重新通过所述主节点选取算法从各个所述未发生故障的数据生产节点中,确定新的主节点;
第五分发单元,用于通过所述新的主节点将所述故障数据生产节点对应的所述订阅关系分发给各个所述数据节点中未发生故障的数据生产节点。
10.根据权利要求6所述的系统,其特征在于,所述返回单元,包括:
确定单元,用于从所述订阅客户端标识中提取与所述订阅客户端对应的目标所述订阅客户端标识对应的订阅客户端主题;
接收单元,用于通过所述目标消费主题接收所述订阅内容对应的各个所述未发生故障的数据生产节点反馈的订阅数据;
返回子单元,用于通过所述目标消费主题将所述订阅内容对应的各个所述订阅子内容对应的订阅数据返回给所述订阅请求指示的所述订阅客户端标识对应的订阅客户端。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111047876.8A CN113722125B (zh) | 2021-09-08 | 2021-09-08 | 基于分布式订阅发布网络的数据处理方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111047876.8A CN113722125B (zh) | 2021-09-08 | 2021-09-08 | 基于分布式订阅发布网络的数据处理方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113722125A true CN113722125A (zh) | 2021-11-30 |
CN113722125B CN113722125B (zh) | 2024-01-26 |
Family
ID=78682394
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111047876.8A Active CN113722125B (zh) | 2021-09-08 | 2021-09-08 | 基于分布式订阅发布网络的数据处理方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113722125B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1130845A2 (en) * | 2000-02-18 | 2001-09-05 | Agilent Technologies Inc. a Delaware Corporation | Publish/subscribe system |
CN102158424A (zh) * | 2010-02-02 | 2011-08-17 | 微软公司 | 利用发布和订阅机制的消息传输系统 |
CN109670950A (zh) * | 2018-10-29 | 2019-04-23 | 平安科技(深圳)有限公司 | 基于区块链的交易监听方法、装置、设备和存储介质 |
CN112463144A (zh) * | 2020-12-02 | 2021-03-09 | 苏州浪潮智能科技有限公司 | 分布式存储的命令行服务方法、系统、终端及存储介质 |
-
2021
- 2021-09-08 CN CN202111047876.8A patent/CN113722125B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1130845A2 (en) * | 2000-02-18 | 2001-09-05 | Agilent Technologies Inc. a Delaware Corporation | Publish/subscribe system |
CN102158424A (zh) * | 2010-02-02 | 2011-08-17 | 微软公司 | 利用发布和订阅机制的消息传输系统 |
CN109670950A (zh) * | 2018-10-29 | 2019-04-23 | 平安科技(深圳)有限公司 | 基于区块链的交易监听方法、装置、设备和存储介质 |
CN112463144A (zh) * | 2020-12-02 | 2021-03-09 | 苏州浪潮智能科技有限公司 | 分布式存储的命令行服务方法、系统、终端及存储介质 |
Non-Patent Citations (1)
Title |
---|
汪银海;宁洪;李暾;: "基于发布/订阅模型的中间件实时拓展", 计算机工程, no. 23 * |
Also Published As
Publication number | Publication date |
---|---|
CN113722125B (zh) | 2024-01-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107295080B (zh) | 应用于分布式服务器集群的数据存储方法和服务器 | |
CN106331098B (zh) | 一种服务器集群系统 | |
EP3490224A1 (en) | Data synchronization method and system | |
CN106921754B (zh) | 集群系统的负载均衡方法、装置、介质和电子设备 | |
CN104461752B (zh) | 一种两级故障容错的多媒体分布式任务处理方法 | |
US20040078440A1 (en) | High availability event topic | |
CN110601903A (zh) | 一种基于消息队列中间件的数据处理方法及装置 | |
CN108322358B (zh) | 异地多活的分布式消息发送、处理、消费方法及装置 | |
CN113055461B (zh) | 一种基于ZooKeeper的无人集群分布式协同指挥控制方法 | |
CN109462640B (zh) | 一种元数据同步方法、数据端、交互系统及介质 | |
CN105959078B (zh) | 一种集群时间同步方法、集群及时间同步系统 | |
CN102215266A (zh) | 持久化服务的实现方法及持久化服务系统 | |
CN112333249A (zh) | 一种业务服务系统及方法 | |
CN114138520A (zh) | 分布式消息处理方法及系统 | |
CN114172792B (zh) | 一种保证服务高可用的序号生成方法的实现方法及装置 | |
CN116319732A (zh) | 一种基于RabbitMQ的消息队列集中配置管理系统及方法 | |
CN112615901B (zh) | 一种客户端发送用户请求的方法和存储系统 | |
CN105281940B (zh) | 一种基于netconf协议的hello报文交互的方法、设备和系统 | |
CN113722125B (zh) | 基于分布式订阅发布网络的数据处理方法及系统 | |
CN109831372B (zh) | 消息同步方法及即时通讯系统 | |
CN111858012A (zh) | 一种任务调度方法、装置、设备及介质 | |
CN114422335B (zh) | 通信方法、装置、服务器及存储介质 | |
CN113064950B (zh) | 一种数据同步方法、装置、设备及存储介质 | |
CN112637337B (zh) | 一种数据处理方法及装置 | |
US20090106781A1 (en) | Remote call handling methods and systems |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |