一种单服务运行方法及装置转让专利

申请号 : CN201710208294.0

文献号 : CN107086940A

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 武绍龙李雄锋

申请人 : 北京奇艺世纪科技有限公司

摘要 :

本发明实施例公开了一种单服务运行方法及装置,应用于单服务节点。方法包括:实时监控zookeeper中是否存在预设path路径;如果否,向zookeeper注册path路径;当监控到zookeeper中存在path路径且path路径不包含所述单服务节点的标识信息时,取消path路径注册;当监控到zookeeper中存在path路径且path路径包含所述单服务节点的标识信息时,运行单服务节点的单服务。应用本发明实施例,任何时候仅有一个单服务节点的单服务运行,保证了单服务的唯一性,避免了数据冲突。并且可以启用多个单服务节点,只要有一个单服务节点的单服务正常运行,单服务即可用,避免了阻塞后续任务进行。

权利要求 :

1.一种单服务运行方法,其特征在于,应用于单服务节点,所述方法包括:实时监控分布式应用程序协调服务zookeeper中是否存在预设用于标识单服务节点注册到所述zookeeper的path路径;

如果不存在,向所述zookeeper注册包含所述单服务节点的标识信息的所述path路径;

在监控到所述zookeeper中存在所述path路径、且所述path路径包含的单服务节点的标识信息不为所述单服务节点的标识信息的情况下,取消向所述zookeeper注册所述path路径;

在监控到所述zookeeper中存在所述path路径、且所述path路径包含有所述单服务节点的标识信息的情况下,运行所述单服务节点的单服务。

2.根据权利要求1所述的方法,其特征在于,在所述运行所述单服务节点的单服务之后,所述方法还包括:检测与所述zookeeper的连接状态;

当检测到与所述zookeeper的连接状态为断开状态时,停止运行所述单服务节点的单服务。

3.根据权利要求2所述的方法,其特征在于,所述方法还包括:当检测到与所述zookeeper的连接状态为正常状态时,检测所述单服务节点的单服务是否正在运行;

如果否,重新运行所述单服务节点的单服务;

再次检测所述单服务节点的单服务是否正在运行;

如果否,删除所述zookeeper中的所述path路径。

4.一种单服务运行方法,其特征在于,应用于单服务节点,所述方法包括:实时监控分布式应用程序协调服务zookeeper中预设path路径下是否注册有单服务节点;

如果没有,将所述单服务节点作为临时节点,注册到所述预设path路径下;

在监控到所述zookeeper中预设path路径下注册的单服务节点不为所述单服务节点的情况下,取消将所述单服务节点作为临时节点,注册到所述预设path路径下;

在监控到所述zookeeper中预设path路径下注册的单服务节点为所述单服务节点的情况下,运行所述单服务节点的单服务。

5.根据权利要求4所述的方法,其特征在于,在所述运行所述单服务节点的单服务之后,所述方法还包括:检测与所述zookeeper的连接状态;

当检测到与所述zookeeper的连接状态为断开状态时,停止运行所述单服务节点的单服务。

6.根据权利要求5所述的方法,其特征在于,所述方法还包括:当检测到与所述zookeeper的连接状态为正常状态时,检测所述单服务节点的单服务是否正在运行;

如果否,重新运行所述单服务节点的单服务;

再次检测所述单服务节点的单服务是否正在运行;

如果否,删除所述path路径下的所述单服务节点。

7.一种单服务运行装置,其特征在于,应用于单服务节点,所述装置包括:第一监控模块、第一注册模块、第一取消模块和第一运行模块,其中,所述第一监控模块,用于实时监控分布式应用程序协调服务zookeeper中是否存在预设用于标识单服务节点注册到所述zookeeper的path路径;

所述第一注册模块,用于在所述第一监控模块监控到所述zookeeper中不存在所述path路径的情况下,向所述zookeeper注册包含所述单服务节点的标识信息的所述path路径;

所述第一取消模块,用于在监控到所述zookeeper中存在所述path路径、且所述path路径包含的单服务节点的标识信息不为所述单服务节点的标识信息的情况下,取消向所述zookeeper注册所述path路径;

所述第一运行模块,用于在监控到所述zookeeper中存在所述path路径、且所述path路径包含有所述单服务节点的标识信息的情况下,运行所述单服务节点的单服务。

8.根据权利要求7所述的装置,其特征在于,所述装置还包括:第一检测模块和第一停止模块,其中,所述第一检测模块,用于检测与所述zookeeper的连接状态;

所述第一停止模块,用于当检测到与所述zookeeper的连接状态为断开状态时,停止运行所述单服务节点的单服务。

9.根据权利要求8所述的装置,其特征在于,所述装置还包括:第二检测模块、第二运行模块、第三检测模块和第一删除模块,其中,所述第二检测模块,用于当检测到与所述zookeeper的连接状态为正常状态时,检测所述单服务节点的单服务是否正在运行;

所述第二运行模块,用于在所述第二检测模块检测结果为否的情况下,重新运行所述单服务节点的单服务;

