一种基于zookeeper的主从本地定时任务处理方法及系统技术方案

技术编号:22172981 阅读:28 留言:0更新日期:2019-09-21 13:40
本发明专利技术提供一种基于zookeeper的主从本地定时任务处理方法,需提供zookeeper服务和复数个应用服务器,在每一应用服务器启动时,在zookeeper目录下创建一个节点,并为节点分配一节点数字,存储在对应应用服务器内存;当zookeeper目录下的节点数字变化时,zookeeper服务广播通知各应用服务器;在各应用服务器收到广播后,获取zookeeper目录下所有节点数字,生成节点列表存储于本地内存;每一应用服务器获取本地存储的节点列表,从节点列表中获取第一个数字与当前应用服务器对应的节点数字进行比较,若一致,则判当前应用服务器为主节点,执行定时任务,否则,判当前任务为从节点,不执行定时任务。本发明专利技术还提供一种基于zookeeper的主从本地定时任务处理系统,实现主从本地定时任务的高效处理。

A Master-Slave Local Timing Task Processing Method and System Based on Zookeeper

【技术实现步骤摘要】
一种基于zookeeper的主从本地定时任务处理方法及系统
本专利技术涉及集群服务器领域,尤其涉及一种基于zookeeper的主从本地定时任务处理方法及系统。
技术介绍
早期在开发应用服务的过程中,经常会在应用服务器做一些定时任务,用于定期统计分析或者其他的用途。这种情况下,在单应用服务器下是不会出现问题的,但是在集群环境下,多台应用服务器同时启动定时任务,会造成代码重复执行、资源浪费、系统问题,现有的将多台应用服务器中的其中一台设置为主服务器,其他为从服务器,由主服务器通知各个从服务器自己为主服务器,并执行对应的任务,但当主服务器出现问题时,无法及时的更换其他从服务器中的一个作为主服务器,影响服务器的正常运行。
技术实现思路
本专利技术要解决的技术问题之一,在于提供一种基于zookeeper的主从本地定时任务处理方法,实现主从本地定时任务的高效处理。本专利技术要解决的技术问题之一是这样实现的:一种基于zookeeper的主从本地定时任务处理方法,需提供zookeeper服务和复数个应用服务器,所述方法包括如下步骤:步骤1、在每一应用服务器启动时,在zookeeper目录下创建一个节点,并为所述节点分配一个节点数字,存储在对应应用服务器内存中;步骤2、当zookeeper目录下的节点数字发生变化时,zookeeper服务广播通知各应用服务器;步骤3、在各应用服务器收到广播之后,获取zookeeper目录下所有节点数字,生成节点列表存储于本地内存;步骤4、每一应用服务器获取本地存储的节点列表,从所述节点列表中获取第一个数字与当前应用服务器对应的节点数字进行比较,若一致,则判当前应用服务器为主节点,执行定时任务,否则,判当前任务为从节点,不执行定时任务。进一步的,所述步骤1中的节点数字为增量数字,节点数字用于唯一标识一应用服务器。进一步的,所述步骤1还包括:各应用服务器监听zookeeper目录的所有变化。进一步的,所述节点列表中存储的节点数字按升序排列存储。进一步的,所述方法还包括步骤5、当主节点宕机时,删除当前zookeeper目录下当前主节点对应的数字,通过zookeeper服务广播通知各应用服务器更新节点列表,并将新的节点列表中第一个数字对应的应用服务器作为新的主节点,其他作为从节点。本专利技术要解决的技术问题之二,在于提供一种基于zookeeper的主从本地定时任务处理系统,实现主从本地定时任务的高效处理。本专利技术要解决的技术问题之二是这样实现的:一种基于zookeeper的主从本地定时任务处理系统,需提供zookeeper服务和复数个应用服务器,所述系统包括:一注册模块,用于在每一应用服务器启动时,在zookeeper目录下创建一个节点,并为所述节点分配一个节点数字,存储在对应应用服务器内存中;一广播模块,用于当zookeeper目录下的节点数字发生变化时,zookeeper服务广播通知各应用服务器;一节点列表创建模块,用于在各应用服务器收到广播之后,获取zookeeper目录下所有节点数字,生成节点列表存储于本地内存;一任务执行模块,用于每一应用服务器获取本地存储的节点列表,从所述节点列表中获取第一个数字与当前应用服务器对应的节点数字进行比较,若一致,则判当前应用服务器为主节点,执行定时任务,否则,判当前任务为从节点,不执行定时任务。进一步的,所述注册模块中的节点数字为增量数字,节点数字用于唯一标识一应用服务器。进一步的,所述注册模块还包括:各应用服务器监听zookeeper目录的所有变化。进一步的,所述节点列表中存储的节点数字按升序排列存储。进一步的,所述系统还包括一节点列表更新模块,用于当主节点宕机时,删除当前zookeeper目录下当前主节点对应的数字,通过zookeeper服务广播通知各应用服务器更新节点列表,并将新的节点列表中第一个数字对应的应用服务器作为新的主节点,其他作为从节点。本专利技术具有如下优点:通过zookeeper服务广播的方式通知各集群应用服务器,应用服务器本地存储有集群服务器对应的节点数字,根据节点数字确定主节点,在任务执行之前,先验证当前应用服务器是否为主节点,如果是主节点,则执行当前任务,如果是从节点,则不执行当前任务,从而实现主从本地定时任务的高效处理,大大降低系统故障问题,避免代码重复执行。附图说明下面参照附图结合实施例对本专利技术作进一步的说明。图1为本专利技术一种基于zookeeper的主从本地定时任务处理方法执行流程图。图2为本专利技术一种基于zookeeper的主从本地定时任务处理系统逻辑框图。具体实施方式如图1所示,一种基于zookeeper的主从本地定时任务处理方法,需提供zookeeper服务和复数个应用服务器,所述方法包括如下步骤:步骤1、在每一应用服务器启动时,在zookeeper目录“SERVICE_NODE”下创建一个节点,并为所述节点分配一个节点数字,存储在对应应用服务器内存中;同时各应用服务器监听zookeeper目录“SERVICE_NODE”的所有变化;所述节点数字为增量数字(比如有五台应用服务器的节点数字分别为1,2,3,4,5,根据需要可以设定排序最前面的“1”对应的应用服务器为主节点),节点数字用于唯一标识一应用服务器。步骤2、当zookeeper目录“SERVICE_NODE”下的节点数字发生变化时,zookeeper服务广播通知各应用服务器;步骤3、在各应用服务器收到广播之后,获取zookeeper目录“SERVICE_NODE”下所有节点数字,生成节点列表“SortedSet<String>”,存储于各应用服务器的本地内存;步骤4、每一应用服务器获取本地存储的节点列表“SortedSet<String>”,从所述节点列表“SortedSet<String>”中获取第一个数字与当前应用服务器对应的节点数字进行比较,若一致,则判当前应用服务器为主节点,执行定时任务,否则,判当前任务为从节点,不执行定时任务。较佳的,所述节点列表中存储的节点数字按升序排列存储。较佳的,所述方法还包括步骤5、当主节点宕机时,删除当前zookeeper目录“SERVICE_NODE”下当前主节点对应的数字,通过zookeeper服务广播通知各应用服务器更新节点列表“SortedSet<String>”,并将新的节点列表“SortedSet<String>”中第一个数字对应的应用服务器作为新的主节点,其他作为从节点,比如,节点数字为“1”的主机宕机时,更新节点列表中的节点数字,从1,2,3,4,5更新为2,3,4,5,此时,选取排列最前的“2”对应的应用服务器作为新的主服务器,若原来为“1”的主服务器维修好从新加入到列表中,则重新为其分配一个节点数字,采用增量数字,即取“6”,加入原节点列表中,得到新的节点列表数据为2,3,4,5,6。如图2所示,一种基于zookeeper的主从本地定时任务处理系统,需提供zookeeper服务和复数个应用服务器,所述系统包括:一注册模块,用于在每一应用服务器启动时,在zookeeper目录“SERVICE_NODE”下创建一个节点,并为所述节点分配一个节点数字,存储在对应应本文档来自技高网...

