CN103916481A - 一种处理数据的方法和装置 - Google Patents
一种处理数据的方法和装置 Download PDFInfo
- Publication number
- CN103916481A CN103916481A CN201410154133.4A CN201410154133A CN103916481A CN 103916481 A CN103916481 A CN 103916481A CN 201410154133 A CN201410154133 A CN 201410154133A CN 103916481 A CN103916481 A CN 103916481A
- Authority
- CN
- China
- Prior art keywords
- node
- event
- variation
- confirmation
- module
- 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
Landscapes
- Computer And Data Communications (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明提供一种处理数据的方法和装置,有助于避免在分布式数据处理系统中采用zookeeper进行任务调度时出现的数据被不同的节点重复处理的现象。该方法中,当前节点向zookeeper进行注册并触发对系统中的所有其他节点的监听;当前节点在从注册完成时起,于预设时长内监听到全部其他节点对新增节点事件做出确认的事件的情况下,确定由自身来处理的数据块;当前节点在从注册完成时起,经预设时长后仍未监听到至少一个其他节点对新增节点事件做出确认的事件的情况下,判断zookeeper中是否保存该至少一个其他节点对新增节点事件做出确认的信息,若是,则确定由自身来处理的数据块,否则重新向zookeeper进行注册。
Description
技术领域
本发明涉及计算机技术领域,特别地涉及一种处理数据的方法和装置。
背景技术
企业大数据量的快速激增要求对业务数据分块,进而由分布式系统对各块进行高可用的并行处理。在分布式数据处理系统中,通常有一些通过网络彼此互联且在数量上可以弹性扩展的节点,每个节点都采用相同的工作方式,它们通过一定的协商机制,在协商完毕后结合一致性哈希算法,能够自发地确定由自身处理的数据块,然后对这些数据块进行处理。
对于分布式系统,需要一定的协调机制,使系统在节点变动(例如新增和/或删除一个或多个节点)的情况下系统仍具有较高的可靠性。zookeeper常被软件系统用于构建这种协调机制,提供的功能包括:配置维护、名字服务、分布式同步、组服务等。
在实现本发明的过程中,发明人发现采用zookeeper进行任务调度,需要避免数据被不同的节点重复处理的现象。
发明内容
有鉴于此,本发明提供一种处理数据的方法和装置,有助于避免在分布式数据处理系统中采用zookeeper进行任务调度时出现的数据被不同的节点重复处理的现象。
为实现上述目的,根据本发明的一个方面,提供了一种处理数据的方法。
本发明的处理数据的方法,应用于分布式数据处理系统中,该方法包括:当前节点向zookeeper服务器进行注册并触发对所述分布式数据处理系统中的所有其他节点的监听;当前节点在从所述注册完成时起,于预设时长内监听到全部所述其他节点对新增节点事件做出确认的事件的情况下,确定由自身来处理的数据块;当前节点在从所述注册完成时起,经预设时长后仍未监听到至少一个所述其他节点对所述新增节点事件做出确认的事件的情况下,判断zookeeper服务器中是否保存该至少一个所述其他节点对所述新增节点事件做出确认的信息,若是,则确定由自身来处理的数据块,否则重新向zookeeper服务器进行注册。
可选地,所述注册完成之后,在所述当前节点监听到一条节点变动事件的情况下,该方法还包括:所述当前节点确定变动节点,并且停止当前的数据处理,以及在所述zookeeper服务器中保存对所述节点变动事件做出的确认的信息;所述当前节点在从监听到所述节点变动事件时起,于预设时长内监听到所述系统的所有已有节点对所述节点变动事件做出确认的事件的情况下,确定由自身来处理的数据块。
可选地,所述注册完成之后,在所述当前节点监听到一条节点变动事件的情况下,该方法还包括:所述当前节点确定变动节点,并且停止当前的数据处理,以及在所述zookeeper服务器中保存对所述节点变动事件做出的确认的信息;所述当前节点在从监听到所述节点变动事件时起,经预设时长后仍未监听到所述系统的至少一个其他节点对所述节点变动事件做出确认的事件的情况下,判断zookeeper服务器中是否保存未监听到的其他节点对所述节点变动事件做出确认的信息,若是,则所述当前节点确定由自身来处理的数据块。
可选地,所述注册完成之后,在所述当前节点监听到一条节点变动事件的情况下,该方法还包括:所述当前节点确定变动节点,并且停止当前的数据处理,以及在所述zookeeper服务器中保存对所述节点变动做出的确认的信息;所述当前节点在从监听到所述节点变动事件时起,经预设时长后仍未监听到所述系统的至少一个其他节点对所述节点变动事件做出确认的事件的情况下,判断zookeeper服务器中是否保存该其他节点对所述节点变动事件做出确认的信息,若否,则保持停止当前的数据处理,并保持对该其他节点的监听。
可选地,所述当前节点确定变动节点的步骤包括:所述当前节点根据本地保存的所述系统的各节点注册信息和所述zookeeper服务器中保存的所述系统的各节点注册信息间的差异计算出变动节点。
可选地,所述当前节点确定变动节点的步骤之后,还包括:所述当前节点更新本地保存的所述系统的各节点注册信息。
根据本发明的另一方面,提供了一种处理数据的装置。
本发明的处理数据的装置,设置在分布式数据处理系统的节点中,该装置包括:注册模块,用于向zookeeper服务器注册所述装置所在节点;触发模块,用于触发对所述分布式数据处理系统中的所有其他节点的监听;接收模块,用于接收所述zookeeper服务器发送的事件;第一判断模块,用于判断在预设时长内所述接收模块是否收到全部所述其他节点对所述新增节点事件做出确认的事件;分块模块,用于在所述第一判断模块的判断结果为是的情况下,确定由所述装置所在节点来处理的数据块;所述注册模块还用于在所述第一判断模块的判断结果为否的情况下,再次向zookeeper服务器注册所述装置所在节点。
可选地,该装置还包括:节点确定模块,用于在所述接收模块接收到节点变动事件的情况下,确定变动节点;控制模块,用于在所述接收模块接收到节点变动事件的情况下,使所述装置所在节点停止当前的数据处理;记录模块,用于在所述接收模块接收到节点变动事件的情况下,在所述zookeeper服务器中保存对所述节点变动事件做出的确认的信息;第二判断模块,用于判断从所述接收模块接收到所述节点变动事件时起,所述接收模块于预设时长内是否收到所述系统的所有已有节点对所述节点变动事件做出确认的事件;所述分块模块还用于在所述第二判断模块的判断结果为是的情况下,确定由所述装置所在节点来处理的数据块。
可选地,该装置还包括第三判断模块,用于在所述第二判断模块的判断结果为否的情况下,判断zookeeper服务器中是否保存未监听到的其他节点对所述节点变动事件做出确认的信息;所述分块模块还用于在所述第三判断模块的判断结果为是的情况下,确定由所述装置所在节点来处理的数据块。
可选地,所述控制模块还用于在所述第三判断模块的判断结果为否的情况下,使所述装置所在节点保持停止当前的数据处理;所述触发模块还用于在所述第三判断模块的判断结果为否的情况下,保持对选定的一个或多个节点的监听,其中zookeeper服务器中未保存所述选定的一个或多个节点对所述节点变动事件做出确认的信息。
可选地,节点确定模块还用于根据本地保存的所述系统的各节点注册信息和所述zookeeper服务器中保存的所述系统的各节点注册信息间的差异计算出变动节点。
可选地,该装置还包括更新模块,用于更新所述装置所在节点的本地保存的所述系统的各节点注册信息。
根据本发明的技术方案,分布式数据处理系统的节点只有在等到所有节点都确认收到了节点变动事件后,才开始分配数据,有助于避免数据被重复处理,同时有助于数据的并行处理,也有助于数据处理节点的弹性扩展,以及避免系统的局部停滞运行。
附图说明
附图用于更好地理解本发明,不构成对本发明的不当限定。其中:
图1A、图1B、图1C是根据本发明实施例的处理数据的方法的一类流程的示意图;
图2是根据本发明实施例的分布式数据处理系统的结构的示意图;
图3A、图3B和图3C是根据本发明实施例的另一类流程的示意图;
图4是根据本发明实施例的处理数据的装置的一种结构的示意图。
具体实施方式
以下结合附图对本发明的示范性实施例做出说明,其中包括本发明实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本发明的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
对于利用zookeeper事件机制来实现节点协同的分布式数据任务调度系统,在一个节点例如节点S作为新增节点向zookeeper注册,此时在zookeeper保存的第一个根节点下添加节点S对应的临时znode,该临时znode的存在表示节点S已注册到zookeeper中;并且在zookeeper保存的第二个根节点下添加节点S对应的临时znode,该临时znode的内容是第一个根节点及其所有子节点的名称列表,即当前分布式系统中所有节点的“快照”,从而说明节点S已得知当前有哪些节点注册到zookeeper中。
按照zookeeper的协调机制,在第一个根节点下新增临时znode的情况下,zookeeper将向设置了监听(watch)的节点发送新增节点事件,该事件是“当前系统新增了节点”这样一种事件。仍以新增节点为节点S为例,系统中已有的节点例如节点A、B、C、D将接收到新增节点事件,此时节点A、B、C、D将更新自身在根节点2下对应的临时znode中保存的快照,例如节点A将快照所表示的内容由“节点A、B、C、D”修改为“节点A、B、C、D、S”。类似地,如果有节点从系统断开,则该节点在上述的第一根节点下对应的临时znode也将在一个短暂的延时之后被删除,此时zookeeper将向设置了监听(watch)的节点发送删除节点事件,该事件是“当前系统删除了节点”这样一种事件。此时系统中的其他节点在收到删除节点事件之后更新自身在上述的根节点2下对应的临时znode中保存的快照。可以把新增节点事件和删除节点事件统称为节点变动事件。可以看出上述的快照是节点对收到的节点变动事件做出的确认的信息。
zookeeper在根节点2下的临时znode中的内容发生变化的情况下,会向设置了监听的节点发送另一种事件,该事件是“节点对节点变动事件做出确认的事件”这样一种事件,以下的描述中简称为节点的确认事件。这使得各个节点知道其他节点已获知有节点变动事件。例如,节点S向zookeeper注册,此时节点B更新其在根节点2下对应的临时znode中的信息,zookeeper向监听节点B的节点A发送确认事件,于是节点A得知“节点B已经知道当前系统新增了节点S”。按照这种机制,其他各个节点都会得知自己以外的其他节点已经知道当前系统新增了节点S。类似地,例如节点C被删除,则各个节点会根据节点变动事件来更新快照,快照被更新又导致各节点收到多条确认事件,使各节点都得知自己以外的其他节点已经知道节点C已脱离当前系统。
本实施例中,当前节点在收到所有的其他节点对节点变动事件做出确认的事件后,才开始进行计算以确定哪些数据块是由自身来处理的。如果当前节点在预设时长内还有一个或多个其他节点的确认事件未收到,则当前节点主动查询这些节点在zookeeper的根节点2下的对应znode中的快照是否与根节点1下当前实际节点列表一致,如一致,说明这些节点已得知有节点变动,于是当前节点开始进行计算以确定哪些数据块需自身处理;如不一致,则当前节点再次进行注册以使zookeeper产生节点变动事件,进而使其他节点对该节点变动事件做出确认。
上述流程的具体的例子示于图1A、图1B和图1C中,图1A、图1B、图1C是根据本发明实施例的处理数据的方法的一类流程的示意图。图2是根据本发明实施例的分布式数据处理系统的结构的示意图。图2中示出了分布式数据处理系统中的已有节点A、B、C,和当前的一个新增节点S;以及zookeeper服务器中保存的根节点1、根节点2,根节点1、2下分别有各个节点对应的临时znode,为示意清晰,节点A在根节点1下对应的临时znode记为znode-A,在根节点2下对应的临时znode也记为znode-A,其他节点类似。以下结合图2,对图1A的流程做出说明。
步骤S111:节点S向zookeeper发起注册并触发对系统中所有其他节点的监听。此处通过对根节点1设置监听和对根节点2下各子节点设置监听来实现。此时zookeeper向系统中其他节点发送节点变动事件,这些节点收到该事件后修改自身对应的根节点2下的临时znode的内容,于是zookeeper向系统中当前的各个节点广播各个节点对该节点变动事件发出的确认事件。
步骤S112:节点S在注册完成时起,于预设时长内陆续监听到节点A、节点B、节点C的确认事件。只有在节点A、节点B、节点C的确认事件全部收到的情况下,才进入步骤S113。
步骤S113:节点S计算以确定由自身来处理的数据块。
步骤S114:节点S处理步骤S113中确定的数据块。
以下说明图1B的流程。
步骤S121:节点S向zookeeper发起注册并触发对系统中所有其他节点的监听。
步骤S122:节点S在注册完成时起,于预设时长内陆续监听到节点A、节点B的确认事件。
步骤S123:经过步骤S122中的预设时长后,节点S确认未收到节点C的确认事件。
步骤S124:节点S查看zookeeper中的znode-C,确认其中保存的快照所表示的内容为“节点A、B、C、S”。这说明节点C实际上是得知有新增节点S注册到系统中。本步骤中,节点S主动查看节点C是否得知节点S的注册,在确认节点C已得知的情况下立即进入步骤S125,避免了无谓的继续等待节点C的确认事件,从而避免了系统局部停滞运行,防止了数据块的处理遗漏。
步骤S125:节点S计算以确定由自身来处理的数据块。
步骤S126:节点S处理步骤S113中确定的数据块。
以下说明图1C的流程。
步骤S131:节点S向zookeeper发起注册并触发对系统中所有其他节点的监听。
步骤S132:节点S在注册完成时起,于预设时长内陆续监听到节点A、节点B的确认事件。
步骤S133:经过步骤S132中的预设时长后,节点S确认未收到节点C的确认事件。
步骤S134:节点S查看zookeeper中的znode-C,确认其中保存的快照所表示的内容为“节点A、B、C”。也就是说节点C并未得知有新增节点S注册到系统。在这种情况下,节点S进入步骤S135。
步骤S135:节点S重新向zookeeper发起注册并触发对系统中所有其他节点的监听。本步骤之后,根据系统的实际运行情况,节点S的操作可能是按步骤S112、步骤S122、或者步骤S132来进行。
不仅仅是新增的节点S要确认其他节点都得知节点S注册到系统中,才开始确定由自身处理的数据块;而且系统已有的节点也应如此,以图2所示系统为例,当节点S注册到系统中之后,节点A需等到节点B和节点C确认了节点B和节点C都已得知有节点S注册到系统,节点A才开始计算以确定由自身处理的数据块;类似地,节点B和节点C也如此。在有节点从系统中断开的情况下,也是需要各个节点都知道其他节点已得知有节点从系统中断开,才开始确定需自身处理的数据块。以下仍以图2所示的系统为例,结合图3A、图3B和图3C作详细说明,图3A、图3B和图3C是根据本发明实施例的另一类流程的示意图。以下先以节点S注册到系统中,节点A执行的流程为例,对图3A的流程加以说明,
步骤S311:节点A确定有节点S注册到系统中,并且停止当前的数据处理。节点A在监听到节点变动事件后,可以根据本节点保存的系统节点信息(当前保存的信息内容表示:系统中有节点A、节点B、节点C)和zookeeper中保存的节点注册信息(即根节点1下的临时znode:znode-A,znode-B,znode-C,znode-S)来确定目前有节点S注册到系统中。另外,如果是有节点从系统中断开,也可以用同样方式确定该断开的节点。
步骤S312:节点A修改zookeeper中根节点2下的znode-A的内容。具体是将原来的表示“节点A,B,C”的快照修改为表示“节点A,B,C,S”的快照。这就表示节点A已得知有节点S注册到系统中。此时zookeeper将向系统中各个节点广播节点A的确认事件。同样,因为节点B和节点C也能够得知有节点S注册到系统中,并且节点S也在根节点2下对应的临时znode-S中保存了快照从而产生节点S的确认事件,所以zookeeper同样会广播节点B、节点C和节点S的确认事件。
步骤S313:节点A在从监听到节点变动事件起,于预设时长内陆续监听到节点B、节点C、节点S的确认事件。只有都监听到节点B、节点C、节点S的确认事件的情况下,才进入步骤S314。
步骤S314:节点A计算以确定由自身来处理的数据块。
步骤S315:节点A处理步骤S314中确定的数据块。
以下对图3B的流程加以说明。
步骤S321:节点A确定有节点S注册到系统中,并且停止当前的数据处理。
步骤S322:节点A修改zookeeper中根节点2下的znode-A的内容。
步骤S323:节点A在从监听到节点变动事件起,于预设时长内陆续监听到节点B、节点S的确认事件。
步骤S324:经过步骤S313中的预设时长后,节点A确认未收到节点C的确认事件。
步骤S325:节点A查看zookeeper中的znode-C,确认其中保存的快照所表示的内容为“节点A、B、C、S”。这说明节点C实际上是得知有新增节点S注册到系统中。本步骤中,节点A主动查看节点C是否得知节点S的注册,在确认节点C已得知的情况下立即进入步骤S316,避免了无谓的继续等待节点C的确认事件,从而避免了系统局部停滞运行。
步骤S326:节点A计算以确定由自身来处理的数据块。
步骤S327:节点A处理步骤S316中确定的数据块。
以上的流程是以节点S注册到系统中的情况为例,对于有节点从系统中断开的处理方式相类似,不同之处在于节点A需等待系统中当前的所有节点(即不包括断开的节点)的确认事件。以下对图3C的流程加以说明。
步骤S331:节点A确定有节点S注册到系统中,并且停止当前的数据处理。
步骤S332:节点A修改zookeeper中根节点2下的znode-A的内容。
步骤S333:节点A在从监听到节点变动事件起,于预设时长内陆续监听到节点B、节点S的确认事件。
步骤S334:经过步骤S313中的预设时长后,节点A确认未收到节点C的确认事件。
步骤S325:节点A查看zookeeper中的znode-C,确认其中保存的快照所表示的内容为“节点A、B、C”。这说明节点C并未得知有新增节点S注册到系统中。
步骤S326:节点A触发对其他节点的监听。因为根据zookeeper发送事件是一次性的,所以需再次触发对其他节点的监听。至本步骤,节点A仍未开始处理数据块,并且处于等待状态。这是因为节点C并未得知有新增节点S注册到系统中,其原因可能是节点C未收到节点S注册到系统中产生的节点变动事件,也可能是节点C自身故障从而从系统断开。对于第一种可能,新增的节点S会重新进行注册,即形成图1C的流程所示的情况;对于第二种可能,则在znode-C在会话过期被删除时产生节点变动事件,从而转入类似于图3B的流程加以处理。所以在步骤S326之后,节点A并不会永久地等待下去,而是会收到新的事件。
以下对本实施例的处理数据的装置做出说明。本实施例的处理数据的装置主要实现子系统启动与注册功能、事件监听与处理功能、子系统状态定时检测功能、以及数据划分与处理功能。图4是根据本发明实施例的处理数据的装置的一种结构的示意图。该装置设置在分布式数据处理系统的节点中,如图4所示,处理数据的装置40主要包括注册模块41、触发模块42、接收模块43、第一判断模块44、以及分块模块45。
注册模块41用于向zookeeper服务器注册装置40所在节点;触发模块42用于触发对分布式数据处理系统中的所有其他节点的监听;接收模块43用于接收zookeeper服务器发送的事件;第一判断模块44用于判断在预设时长内接收模块43是否收到全部其他节点对新增节点事件做出确认的事件;分块模块45用于在第一判断模块44的判断结果为是的情况下,确定由装置40所在节点来处理的数据块;注册模块41还用于在第一判断模块44的判断结果为否的情况下,再次向zookeeper服务器注册装置40所在节点。
处理数据的装置40还可以包括节点确定模块、控制模块、记录模块、以及第二判断模块(图中未示出)。
节点确定模块用于在接收模块43接收到节点变动事件的情况下,确定变动节点;控制模块用于在接收模块43接收到节点变动事件的情况下,使装置40所在节点停止当前的数据处理;记录模块用于在接收模块43接收到节点变动事件的情况下,在zookeeper服务器中保存对节点变动事件做出的确认的信息;第二判断模块,用于判断从接收模块43接收到节点变动事件时起,接收模块43于预设时长内是否收到系统的所有已有节点对节点变动事件做出确认的事件。这样,分块模块45还用于在第二判断模块的判断结果为是的情况下,确定由装置40所在节点来处理的数据块。
处理数据的装置40还可包括第三判断模块(图中未示出),用于在第二判断模块的判断结果为否的情况下,判断zookeeper服务器中是否保存未监听到的其他节点对节点变动事件做出确认的信息;这样,分块模块45还用于在第三判断模块的判断结果为是的情况下,确定由装置40所在节点来处理的数据块。
控制模块还可用于在第三判断模块的判断结果为否的情况下,使装置40所在节点保持停止当前的数据处理;这样,触发模块42还用于在第三判断模块的判断结果为否的情况下,保持对选定的一个或多个节点的监听,其中zookeeper服务器中未保存该选定的一个或多个节点对节点变动事件做出确认的信息。
节点确定模块还可用于根据本地保存的系统中的各节点注册信息和zookeeper服务器中保存的系统中的各节点注册信息间的差异计算出变动节点。另外装置40还可以包括更新模块(图中未示出),用于更新装置40所在节点的本地保存的系统的各节点注册信息。
根据本实施例的技术方案,有助于避免数据被重复处理。发明人发现根据现有的zookeeper协调机制,在如下两种情况下会出现数据被重复处理。
情况一:从节点M非主动与zookeeper断开起,到节点M对应的临时znode被删除期间(即zookeeper会话的过期期间,根据配置文件的数值而定,例如配置为8S至10S),若有新节点注册到系统中,或者有节点因会话过期而被删除对应的临时znode,则会出现节点M所处理的数据队列被重复处理的现象。这是因为有新节点注册到系统中时,各个节点都会接收到节点变动事件,此时各节点重新计算需自身处理的数据块,即待处理数据被重新分配,并且该待处理数据包含了节点M当前在处理的数据,但在上述期间内,节点M因无法接收到节点变动事件,于是不会重新确定需自身处理的数据,这样节点M仍按自身原有的队列进行处理,但该队列的数据亦被分配到其他节点,因此出现节点M和其他节点重复处理该队列的数据的现象。
情况二:在有节点N注册到系统中,此时zookeeper将广播节点变动事件,如果节点M未接收到该事件,则节点M所处理的数据队列将被重复处理。这是因为节点M由于未收到节点变动事件从而不会重新确定需自身处理的数据,但收到该节点变动事件的节点会重新确定需自身处理的数据,使M所处理的数据队列也被重新分配。
因此采用本实施例的技术方案,各个节点只有在得知其他节点都已知道有节点变动的情况下,才开始确定需自身处理的数据块。以上述两种情况为例,在这两种情况下节点M都无法给出确认事件,根据本实施例的技术方案,其他节点会等待节点M给出确认事件。对于情况一,当节点M因会话过期被删除临时znode后,节点M将停止处理数据,并且此时会产生关于M从系统中断开的节点变动事件,其他节点根据该事件重新分配数据;对于情况二,节点N会等待节点M的确认事件,在等待超时的情况下会主动查看根节点2下的节点M对应的临时znode中的快照或者重新注册,直到收到节点M的确认事件。
对于系统中可能出现的其他情况,按照本实施例的技术方案,同样有助于避免数据被重复处理,同时有助于数据的并行处理,也有助于数据处理节点的弹性扩展,以及避免系统的局部停滞运行。
以上结合具体实施例描述了本发明的基本原理,但是,需要指出的是,对本领域的普通技术人员而言,能够理解本发明的方法和设备的全部或者任何步骤或者部件,可以在任何计算装置(包括处理器、存储介质等)或者计算装置的网络中,以硬件、固件、软件或者它们的组合加以实现,这是本领域普通技术人员在阅读了本发明的说明的情况下运用他们的基本编程技能就能实现的。
因此,本发明的目的还可以通过在任何计算装置上运行一个程序或者一组程序来实现。所述计算装置可以是公知的通用装置。因此,本发明的目的也可以仅仅通过提供包含实现所述方法或者装置的程序代码的程序产品来实现。也就是说,这样的程序产品也构成本发明,并且存储有这样的程序产品的存储介质也构成本发明。显然,所述存储介质可以是任何公知的存储介质或者将来开发出的任何存储介质。
还需要指出的是,在本发明的装置和方法中,显然,各部件或各步骤是可以分解和/或重新组合的。这些分解和/或重新组合应视为本发明的等效方案。并且,执行上述系列处理的步骤可以自然地按照说明的顺序按时间顺序执行,但是并不需要一定按照时间顺序执行。某些步骤可以并行或彼此独立地执行。
上述具体实施方式,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,取决于设计要求和其他因素,可以发生各种各样的修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。
Claims (12)
1.一种处理数据的方法,应用于分布式数据处理系统中,其特征在于,该方法包括:
当前节点向zookeeper服务器进行注册并触发对所述分布式数据处理系统中的所有其他节点的监听;
当前节点在从所述注册完成时起,于预设时长内监听到全部所述其他节点对新增节点事件做出确认的事件的情况下,确定由自身来处理的数据块;
当前节点在从所述注册完成时起,经预设时长后仍未监听到至少一个所述其他节点对所述新增节点事件做出确认的事件的情况下,判断zookeeper服务器中是否保存该至少一个所述其他节点对所述新增节点事件做出确认的信息,若是,则确定由自身来处理的数据块,否则重新向zookeeper服务器进行注册。
2.根据权利要求1所述的方法,其特征在于,所述注册完成之后,在所述当前节点监听到一条节点变动事件的情况下,该方法还包括:
所述当前节点确定变动节点,并且停止当前的数据处理,以及在所述zookeeper服务器中保存对所述节点变动事件做出的确认的信息;
所述当前节点在从监听到所述节点变动事件时起,于预设时长内监听到所述系统的所有已有节点对所述节点变动事件做出确认的事件的情况下,确定由自身来处理的数据块。
3.根据权利要求1所述的方法,其特征在于,所述注册完成之后,在所述当前节点监听到一条节点变动事件的情况下,该方法还包括:
所述当前节点确定变动节点,并且停止当前的数据处理,以及在所述zookeeper服务器中保存对所述节点变动事件做出的确认的信息;
所述当前节点在从监听到所述节点变动事件时起,经预设时长后仍未监听到所述系统的至少一个其他节点对所述节点变动事件做出确认的事件的情况下,判断zookeeper服务器中是否保存未监听到的其他节点对所述节点变动事件做出确认的信息,若是,则所述当前节点确定由自身来处理的数据块。
4.根据权利要求1所述的方法,其特征在于,所述注册完成之后,在所述当前节点监听到一条节点变动事件的情况下,该方法还包括:
所述当前节点确定变动节点,并且停止当前的数据处理,以及在所述zookeeper服务器中保存对所述节点变动做出的确认的信息;
所述当前节点在从监听到所述节点变动事件时起,经预设时长后仍未监听到所述系统的至少一个其他节点对所述节点变动事件做出确认的事件的情况下,判断zookeeper服务器中是否保存该其他节点对所述节点变动事件做出确认的信息,若否,则保持停止当前的数据处理,并保持对该其他节点的监听。
5.根据权利要求2,3或4所述的方法,其特征在于,所述当前节点确定变动节点的步骤包括:所述当前节点根据本地保存的所述系统的各节点注册信息和所述zookeeper服务器中保存的所述系统的各节点注册信息间的差异计算出变动节点。
6.根据权利要求2,3或4所述的方法,其特征在于,所述当前节点确定变动节点的步骤之后,还包括:所述当前节点更新本地保存的所述系统的各节点注册信息。
7.一种处理数据的装置,设置在分布式数据处理系统的节点中,其特征在于,该装置包括:
注册模块,用于向zookeeper服务器注册所述装置所在节点;
触发模块,用于触发对所述分布式数据处理系统中的所有其他节点的监听;
接收模块,用于接收所述zookeeper服务器发送的事件;
第一判断模块,用于判断在预设时长内所述接收模块是否收到全部所述其他节点对所述新增节点事件做出确认的事件;
分块模块,用于在所述第一判断模块的判断结果为是的情况下,确定由所述装置所在节点来处理的数据块;
所述注册模块还用于在所述第一判断模块的判断结果为否的情况下,再次向zookeeper服务器注册所述装置所在节点。
8.根据权利要求7所述的装置,其特征在于,还包括:
节点确定模块,用于在所述接收模块接收到节点变动事件的情况下,确定变动节点;
控制模块,用于在所述接收模块接收到节点变动事件的情况下,使所述装置所在节点停止当前的数据处理;
记录模块,用于在所述接收模块接收到节点变动事件的情况下,在所述zookeeper服务器中保存对所述节点变动事件做出的确认的信息;
第二判断模块,用于判断从所述接收模块接收到所述节点变动事件时起,所述接收模块于预设时长内是否收到所述系统的所有已有节点对所述节点变动事件做出确认的事件;
所述分块模块还用于在所述第二判断模块的判断结果为是的情况下,确定由所述装置所在节点来处理的数据块。
9.根据权利要求8所述的装置,其特征在于,
还包括第三判断模块,用于在所述第二判断模块的判断结果为否的情况下,判断zookeeper服务器中是否保存未监听到的其他节点对所述节点变动事件做出确认的信息;
所述分块模块还用于在所述第三判断模块的判断结果为是的情况下,确定由所述装置所在节点来处理的数据块。
10.根据权利要求9所述的装置,其特征在于,
所述控制模块还用于在所述第三判断模块的判断结果为否的情况下,使所述装置所在节点保持停止当前的数据处理;
所述触发模块还用于在所述第三判断模块的判断结果为否的情况下,保持对选定的一个或多个节点的监听,其中zookeeper服务器中未保存所述选定的一个或多个节点对所述节点变动事件做出确认的信息。
11.根据权利要求8,9或10所述的装置,其特征在于,节点确定模块还用于根据本地保存的所述系统的各节点注册信息和所述zookeeper服务器中保存的所述系统的各节点注册信息间的差异计算出变动节点。
12.根据权利要求8,9或10所述的装置,其特征在于,还包括更新模块,用于更新所述装置所在节点的本地保存的所述系统的各节点注册信息。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410154133.4A CN103916481B (zh) | 2014-04-17 | 2014-04-17 | 一种处理数据的方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410154133.4A CN103916481B (zh) | 2014-04-17 | 2014-04-17 | 一种处理数据的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103916481A true CN103916481A (zh) | 2014-07-09 |
CN103916481B CN103916481B (zh) | 2017-05-10 |
Family
ID=51041879
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410154133.4A Active CN103916481B (zh) | 2014-04-17 | 2014-04-17 | 一种处理数据的方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103916481B (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104536814A (zh) * | 2015-01-16 | 2015-04-22 | 北京京东尚科信息技术有限公司 | 一种处理工作流的方法和系统 |
CN105187499A (zh) * | 2015-08-07 | 2015-12-23 | 北京思特奇信息技术股份有限公司 | 一种基于zookeeper双平面数据架构的分布式调度方法及系统 |
CN107168813A (zh) * | 2017-04-28 | 2017-09-15 | 平安科技(深圳)有限公司 | 任务处理方法及系统 |
CN107295031A (zh) * | 2016-03-30 | 2017-10-24 | 阿里巴巴集团控股有限公司 | 一种数据同步方法及装置 |
CN107423121A (zh) * | 2017-05-02 | 2017-12-01 | 千寻位置网络有限公司 | Gnss精密后处理任务的调度系统及方法 |
CN109325746A (zh) * | 2018-08-29 | 2019-02-12 | 华中科技大学 | 一种基于存储的区块链激励方法、区块链网络及存储网络 |
CN111522649A (zh) * | 2019-02-01 | 2020-08-11 | 北京京东尚科信息技术有限公司 | 一种分布式任务分配方法、装置和系统 |
CN113051103A (zh) * | 2019-12-27 | 2021-06-29 | 中国移动通信集团湖南有限公司 | 一种数据的处理方法、装置及电子设备 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102932210A (zh) * | 2012-11-23 | 2013-02-13 | 北京搜狐新媒体信息技术有限公司 | 一种PaaS云平台的节点监控方法和系统 |
CN103577255A (zh) * | 2013-10-29 | 2014-02-12 | 汉柏科技有限公司 | 一种基于Zookeeper的多服务间异步进度控制的方法及系统 |
CN103634375A (zh) * | 2013-11-07 | 2014-03-12 | 华为技术有限公司 | 扩容集群节点的方法、装置及设备 |
-
2014
- 2014-04-17 CN CN201410154133.4A patent/CN103916481B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102932210A (zh) * | 2012-11-23 | 2013-02-13 | 北京搜狐新媒体信息技术有限公司 | 一种PaaS云平台的节点监控方法和系统 |
CN103577255A (zh) * | 2013-10-29 | 2014-02-12 | 汉柏科技有限公司 | 一种基于Zookeeper的多服务间异步进度控制的方法及系统 |
CN103634375A (zh) * | 2013-11-07 | 2014-03-12 | 华为技术有限公司 | 扩容集群节点的方法、装置及设备 |
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104536814B (zh) * | 2015-01-16 | 2019-01-22 | 北京京东尚科信息技术有限公司 | 一种处理工作流的方法和系统 |
CN104536814A (zh) * | 2015-01-16 | 2015-04-22 | 北京京东尚科信息技术有限公司 | 一种处理工作流的方法和系统 |
CN105187499B (zh) * | 2015-08-07 | 2018-07-17 | 北京思特奇信息技术股份有限公司 | 一种基于zookeeper双平面数据架构的分布式调度方法及系统 |
CN105187499A (zh) * | 2015-08-07 | 2015-12-23 | 北京思特奇信息技术股份有限公司 | 一种基于zookeeper双平面数据架构的分布式调度方法及系统 |
CN107295031A (zh) * | 2016-03-30 | 2017-10-24 | 阿里巴巴集团控股有限公司 | 一种数据同步方法及装置 |
WO2018196154A1 (zh) * | 2017-04-28 | 2018-11-01 | 平安科技(深圳)有限公司 | 任务处理方法、系统、终端及计算机可读存储介质 |
CN107168813A (zh) * | 2017-04-28 | 2017-09-15 | 平安科技(深圳)有限公司 | 任务处理方法及系统 |
CN107423121A (zh) * | 2017-05-02 | 2017-12-01 | 千寻位置网络有限公司 | Gnss精密后处理任务的调度系统及方法 |
CN107423121B (zh) * | 2017-05-02 | 2020-12-01 | 千寻位置网络有限公司 | Gnss精密后处理任务的调度系统及方法 |
CN109325746A (zh) * | 2018-08-29 | 2019-02-12 | 华中科技大学 | 一种基于存储的区块链激励方法、区块链网络及存储网络 |
CN111522649A (zh) * | 2019-02-01 | 2020-08-11 | 北京京东尚科信息技术有限公司 | 一种分布式任务分配方法、装置和系统 |
CN111522649B (zh) * | 2019-02-01 | 2022-04-12 | 北京京东尚科信息技术有限公司 | 一种分布式任务分配方法、装置和系统 |
CN113051103A (zh) * | 2019-12-27 | 2021-06-29 | 中国移动通信集团湖南有限公司 | 一种数据的处理方法、装置及电子设备 |
CN113051103B (zh) * | 2019-12-27 | 2023-09-05 | 中国移动通信集团湖南有限公司 | 一种数据的处理方法、装置及电子设备 |
Also Published As
Publication number | Publication date |
---|---|
CN103916481B (zh) | 2017-05-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103916481A (zh) | 一种处理数据的方法和装置 | |
CN107295080B (zh) | 应用于分布式服务器集群的数据存储方法和服务器 | |
US10103940B2 (en) | Local network and method of updating a device in a local network | |
CA2896865C (en) | Method and system for using a recursive event listener on a node in hierarchical data structure | |
EP3840296A1 (en) | Data processing method, device and computing node | |
US8892712B2 (en) | Upgrading enterprise managers | |
CN111371898B (zh) | 一种消息监听方法、装置、设备及存储介质 | |
GB2505229B (en) | Upgrading nodes | |
CN112346926A (zh) | 资源状态监控方法、装置及电子设备 | |
WO2018157105A1 (en) | Automatic recovery in remote management services | |
WO2022062661A1 (zh) | 操作通知方法和装置、存储介质和电子装置 | |
US20220066436A1 (en) | Industrial field device replacement system | |
CN114531373A (zh) | 节点状态检测方法、节点状态检测装置、设备及介质 | |
CN101083554A (zh) | 协助对终端设备管理的方法、终端设备及设备管理系统 | |
CN103533071A (zh) | 终端软件的更新方法、装置及系统 | |
US20220318079A1 (en) | Systems and methods for processsing excess event messages using a mobile application | |
WO2016101474A1 (zh) | 配置数据的监控方法、装置及其系统 | |
CN114679472A (zh) | 通信系统、方法、装置、存储介质及电子设备 | |
US10291490B1 (en) | System and method for collecting data from low-availability devices | |
CN110198325B (zh) | 通信方法、装置和系统、网络服务器和存储介质 | |
US10419368B1 (en) | Dynamic scaling of computing message architecture | |
US8977682B2 (en) | Rebuild system for a storage network | |
US11563823B2 (en) | Systems and methods for device connectivity management | |
CN111200508B (zh) | 一种消息发送方法及网关 | |
CN108259631B (zh) | 一种基于名称服务的数据处理方法、系统以及相关设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right | ||
TR01 | Transfer of patent right |
Effective date of registration: 20191203 Address after: 100176 room 222, 2f, building C, No. 18, Kechuang 11th Street, Beijing Economic and Technological Development Zone, Daxing District, Beijing Patentee after: Beijing Jingdong three hundred and sixty degree e-commerce Co., Ltd. Address before: 11 East Building No. 65 West Park District 100080 Beijing City Shan creative Haidian District xingshikou Road West of the 1-4 layer 1-4 layer Patentee before: Beijing Jingdong Shangke Information Technology Co., Ltd. |