所述第三检测模块,用于再次检测所述单服务节点的单服务是否正在运行;

所述第一删除模块,用于在所述第三检测模块检测结果为否的情况下,删除所述zookeeper中的所述path路径。

10.一种单服务运行装置,其特征在于,应用于单服务节点,所述装置包括:第二监控模块、第二注册模块、第二取消模块和第三运行模块,其中,所述第二监控模块,用于实时监控分布式应用程序协调服务zookeeper中预设path路径下是否注册有单服务节点;

所述第二注册模块,用于在所述第二监控模块监控到所述path路径下没有注册有单服务节点的情况下,将所述单服务节点作为临时节点,注册到所述预设path路径下;

所述第二取消模块,用于在监控到所述zookeeper中预设path路径下注册的单服务节点不为所述单服务节点的情况下,取消将所述单服务节点作为临时节点,注册到所述预设path路径下;

所述第三运行模块,用于在监控到所述zookeeper中预设path路径下注册的单服务节点为所述单服务节点的情况下,运行所述单服务节点的单服务。

11.根据权利要求10所述的装置,其特征在于,所述装置还包括:第四检测模块和第二停止模块,其中,所述第四检测模块,用于检测与所述zookeeper的连接状态;

所述第二停止模块,用于当检测到与所述zookeeper的连接状态为断开状态时,停止运行所述单服务节点的单服务。

12.根据权利要求11所述的装置,其特征在于,所述装置还包括:第五检测模块、第四运行模块、第六检测模块和第二删除模块,其中,所述第五检测模块,用于当检测到与所述zookeeper的连接状态为正常状态时,检测所述单服务节点的单服务是否正在运行;

所述第四运行模块,用于在所述第五检测模块检测结果为否的情况下,重新运行所述单服务节点的单服务;

所述第六检测模块,用于再次检测所述单服务节点的单服务是否正在运行;

所述第二删除模块,用于在所述第六检测模块检测结果为否的情况下,,删除所述path路径下的所述单服务节点。

说明书 :

一种单服务运行方法及装置

技术领域

[0001] 本发明涉及分布式技术领域,特别涉及一种单服务运行方法及装置。

背景技术

[0002] 单服务是指在任何时刻只能运行且仅运行一个实例的服务。
[0003] 目前,为了保证单服务的唯一性,主要采用的方法是,以主备方式运行单服务,主单服务和备单服务之间通过心跳信号来判断两者之间的通信链路是否断开。当主单服务和备单服务均判断通信链路未断开时,仅有主单服务运行。当主单服务和备单服务均判断通信链路断开时,主单服务停止运行,备单服务开始运行。
[0004] 但在实际应用中,通常会出现主单服务判断通信链路未断开,但备单服务判断通信链路断开,此时主单服务未停止运行,备单服务开始运行,这就造成同时有两个单服务运行,单服务不唯一,运行数据存在冲突;还会出现主单服务判断通信链路断开,但备单服务判断通信链路未断开,此时主单服务停止运行,备单服务也未开始运行,这就造成没有单服务运行,阻塞后续任务进行。

发明内容