【技术保护点】
1.一种基于zookeeper的主从本地定时任务处理方法,其特征在于:需提供zookeeper服务和复数个应用服务器,所述方法包括如下步骤:步骤1、在每一应用服务器启动时,在zookeeper目录下创建一个节点,并为所述节点分配一个节点数字,存储在对应应用服务器内存中;步骤2、当zookeeper目录下的节点数字发生变化时,zookeeper服务广播通知各应用服务器;步骤3、在各应用服务器收到广播之后,获取zookeeper目录下所有节点数字,生成节点列表存储于本地内存;步骤4、每一应用服务器获取本地存储的节点列表,从所述节点列表中获取第一个数字与当前应用服务器对应的节点数字进行比较,若一致,则判当前应用服务器为主节点,执行定时任务,否则,判当前任务为从节点,不执行定时任务。

【技术特征摘要】
1.一种基于zookeeper的主从本地定时任务处理方法,其特征在于:需提供zookeeper服务和复数个应用服务器,所述方法包括如下步骤:步骤1、在每一应用服务器启动时,在zookeeper目录下创建一个节点,并为所述节点分配一个节点数字,存储在对应应用服务器内存中;步骤2、当zookeeper目录下的节点数字发生变化时,zookeeper服务广播通知各应用服务器;步骤3、在各应用服务器收到广播之后,获取zookeeper目录下所有节点数字,生成节点列表存储于本地内存;步骤4、每一应用服务器获取本地存储的节点列表,从所述节点列表中获取第一个数字与当前应用服务器对应的节点数字进行比较,若一致,则判当前应用服务器为主节点,执行定时任务,否则,判当前任务为从节点,不执行定时任务。2.根据权利要求1所述的一种基于zookeeper的主从本地定时任务处理方法,其特征在于:所述步骤1中的节点数字为增量数字,节点数字用于唯一标识一应用服务器。3.根据权利要求1所述的一种基于zookeeper的主从本地定时任务处理方法,其特征在于:所述步骤1还包括:各应用服务器监听zookeeper目录的所有变化。4.根据权利要求1所述的一种基于zookeeper的主从本地定时任务处理方法,其特征在于:所述节点列表中存储的节点数字按升序排列存储。5.根据权利要求1所述的一种基于zookeeper的主从本地定时任务处理方法,其特征在于:所述方法还包括步骤5、当主节点宕机时,删除当前zookeeper目录下当前主节点对应的数字,通过zookeeper服务广播通知各应用服务器更新节点列表,并将新的节点列表中第一个数字对应的应用服务器作为新的主节点,其他作为从节点。6.一种基于zookeepe...

【专利技术属性】
技术研发人员:蔡剑研
申请(专利权)人:南威软件股份有限公司
类型:发明
国别省市:福建,35

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1