[0005] 本发明实施例的目的在于提供一种单服务运行方法及装置,以保证单服务的唯一性,避免数据冲突以及阻塞后续任务进行。
[0006] 为达到上述目的,本发明实施例公开了一种单服务运行方法,应用于单服务节点,所述方法包括:
[0007] 实时监控分布式应用程序协调服务zookeeper中是否存在预设用于标识单服务节点注册到所述zookeeper的path路径;
[0008] 如果不存在,向所述zookeeper注册包含所述单服务节点的标识信息的所述path路径;
[0009] 在监控到所述zookeeper中存在所述path路径、且所述path路径包含的单服务节点的标识信息不为所述单服务节点的标识信息的情况下,取消向所述zookeeper注册所述path路径;
[0010] 在监控到所述zookeeper中存在所述path路径、且所述path路径包含有所述单服务节点的标识信息的情况下,运行所述单服务节点的单服务。
[0011] 可选的,在所述运行所述单服务节点的单服务之后,所述方法还包括:
[0012] 检测与所述zookeeper的连接状态;
[0013] 当检测到与所述zookeeper的连接状态为断开状态时,停止运行所述单服务节点的单服务。
[0014] 可选的,所述方法还包括:
[0015] 当检测到与所述zookeeper的连接状态为正常状态时,检测所述单服务节点的单服务是否正在运行;
[0016] 如果否,重新运行所述单服务节点的单服务;
[0017] 再次检测所述单服务节点的单服务是否正在运行;
[0018] 如果否,删除所述zookeeper中的所述path路径。
[0019] 为达到上述目的,本发明实施例公开了一种单服务运行方法,应用于单服务节点,所述方法包括:
[0020] 实时监控分布式应用程序协调服务zookeeper中预设path路径下是否注册有单服务节点;
[0021] 如果没有,将所述单服务节点作为临时节点,注册到所述预设path路径下;
[0022] 在监控到所述zookeeper中预设path路径下注册的单服务节点不为所述单服务节点的情况下,取消将所述单服务节点作为临时节点,注册到所述预设path路径下;
[0023] 在监控到所述zookeeper中预设path路径下注册的单服务节点为所述单服务节点的情况下,运行所述单服务节点的单服务。
[0024] 可选的,在所述运行所述单服务节点的单服务之后,所述方法还包括:
[0025] 检测与所述zookeeper的连接状态;
[0026] 当检测到与所述zookeeper的连接状态为断开状态时,停止运行所述单服务节点的单服务。
[0027] 可选的,所述方法还包括:
[0028] 当检测到与所述zookeeper的连接状态为正常状态时,检测所述单服务节点的单服务是否正在运行;
[0029] 如果否,重新运行所述单服务节点的单服务;
[0030] 再次检测所述单服务节点的单服务是否正在运行;
[0031] 如果否,删除所述path路径下的所述单服务节点。
[0032] 为达到上述目的,本发明实施例公开了一种单服务运行装置,应用于单服务节点,所述装置包括:第一监控模块、第一注册模块、第一取消模块和第一运行模块,其中,[0033] 所述第一监控模块,用于实时监控分布式应用程序协调服务zookeeper中是否存在预设用于标识单服务节点注册到所述zookeeper的path路径;
[0034] 所述第一注册模块,用于在所述第一监控模块监控到所述zookeeper中不存在所述path路径的情况下,向所述zookeeper注册包含所述单服务节点的标识信息的所述path路径;
[0035] 所述第一取消模块,用于在监控到所述zookeeper中存在所述path路径、且所述path路径包含的单服务节点的标识信息不为所述单服务节点的标识信息的情况下,取消向所述zookeeper注册所述path路径;
[0036] 所述第一运行模块,用于在监控到所述zookeeper中存在所述path路径、且所述path路径包含有所述单服务节点的标识信息的情况下,运行所述单服务节点的单服务。
[0037] 可选的,所述装置还包括:第一检测模块和第一停止模块,其中,[0038] 所述第一检测模块,用于检测与所述zookeeper的连接状态;
[0039] 所述第一停止模块,用于当检测到与所述zookeeper的连接状态为断开状态时,停止运行所述单服务节点的单服务。
[0040] 可选的,所述装置还包括:第二检测模块、第二运行模块、第三检测模块和第一删除模块,其中,
[0041] 所述第二检测模块,用于当检测到与所述zookeeper的连接状态为正常状态时,检测所述单服务节点的单服务是否正在运行;
[0042] 所述第二运行模块,用于在所述第二检测模块检测结果为否的情况下,重新运行所述单服务节点的单服务;
[0043] 所述第三检测模块,用于再次检测所述单服务节点的单服务是否正在运行;
[0044] 所述第一删除模块,用于在所述第三检测模块检测结果为否的情况下,删除所述zookeeper中的所述path路径。
[0045] 为达到上述目的,本发明实施例公开了一种单服务运行装置,应用于单服务节点,所述装置包括:第二监控模块、第二注册模块、第二取消模块和第三运行模块,其中,[0046] 所述第二监控模块,用于实时监控分布式应用程序协调服务zookeeper中预设path路径下是否注册有单服务节点;
[0047] 所述第二注册模块,用于在所述第二监控模块监控到所述path路径下没有注册有单服务节点的情况下,将所述单服务节点作为临时节点,注册到所述预设path路径下;
[0048] 所述第二取消模块,用于在监控到所述zookeeper中预设path路径下注册的单服务节点不为所述单服务节点的情况下,取消将所述单服务节点作为临时节点,注册到所述预设path路径下;
[0049] 所述第三运行模块,用于在监控到所述zookeeper中预设path路径下注册的单服务节点为所述单服务节点的情况下,运行所述单服务节点的单服务。
[0050] 可选的,所述装置还包括:第四检测模块和第二停止模块,其中,[0051] 所述第四检测模块,用于检测与所述zookeeper的连接状态;
[0052] 所述第二停止模块,用于当检测到与所述zookeeper的连接状态为断开状态时,停止运行所述单服务节点的单服务。
[0053] 可选的,所述装置还包括:第五检测模块、第四运行模块、第六检测模块和第二删除模块,其中,
[0054] 所述第五检测模块,用于当检测到与所述zookeeper的连接状态为正常状态时,检测所述单服务节点的单服务是否正在运行;
[0055] 所述第四运行模块,用于在所述第五检测模块检测结果为否的情况下,重新运行所述单服务节点的单服务;
[0056] 所述第六检测模块,用于再次检测所述单服务节点的单服务是否正在运行;
[0057] 所述第二删除模块,用于在所述第六检测模块检测结果为否的情况下,,删除所述path路径下的所述单服务节点。
[0058] 由上述技术方案可见,本发明实施例提供了一种单服务运行方法及装置,应用于单服务节点。任何时候仅有一个单服务节点的单服务运行,保证了单服务的唯一性,避免了数据冲突。并且可以启用多个单服务节点,只要有一个单服务节点的单服务正常运行,单服务即可用,避免了阻塞后续任务进行。
[0059] 当然,实施本发明的任一产品或方法必不一定需要同时达到以上所述的所有优点。

附图说明

[0060] 为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0061] 图1为本发明实施例提供的单服务运行方法的第一种流程示意图;
[0062] 图2为本发明实施例提供的单服务运行方法的第二种流程示意图;
[0063] 图3为本发明实施例提供的单服务运行方法的第三种流程示意图;
[0064] 图4为本发明实施例提供的单服务运行方法的第四种流程示意图;
[0065] 图5为本发明实施例提供的单服务运行方法的第五种流程示意图;
[0066] 图6为本发明实施例提供的单服务运行方法的第六种流程示意图;
[0067] 图7为本发明实施例提供的单服务运行装置的第一种结构示意图;
[0068] 图8为本发明实施例提供的单服务运行装置的第二种结构示意图;
[0069] 图9为本发明实施例提供的单服务运行装置的第三种结构示意图;
[0070] 图10为本发明实施例提供的单服务运行装置的第四种结构示意图;
[0071] 图11为本发明实施例提供的单服务运行装置的第五种结构示意图;
[0072] 图12为本发明实施例提供的单服务运行装置的第六种结构示意图。

具体实施方式

[0073] 下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0074] 为了解决现有技术问题,本发明实施例提供了一种单服务运行方法及装置。下面首先对本发明实施例所提供的一种单服务运行方法进行介绍。
[0075] 需要说明的是,本发明实施例提供的一种单服务运行方法及装置,优选适用于单服务节点,其中,单服务节点为部署有单服务的节点,即单服务节点中部署有单服务。在实际应用中,可以启用多个单服务节点,每个单服务节点均部署有相同的单服务。示例性的,假设启用5个单服务节点,分别为单服务节点1、单服务节点2、单服务节点3、单服务节点4和单服务节点5,5个单服务节点中均部署有单服务X。
[0076] 图1为本发明实施例提供的单服务运行方法的第一种流程示意图,该方法可以包括:
[0077] S101:实时监控分布式应用程序协调服务zookeeper中是否存在预设用于标识单服务节点注册到所述zookeeper的path路径,如果否,执行S102。
[0078] S102:向所述zookeeper注册包含所述单服务节点的标识信息的所述path路径。
[0079] S103:在监控到所述zookeeper中存在所述path路径、且所述path路径包含的单服务节点的标识信息不为所述单服务节点的标识信息的情况下,取消向所述zookeeper注册所述path路径。
[0080] S104:在监控到所述zookeeper中存在所述path路径、且所述path路径包含有所述单服务节点的标识信息的情况下,运行所述单服务节点的单服务。
[0081] 示例性的,下面以上述启用的5个单服务节点以及单服务X为例进行说明。
[0082] 假设预设用于标识单服务节点注册到zookeeper的path路径为:/root/service,其中,zookeeper是一个分布式的,开放源码的分布式应用程序协调服务。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。
[0083] 单服务节点1、单服务节点2、单服务节点3、单服务节点4和单服务节点5均实时监控zookeeper中是否存在path路径:/root/service。
[0084] 假设此时单服务节点1、单服务节点2、单服务节点3、单服务节点4和单服务节点5均监控到zookeeper中不存在path路径:/root/service。则单服务节点1、单服务节点2、单服务节点3、单服务节点4和单服务节点5均向zookeeper注册包含自身单服务节点的标识信息的path路径:/root/service。在实际应用中,标识信息可以为名称、序号等等。
[0085] 具体的,向zookeeper注册path路径可通过如下代码进行注册:
[0086] Create("/root/service","单服务节点的标识信息".getBytes(),Ids.OPEN_ACL_UNSAFE,CreateMode.EPHEMERAL)。
[0087] 其中,"单服务节点的标识信息".getBytes()表示数据为单服务节点的标识信息;Ids.OPEN_ACL_UNSAFE表示不进行ACL权限控制;CreateMode.EPHEMERAL表示/root/service为临时性。一旦单服务节点与zookeeper断开连接或者连接超时,这个path路径会自动删除。即单服务节点作为临时节点注册到zookeeper中特定path路径中。
[0088] 假设单服务节点2向zookeeper注册path路径:/root/service成功。
[0089] 此时,单服务节点1、单服务节点3、单服务节点4和单服务节点5监控到zookeeper中存在path路径:/root/service、且path路径包含的单服务节点的标识信息不为各自单服务节点的标识信息,表示已经有单服务节点抢先注册path路径:/root/service成功,抢先注册path路径成功的单服务节点已运行单服务X,则取消向zookeeper注册所述path路径,放弃自身单服务节点中的单服务X的运行,继续监控zookeeper中是否存在path路径:/root/service。
[0090] 单服务节点2监控到zookeeper中存在path路径:/root/service、且path路径包含自身单服务节点的标识信息,运行自身单服务节点的单服务X。
[0091] 即上述的各个单服务节点以抢占方式向zookeeper中注册包含自身标识信息的path路径。
[0092] 上述过程说明,仅有单服务节点2的单服务X运行,单服务节点1、单服务节点3、单服务节点4和单服务节点5的单服务X未运行。
[0093] 需要说明的是,上述以启用的5个单服务节点以及单服务X为例进行说明,仅为本发明的一具体实例,并不构成对本发明的限定。
[0094] 应用本发明图1所示实施例,任何时候仅有一个单服务节点的单服务运行,保证了单服务的唯一性,避免了数据冲突。并且可以启用多个单服务节点,只要有一个单服务节点的单服务正常运行,单服务即可用,避免了阻塞后续任务进行。
[0095] 图2为本发明实施例提供的单服务运行方法的第二种流程示意图,本发明图2所示实施例在图1所示实施例的基础上,增加以下两个步骤,
[0096] S105:检测与所述zookeeper的连接状态。
[0097] S106:当检测到与所述zookeeper的连接状态为断开状态时,停止运行所述单服务节点的单服务。
[0098] 示例性的,还以上述启用的5个单服务节点以及单服务X为例进行说明。
[0099] 单服务节点2在运行自身单服务节点的单服务X后,检测与zookeeper的连接状态,当检测到与zookeeper的连接断开后,停止运行自身单服务节点的单服务X。当zookeeper检测到与单服务节点2连接断开后,删除path路径:/root/service。此时,单服务节点1、单服务节点3、单服务节点4和单服务节点5均监控到zookeeper中不存在path路径:/root/service。则单服务节点1、单服务节点3、单服务节点4和单服务节点5均向zookeeper注册包含自身单服务节点的标识信息的path路径:/root/service。
[0100] 假设单服务节点1向zookeeper注册path路径:/root/service成功。此时,单服务节点3、单服务节点4和单服务节点5监控到zookeeper中存在path路径:/root/service、且path路径包含的单服务节点的标识信息不为各自单服务节点的标识信息,表示已经有单服务节点抢先注册path路径:/root/service成功,抢先注册path路径成功的单服务节点已运行单服务X,则取消向zookeeper注册所述path路径,放弃自身单服务节点中的单服务X的运行,继续监控zookeeper中是否存在path路径:/root/service。
[0101] 单服务节点1监控到zookeeper中存在path路径:/root/service、且path路径包含自身单服务节点的标识信息,运行自身单服务节点的单服务X。
[0102] 上述过程说明,仅有单服务节点1的单服务X运行,单服务节点2、单服务节点3、单服务节点4和单服务节点5的单服务X未运行。
[0103] 需要说明的是,上述以启用的5个单服务节点以及单服务X为例进行说明,仅为本发明的一具体实例,并不构成对本发明的限定。
[0104] 应用本发明图2所示实施例,进一步保证了单服务的唯一性,避免了数据冲突和阻塞后续任务进行。
[0105] 图3为本发明实施例提供的单服务运行方法的第三种流程示意图,本发明图3所示实施例在图2所示实施例的基础上,增加以下四个步骤,
[0106] S107:当检测到与所述zookeeper的连接状态为正常状态时,检测所述单服务节点的单服务是否正在运行,如果否,执行S108。
[0107] S108:重新运行所述单服务节点的单服务。
[0108] S109:再次检测所述单服务节点的单服务是否正在运行,如果否,执行S110。
[0109] S110:删除所述zookeeper中的所述path路径。
[0110] 示例性的,还以上述启用的5个单服务节点以及单服务X为例进行说明。
[0111] 单服务节点2在运行自身单服务节点的单服务X后,检测与zookeeper的连接状态,当检测到与zookeeper的连接正常时,检测自身单服务节点的单服务X是否正在运行,如果检测到自身单服务节点的单服务X没有运行,则重新运行自身单服务节点的单服务X。重新运行自身单服务节点的单服务X后,再次检测自身单服务节点的单服务X是否正在运行,如果还未运行,则删除zookeeper中的path路径:/root/service。此时,单服务节点1、单服务节点3、单服务节点4和单服务节点5均监控到zookeeper中不存在path路径:/root/service。则单服务节点1、单服务节点3、单服务节点4和单服务节点5均向zookeeper注册包含自身单服务节点的标识信息的path路径:/root/service。
[0112] 假设单服务节点1向zookeeper注册path路径:/root/service成功。
[0113] 此时,单服务节点3、单服务节点4和单服务节点5监控到zookeeper中存在path路径:/root/service、且path路径包含的单服务节点的标识信息不为各自单服务节点的标识信息,表示已经有单服务节点抢先注册path路径:/root/service成功,抢先注册path路径成功的单服务节点已运行单服务X,则取消向zookeeper注册所述path路径,放弃自身单服务节点中的单服务X的运行,继续监控zookeeper中是否存在path路径:/root/service。
[0114] 单服务节点1监控到zookeeper中存在path路径:/root/service、且path路径包含自身单服务节点的标识信息,运行自身单服务节点的单服务X。
[0115] 上述过程说明,仅有单服务节点1的单服务X运行,单服务节点2、单服务节点3、单服务节点4和单服务节点5的单服务X未运行。
[0116] 在实际应用中,检测自身单服务节点的单服务是否正在运行,可以通过检测当前运行的进程中是否存在单服务对应的进程来确定单服务是否正在运行,如果存在,表示单服务正在运行,如果不存在,表示单服务未运行。还可以通过检测服务列表中单服务的运行状态来确定单服务是否正在运行,如果单服务为正在运行状态,表示单服务正在运行,如果单服务为已停止状态,表示单服务未运行。
[0117] 需要说明的是,上述以启用的5个单服务节点以及单服务X为例进行说明,仅为本发明的一具体实例,并不构成对本发明的限定。
[0118] 应用本发明图3所示实施例,进一步保证了单服务的唯一性,避免了数据冲突和阻塞后续任务进行。
[0119] 图4为本发明实施例提供的单服务运行方法的第四种流程示意图,该方法可以包括:
[0120] S201:实时监控分布式应用程序协调服务zookeeper中预设path路径下是否注册有单服务节点,如果否,执行S202。
[0121] S202:将所述单服务节点作为临时节点,注册到所述预设path路径下。
[0122] S203:在监控到所述zookeeper中预设path路径下注册的单服务节点不为所述单服务节点的情况下,取消将所述单服务节点作为临时节点,注册到所述预设path路径下。
[0123] S204:在监控到所述zookeeper中预设path路径下注册的单服务节点为所述单服务节点的情况下,运行所述单服务节点的单服务。
[0124] 示例性的,下面以上述启用的5个单服务节点以及单服务X为例进行说明。
[0125] 假设预设path路径为:/root/service。单服务节点1、单服务节点2、单服务节点3、单服务节点4和单服务节点5均实时监控zookeeper中path路径:/root/service下是否注册有单服务节点。
[0126] 假设当前path路径:/root/service下没有注册单服务节点。则单服务节点1、单服务节点2、单服务节点3、单服务节点4和单服务节点5均监控到path路径:/root/service下没有注册单服务节点。则单服务节点1、单服务节点2、单服务节点3、单服务节点4和单服务节点5均将自身节点作为临时节点,注册到预设path路径:/root/service下。
[0127] 示例性的,单服务节点i将自身节点作为临时节点,注册到预设path路径:/root/service下可通过如下代码进行注册:
[0128] Create("/root/service/单服务节点i","mydata".getBytes(),Ids.OPEN_ACL_UNSAFE,CreateMode.EPHEMERAL)。其中,"mydata".getBytes()表示数据为mydata;Ids.OPEN_ACL_UNSAFE表示不进行ACL权限控制;CreateMode.EPHEMERAL表示单服务节点i为临时节点。一旦单服务节点与zookeeper断开连接或者连接超时,这个临时节点会自动删除。
[0129] 假设单服务节点2将自身节点作为临时节点,注册到预设path路径:/root/service下成功。
[0130] 此时,单服务节点1、单服务节点3、单服务节点4和单服务节点5均监控到path路径:/root/service下注册有单服务节点2且不为各自单服务节点,表示已经有单服务节点抢先注册到path路径:/root/service下成功,抢先注册path路径下成功的单服务节点已运行单服务X;则取消将自身节点作为临时节点,注册到预设path路径:/root/service下,放弃自身单服务节点中的单服务X的运行。继续监控path路径:/root/service下是否注册有单服务节点。
[0131] 单服务节点2监控到path路径:/root/service下注册的单服务节点为自身单服务节点,运行自身单服务节点的单服务X。
[0132] 即上述的各个单服务节点以抢占方式向path路径下注册自身单服务节点。
[0133] 上述过程说明,仅有单服务节点2的单服务X运行,单服务节点1、单服务节点3、单服务节点4和单服务节点5的单服务X未运行。
[0134] 需要说明的是,上述以启用的5个单服务节点以及单服务X为例进行说明,仅为本发明的一具体实例,并不构成对本发明的限定。
[0135] 应用本发明图4所示实施例,任何时候仅有一个单服务节点的单服务运行,保证了单服务的唯一性,避免了数据冲突。并且可以启用多个单服务节点,只要有一个单服务节点的单服务正常运行,单服务即可用,避免了阻塞后续任务进行。
[0136] 图5为本发明实施例提供的单服务运行方法的第五种流程示意图,本发明图5所示实施例在图4所示实施例基础上,增加以下两个步骤。
[0137] S205:检测与所述zookeeper的连接状态。
[0138] S206:当检测到与所述zookeeper的连接状态为断开状态时,停止运行所述单服务节点的单服务。
[0139] 示例性的,还以上述启用的5个单服务节点以及单服务X为例进行说明。
[0140] 单服务节点2在运行自身单服务节点的单服务X后,检测与zookeeper的连接状态,当检测到与zookeeper的连接断开后,停止运行自身单服务节点的单服务X。当zookeeper检测到与单服务节点2连接断开后,删除path路径:/root/service下的单服务节点2。此时单服务节点1、单服务节点3、单服务节点4和单服务节点5均监控到zookeeper中path路径:/root/service下没有注册有单服务节点。则单服务节点1、单服务节点3、单服务节点4和单服务节点5均将自身节点作为临时节点,注册到预设path路径:/root/service下。
[0141] 假设单服务节点1注册成功。此时,单服务节点3、单服务节点4和单服务节点5均监控到path路径:/root/service下注册有单服务节点1且不为各自单服务节点,表示已经有单服务节点抢先注册到path路径:/root/service下成功,抢先注册path路径下成功的单服务节点已运行单服务X;则取消将自身节点作为临时节点,注册到预设path路径:/root/service下,放弃自身单服务节点中的单服务X的运行。继续监控path路径:/root/service下是否注册有单服务节点。
[0142] 单服务节点1监控到path路径:/root/service下注册的单服务节点为自身单服务节点,运行自身单服务节点的单服务X。
[0143] 上述过程说明,仅有单服务节点1的单服务X运行,单服务节点2、单服务节点3、单服务节点4和单服务节点5的单服务X未运行。
[0144] 需要说明的是,上述以启用的5个单服务节点以及单服务X为例进行说明,仅为本发明的一具体实例,并不构成对本发明的限定。
[0145] 应用本发明图5所示实施例,进一步保证了单服务的唯一性,避免了数据冲突和阻塞后续任务进行。
[0146] 图6为本发明实施例提供的单服务运行方法的第六种流程示意图,本发明图6所示实施例在图5所示实施例基础上,增加以下四个步骤。
[0147] S207:当检测到与所述zookeeper的连接状态为正常状态时,检测所述单服务节点的单服务是否正在运行,如果否,执行S208。
[0148] S208:重新运行所述单服务节点的单服务。
[0149] S209:再次检测所述单服务节点的单服务是否正在运行,如果否,执行S210。
[0150] S210:删除所述path路径下的所述单服务节点。
[0151] 示例性的,还以上述启用的5个单服务节点以及单服务X为例进行说明。
[0152] 单服务节点2在运行自身单服务节点的单服务X后,检测与zookeeper的连接状态,当检测到与zookeeper的连接正常时,检测自身单服务节点的单服务X是否正在运行,如果检测到自身单服务节点的单服务X没有运行,则重新运行自身单服务节点的单服务X。重新运行自身单服务节点的单服务X后,再次检测自身单服务节点的单服务X是否正在运行,如果还未运行,则删除zookeeper中path路径:/root/service下的单服务节点2。此时单服务节点1、单服务节点3、单服务节点4和单服务节点5均监控到zookeeper中path路径:/root/service下没有注册有单服务节点。则单服务节点1、单服务节点3、单服务节点4和单服务节点5均将自身节点作为临时节点,注册到预设path路径:/root/service下。
[0153] 假设单服务节点1注册成功。此时,单服务节点3、单服务节点4和单服务节点5均监控到path路径:/root/service下注册有单服务节点1且不为各自单服务节点,表示已经有单服务节点抢先注册到path路径:/root/service下成功,抢先注册path路径下成功的单服务节点已运行单服务X;则取消将自身节点作为临时节点,注册到预设path路径:/root/service下,放弃自身单服务节点中的单服务X的运行。继续监控path路径:/root/service下是否注册有单服务节点。
[0154] 单服务节点1监控到path路径:/root/service下注册的单服务节点为自身单服务节点,运行自身单服务节点的单服务X。
[0155] 上述过程说明,仅有单服务节点1的单服务X运行,单服务节点2、单服务节点3、单服务节点4和单服务节点5的单服务X未运行。
[0156] 在实际应用中,检测自身单服务节点的单服务是否正在运行,可以通过检测当前运行的进程中是否存在单服务对应的进程来确定单服务是否正在运行,如果存在,表示单服务正在运行,如果不存在,表示单服务未运行。还可以通过检测服务列表中单服务的运行状态来确定单服务是否正在运行,如果单服务为正在运行状态,表示单服务正在运行,如果单服务为已停止状态,表示单服务未运行。
[0157] 需要说明的是,上述以启用的5个单服务节点以及单服务X为例进行说明,仅为本发明的一具体实例,并不构成对本发明的限定。
[0158] 应用本发明图6所示实施例,进一步保证了单服务的唯一性,避免了数据冲突和阻塞后续任务进行。
[0159] 与上述的方法实施例相对应,本发明实施例还提供一种单服务运行装置。
[0160] 图7为本发明实施例提供的单服务运行装置的第一种结构示意图;该装置可以包括:第一监控模块301、第一注册模块302、第一取消模块303和第一运行模块304,其中,[0161] 第一监控模块301,用于实时监控分布式应用程序协调服务zookeeper中是否存在预设用于标识单服务节点注册到所述zookeeper的path路径;
[0162] 第一注册模块302,用于在第一监控模块301监控到所述zookeeper中不存在所述path路径的情况下,向所述zookeeper注册包含所述单服务节点的标识信息的所述path路径;
[0163] 第一取消模块303,用于在监控到所述zookeeper中存在所述path路径、且所述path路径包含的单服务节点的标识信息不为所述单服务节点的标识信息的情况下,取消向所述zookeeper注册所述path路径;
[0164] 第一运行模块304,用于在监控到所述zookeeper中存在所述path路径、且所述path路径包含有所述单服务节点的标识信息的情况下,运行所述单服务节点的单服务。
[0165] 应用本发明图7所示实施例,任何时候仅有一个单服务节点的单服务运行,保证了单服务的唯一性,避免了数据冲突。并且可以启用多个单服务节点,只要有一个单服务节点的单服务正常运行,单服务即可用,避免了阻塞后续任务进行。
[0166] 图8为本发明实施例提供的单服务运行装置的第二种结构示意图;本发明图8所示实施例在图7所示实施例的基础上增加第一检测模块305和第一停止模块306,其中,[0167] 第一检测模块305,用于检测与所述zookeeper的连接状态;
[0168] 第一停止模块306,用于当检测到与所述zookeeper的连接状态为断开状态时,停止运行所述单服务节点的单服务。
[0169] 应用本发明图8所示实施例,进一步保证了单服务的唯一性,避免了数据冲突和阻塞后续任务进行。
[0170] 图9为本发明实施例提供的单服务运行装置的第三种结构示意图;本发明图9所示实施例在图8所示实施例的基础上增加第二检测模块307、第二运行模块308、第三检测模块309和第一删除模块310,其中,
[0171] 第二检测模块307,用于当检测到与所述zookeeper的连接状态为正常状态时,检测所述单服务节点的单服务是否正在运行;
[0172] 第二运行模块308,用于在第二检测模块307检测结果为否的情况下,重新运行所述单服务节点的单服务;
[0173] 第三检测模块309,用于再次检测所述单服务节点的单服务是否正在运行;
[0174] 第一删除模块310,用于在第三检测模块309检测结果为否的情况下,删除所述zookeeper中的所述path路径。
[0175] 应用本发明图9所示实施例,进一步保证了单服务的唯一性,避免了数据冲突和阻塞后续任务进行。
[0176] 图10为本发明实施例提供的单服务运行装置的第四种结构示意图;该装置可以包括:第二监控模块401、第二注册模块402、第二取消模块403和第三运行模块404,其中,[0177] 第二监控模块401,用于实时监控分布式应用程序协调服务zookeeper中预设path路径下是否注册有单服务节点;
[0178] 第二注册模块402,用于在第二监控模块402监控到所述path路径下没有注册有单服务节点的情况下,将所述单服务节点作为临时节点,注册到所述预设path路径下;
[0179] 第二取消模块403,用于在监控到所述zookeeper中预设path路径下注册的单服务节点不为所述单服务节点的情况下,取消将所述单服务节点作为临时节点,注册到所述预设path路径下;
[0180] 第三运行模块404,用于在监控到所述zookeeper中预设path路径下注册的单服务节点为所述单服务节点的情况下,运行所述单服务节点的单服务。
[0181] 应用本发明图10所示实施例,任何时候仅有一个单服务节点的单服务运行,保证了单服务的唯一性,避免了数据冲突。并且可以启用多个单服务节点,只要有一个单服务节点的单服务正常运行,单服务即可用,避免了阻塞后续任务进行。
[0182] 图11为本发明实施例提供的单服务运行装置的第五种结构示意图;本发明图11所示实施例在图10所示实施例的基础上增加第四检测模块405和第二停止模块406,其中,[0183] 第四检测模块405,用于检测与所述zookeeper的连接状态;
[0184] 第二停止模块406,用于当检测到与所述zookeeper的连接状态为断开状态时,停止运行所述单服务节点的单服务。
[0185] 应用本发明图11所示实施例,进一步保证了单服务的唯一性,避免了数据冲突和阻塞后续任务进行。
[0186] 图12为本发明实施例提供的单服务运行装置的第六种结构示意图;本发明图12所示实施例在图11所示实施例的基础上增加第五检测模块407、第四运行模块408、第六检测模块409和第二删除模块410,其中,
[0187] 第五检测模块407,用于当检测到与所述zookeeper的连接状态为正常状态时,检测所述单服务节点的单服务是否正在运行;
[0188] 第四运行模块408,用于在第五检测模块407检测结果为否的情况下,重新运行所述单服务节点的单服务;
[0189] 第六检测模块409,用于再次检测所述单服务节点的单服务是否正在运行;
[0190] 第二删除模块410,用于在第六检测模块409检测结果为否的情况下,,删除所述path路径下的所述单服务节点。
[0191] 应用本发明图12所示实施例,进一步保证了单服务的唯一性,避免了数据冲突和阻塞后续任务进行。
[0192] 需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
[0193] 本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
[0194] 本领域普通技术人员可以理解实现上述方法实施方式中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,所述的程序可以存储于计算机可读取存储介质中,这里所称得的存储介质,如:ROM/RAM、磁碟、光盘等。
[0195] 以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。