买专利,只认龙图腾
首页 专利交易 科技果 科技人才 科技服务 商标交易 会员权益 IP管家助手 需求市场 关于龙图腾
 /  免费注册
到顶部 到底部
清空 搜索

【发明授权】应用程序主备切换方法及系统_福建新大陆软件工程有限公司_201811551837.X 

申请/专利权人:福建新大陆软件工程有限公司

申请日:2018-12-19

公开(公告)日:2022-09-16

公开(公告)号:CN109525436B

主分类号:H04L41/0663

分类号:H04L41/0663

优先权:

专利状态码:有效-授权

法律状态:2022.09.16#授权;2019.04.19#实质审查的生效;2019.03.26#公开

摘要:本发明公开了一种应用程序主备切换方法及系统,由HaKeeper服务读取配置文件,获取目标应用的操作脚本;HaKeeper根据Lock访问ZooKeeper目录,通过获取锁判断目标应用是否允许运行于当前主机;如获取锁失败,停止应用或确认应用关闭后再次尝试获得锁;如获取锁成功,启动应用或确认应用开启;定时的不断检测应用的运行状态;如应用运行状态异常,由lock内嵌模块释放锁,以允许其他主机上运行的HaKeeper获得目标应用的锁。本方案可自动监控各类应用,发现目标应用故障或失效后立即进行快速切换或重启,提升了工作效率的同时降低了人工成本,支持所有可运行于linux之上的应用,具有良好的通用性。

主权项:1.一种应用程序主备切换方法,其特征在于:包括步骤:S10:启动HaKeeper服务,由HaKeeper服务读取配置文件,获取目标应用的操作脚本;S20:HaKeeper根据Lock访问ZooKeeper目录,通过获取锁判断目标应用是否允许运行于当前主机;S30:如获取锁失败,停止应用或确认应用关闭后执行步骤S20;S40:如获取锁成功,启动应用或确认应用开启后定时的检测应用的运行状态;S50:如应用运行状态异常,由lock内嵌模块释放锁,以允许其他主机上运行的HaKeeper获得目标应用的锁。

全文数据:应用程序主备切换方法及系统技术领域本发明涉及计算机技术领域,特别涉及一种应用程序主备切换方法及系统。背景技术随着大数据、云计算、数据仓库等领域的不断发展,各类服务应用、数据处理常驻应用日益增多。分布式应用关键节点如何避免单点故障,不间断服务如何减少故障等待时间,各类数据处理的常驻应用如何保证长期持续运转,是各企业共同面临的问题。目前市面上暂无提供应用主备切换的通用工具,各企业在面对应用不间断服务的保障方案时,往往借助于维护团队来监控应用状态,在应用失效时手动恢复,或在应用中嵌入高耦合、非通用的处理机制,实现针对于特定应用的故障切换。但是通过人工维护或非通用的处理机制的方式存在着以下缺点:1、人工成本较高,且需要持续投入;2、人工处理在可靠性、及时性、持续性等方面难以保证;3、不同企业及应用,对于维护工作难以形成标准、统一的处理方案;4、如针对不同应用开发主备切换特性,将产生重复的开发成本。发明内容本发明要解决的技术问题是如何提供一种通用的、节约人工开发成本的应用程序主备切换方法及装置。为了解决上述技术问题,本发明的技术方案为:一种应用程序主备切换方法,包括步骤:S10:启动HaKeeper服务,由HaKeeper服务读取配置文件,获取目标应用的操作脚本;S20:HaKeeper根据Lock访问ZooKeeper目录,通过获取锁判断目标应用是否允许运行于当前主机;S30:如获取锁失败,停止应用或确认应用关闭后执行步骤S20;S40:如获取锁成功,启动应用或确认应用开启后定时的检测应用的运行状态;S50:如应用运行状态异常,由lock内嵌模块释放锁,以允许其他主机上运行的HaKeeper获得目标应用的锁。优选地,步骤S20包括:S21:通过配置确认需要管控的目标应用;S22:为每一目标应用分别创建lock锁,并提交给Zookeeper,lock锁为临时序列Znode;S23:Zookeeper根据目标应用目录下当前最大序号给lock锁设定序号;S24:查询目标应用目录下最小序号锁节点,与内存中所保存的锁节点名对比,如名称一致,则判定获得目标应用的运行锁;S25:如名称不一致,判断目标应用运行锁获取失败。优选地,步骤S50中释放锁通过ZooKeeper在目标应用目录下删除应用运行锁来实现。优选地,步骤S30包括:S31:检查目标应用是否运行于当前主机;S32:当目标应用未运行于当前主机,则执行步骤S20;S33:当目标应用已运行于当前主机,则调用应用停止脚本停止目标应用后执行步骤S20。优选地,步骤S40包括:S41:检查目标应用当前是否运行于当前主机;S42:当目标应用未运行于当前主机,则调用应用开启脚本开启目标应用;S43:定时的检测应用的运行状态。本发明还提出了一种应用程序主备切换系统,包括:至少两台主机,每台主机内包括HaKeeper服务模块、ZooKeeper服务模块、应用配置文件模块,所述HaKeeper服务模块包括lock内嵌模块;所述HaKeeper服务模块,用于运行HaKeeper服务,由HaKeeper服务读取所述配置文件模块的文件,获取目标应用的操作脚本;所述lock内嵌模块,由HaKeeper服务控制,通过Lock访问所述ZooKeeper服务模块,通过获取锁判断目标应用是否允许运行于当前主机;如所述lock内嵌模块获取锁失败,通过所述应用配置文件模块读取目标应用的脚本,停止应用或确认应用关闭后通过所述lock内嵌模块再次尝试获取锁;如所述lock内嵌模块获取锁成功,通过所述应用配置文件模块读取目标应用脚本,启动应用或确认应用开启后定时检测应用运行状态;如应用运行状态异常,通过所述lock内嵌模块释放锁,以允许其他主机上运行的HaKeeper服务模块获得目标应用的锁。优选地:所述HaKeeper服务模块执行所述操作:通过所述lock内嵌摸为每一目标应用分别创建lock锁,并提交给所述Zookeeper服务模块,lock锁为临时序列Znode;所述Zookeeper服务模块根据目标应用目录下当前最大序号给lock锁设定序号;查询目标应用目录下最小序号锁节点,与内存中所保存的锁节点名对比,如名称一致,则判定获得目标应用的运行锁,如名称不一致,判断目标应用运行锁获取失败;通过ZooKeeper在目标应用目录下删除应用运行锁释放锁。优选地:所述HaKeeper服务模块包括配置解析器及应用监视器;所述配置解析器,为应用配置文件模块解析组件,用以解析所需管控的目标应用及目标应用的开启脚本、停止脚本、运行状态检测脚本,并根据目标应用的数量,创建与目标应用一一对应的所述应用监视器;所述应用监视器,负责一个目标应用的管控工作,利用所述Lock内嵌模块获取目标应用运行锁,通过所述应用状态检查模块检查目标应用的状态,通过脚本执行器来调用外部脚本,实现对目标应用的开启、停止及运行状态检测。优选地:所述应用监视器包括应用状态检查模块、脚本执行器及所述Lock内嵌模块;所述Lock内嵌模块:用于访问ZooKeeper,利用ZooKeeper序列临时节点特性来创建、检测、释放锁,实现目标应用运行锁的获取与释放;所述应用状态检查模块:用于定期执行应用检查,触发锁获取、锁释放的事件,并触发开启、状态检测、停止目标应用的事件;脚本执行器:用以执行外部shell脚本并获取执行结果,向所述应用状态检查模块反馈操作结果。优选地:HaKeeper服务模块还包括外部命令接收器、状态查询器及日志模块;所述外部命令接收器:接收人工发送的命令,将目标应用的开启及停止命令转发给所述应用监视器处理,将状态查询命令转发至所述状态查询器处理;所述状态查询器:接收所述外部命令接收器的命令事件通知,通过ZooKeeper查询所管控的目标应用当前运行于哪些主机,并将结果发送至所述日志模块;所述日志模块:收集每个所述应用监视器及所述状态查询器产生的日志,在主机本地目录进行输出。采用上述技术方案,在每个主机上部署一ZooKeeper服务以形成ZooKeeper集群,由主机内的HaKeeper通过Lock内嵌模块访问所属主机的ZooKeeper服务的形式,通过获取及释放锁来实现应用程序的切换。本发明可自动监控各类应用,发现目标应用故障或失效后立即进行快速切换或重启;维护团队的工作趋于统一,大幅简化;可运行于linux之上的应用,仅需编写简易的对接脚本和配置文件,具有通用性好,极大的降低了人工的维护培训成本。附图说明图1为本发明应用程序主备切换方法一实施例的流程图;图2为本发明应用程序主备切换方法一实施例的主备切换原理图;图3为本发明应用程序主备切换系统一实施例的模块示意图;图4为本发明应用程序主备切换系统另一实施例的模块示意图。图中,1-HaKeeper服务模块,2-ZooKeeper服务模块,3-应用配置文件模块,4-开启脚本,5-停止脚本,6-运行状态检测脚本,11-配置解析器,12-应用监视器,13-外部命令接收器,14-状态查询器,15-日志模块,121-应用状态检查模块,122-脚本执行器,123-Lock内嵌模块。具体实施方式下面结合附图对本发明的具体实施方式作进一步说明。在此需要说明的是,对于这些实施方式的说明用于帮助理解本发明,但并不构成对本发明的限定。此外,下面所描述的本发明各个实施方式中所涉及的技术特征只要彼此之间未构成冲突就可以相互组合。参照图1,本实施例提出了一种应用程序主备切换方法,包括步骤:S10:启动HaKeeper服务,由HaKeeper服务读取配置文件,获取目标应用的操作脚本;S20:HaKeeper根据Lock访问ZooKeeper目录,通过获取锁判断目标应用是否允许运行于当前主机;其中,步骤S20包括:S21:通过配置确认需要管控的目标应用;S22:为每一目标应用分别创建lock锁,并提交给Zookeeper,lock锁为临时序列Znode;S23:Zookeeper根据目标应用目录下当前最大序号给lock锁设定序号;S24:查询目标应用目录下最小序号锁节点,与内存中所保存的锁节点名对比,如名称一致,则判定获得目标应用的运行锁;S30:如获取锁失败,停止应用或确认应用关闭后执行步骤S20;其中,步骤S30包括:S31:调用应用状态检查脚本检查目标应用当前是否运行于当前主机;S32:当目标应用未运行于当前主机,通过执行步骤S20再度尝试获得锁;S33:当目标应用已运行于当前主机,则调用应用停止脚本停止目标应用后执行步骤S20再度尝试获得锁。S40:如获取锁成功,启动应用或确认应用开启后定时的检测应用的运行状态;其中,步骤S40包括:S41:检查目标应用当前是否运行于当前主机;S42:当目标应用未运行于当前主机,则调用应用开启脚本开启目标应用;S43:定时的检测应用的运行状态。S50:如应用运行状态异常,由Lock内嵌模块123在ZooKeeper目录下删除应用运行锁来释放锁。参照图2,本发明Lock内嵌模块123获取目标应用运行锁流程如图所示:步骤1:主机A中HaKeeper首先启动,与ZooKeeper建立连接;步骤2:主机B中HaKeeper启动,与ZooKeeper建立连接;步骤3:主机A及主机B中的HaKeeper通过配置确认需要管控App1与App2两个应用;步骤4:主机A的HaKeeper为App1与App2分别创建lock锁,lock锁即临时序列Znode,提交给Zookeeper,Zookeeper根据App1与App2目录下当前最大序号给lock锁设定序号为1;步骤5:主机B的HaKeeper晚于主机A启动,为App1与App2分别创建lock锁,提交给Zookeeper,Zookeeper根据App1与App2目录下当前最大序号给lock锁设定序号为2;步骤6:主机A的HaKeeper查询App1与App2目录下最小序号锁节点,即查得lock1,与内存中所保存的锁节点名lock1对比,名称一致,判定获得App1与App2应用运行锁,随即在主机A上启动App1与App2;步骤7:主机B的HaKeeper查询App1与App2目录下最小序号锁节点lock1,与内存中所保存的锁节点名lock2对比,名称不一致,判定未获得App1与App2应用运行锁,等待一定时间后再次尝试步骤7;步骤8:主机A的HaKeeper通过监控脚本发现App2失效,立即从ZooKeeperApp1目录下删除应用运行锁lock1;步骤9:主机B的HaKeeper查询App1与App2目录下最小序号锁节点,App1查得lock1,App2查得lock2,与内存中所保存的锁节点名lock2对比,名称一致,判定获得App2应用运行锁,随即在主机B上启动App2,实现App2由主机A切换到主机B;步骤10:主机A的HaKeeper为App2创建lock锁,提交给Zookeeper,Zookeeper根据App2目录下当前最大序号给lock锁设定序号为3;步骤11:主机A的HaKeeper查询App2目录下最小序号锁节点,查得lock2,与内存中所保存的锁节点名lock3对比,名称不一致,判定未获得App2应用运行锁,等待一定时间后再次尝试步骤11。通过以上步骤,实现了在主机A中的程序运行异常时,主机B自动运行该程序,进而实现软件的主备切换。本方法作为常驻进程工具,实时监控并处理目标应用切换或重启事件,代替人工处理;避免了完全依靠维护团队手工维护带来的时效性更差、存在潜在的误操风险等缺点。采用本方案后,仅需要维护HaKeeper正常运转,并实时通过HaKeeper查询目标应用状况,即可轻松完成维护工作,HaKeeper将根据所配置的时间间隔来检查应用状态,目标应用故障迁徙或重启最大间隔可控可调;该方法支持所有可运行于linux之上的应用,通常无需针对不同应用额外开发用于主备切换或故障恢复的模块,如有特定业务需要,可使用本方案提供的扩展sdkSoftwareDevelopmentKit,软件开发工具包,实现特定业务需求,与本方案无缝对接;避免了为每一个有主备切换或故障恢复的应用开发相关模块,或每个公司为各自应用开发一套共通模块的情况。采用本方案后,通常情况下,只需编写简易的对接脚本和配置文件,即可使用本方案实现对多个应用进行管控,无开发成本。如有个别应用存在特殊业务需求时例如:使用复杂的方式判断应用是否失效,是否需要迁徙或重启,可直接使用本方案提供的扩展sdk,针对关键的业务逻辑进行实现,即可与本方案无缝对接,开发成本大大降低。参照图3及图4,本发明实施例提出了一种应用程序主备切换系统,包括:至少两台主机,主机内包括HaKeeper服务模块1、ZooKeeper服务模块2、应用配置文件模块3,HaKeeper服务模块1包括Lock内嵌模块123;HaKeeper服务模块1用于运行HaKeeper服务,由HaKeeper服务读取配置文件模块的文件,获取目标应用的操作脚本;Lock内嵌模块123,由HaKeeper服务控制,通过Lock访问ZooKeeper服务模块2,通过获取锁判断目标应用是否允许运行于当前主机;如Lock内嵌模块123获取锁失败,通过应用配置文件模块3读取目标应用的脚本,停止应用或确认应用关闭后通过Lock内嵌模块123再次尝试获取锁;如Lock内嵌模块123获取锁成功,通过应用配置文件模块3读取目标应用脚本,启动应用或确认应用开启后定时检测应用运行状态;如应用运行状态异常,通过Lock内嵌模块123释放锁,以允许其他主机上运行的HaKeeper服务模块1获得目标应用的锁。具体地:HaKeeper服务模块1执行操作:通过lock内嵌摸为每一目标应用分别创建lock锁,并提交给ZooKeeper服务模块2,lock锁为临时序列Znode;ZooKeeper服务模块2根据目标应用目录下当前最大序号给lock锁设定序号;查询目标应用目录下最小序号锁节点,与内存中所保存的锁节点名对比,如名称一致,则判定获得目标应用的运行锁,如名称不一致,判断目标应用运行锁获取失败;通过Lock内嵌模块123在ZooKeeper目录下删除应用运行锁释放锁。具体地:HaKeeper服务模块1包括配置解析器11及应用监视器12;配置解析器11,为应用配置文件模块3解析组件,用以解析所需管控的目标应用,及目标应用的开启脚本4、停止脚本5、运行状态检测脚本6,并根据目标应用的数量,创建与目标应用一一对应的应用监视器12;应用监视器12,负责一个目标应用的管控工作,利用Lock内嵌模块123获取目标应用运行锁,通过应用状态检查模块121检查目标应用的状态,通过脚本执行器122来调用外部脚本,实现对目标应用的开启、停止、运行状态检测。具体地:应用监视器12包括应用状态检查模块121、脚本执行器122及Lock内嵌模块123;Lock内嵌模块123:用于访问ZooKeeper,利用ZooKeeper序列临时节点特性来创建、检测、释放锁,实现目标应用运行锁的获取与释放;应用状态检查模块121:用于定期执行应用检查,触发锁获取、锁释放的事件,并触发开启、状态检测、停止目标应用的事件;脚本执行器122:用以执行外部shell脚本并获取执行结果,向应用状态检查模块121反馈操作结果。具体地:HaKeeper服务模块1还包括外部命令接收器13、状态查询器14及日志模块15;外部命令接收器13:接收人工发送的命令,将目标应用的开启及停止命令转发给应用监视器12处理,将状态查询命令转发至状态查询器14处理;状态查询器14:接收外部命令接收器13的命令事件通知,通过ZooKeeper查询所管控的目标应用当前运行于哪些主机,并将结果以日志的形式发送至日志模块15;日志模块15:收集每个应用监视器12及状态查询器14产生的日志,在主机本地目录以日志文件形式进行输出。本方案为目标企业提供简单易用的主备切换与故障恢复工具,可同时支持多种不同目标应用的相关需求,只需简单对接,即可投入使用。人工成本仅需增加对HaKeeper的维护即可;采用本方案前,目标企业需针对每一个需要主备切换与故障恢复的应用配备监控与维护团队,且需要长期持续投入人力,随着应用增加,投入人力随之增加。采用本方案后,本方案可自动监控各类应用,发现目标应用故障或失效后立即进行快速切换或重启,企业仅需安排少量人力监控HaKeeper运行状况即可;本方案为目标企业提供统一的部署、对接、维护方案;避免了因在维护操作的处理规范上没有统一标准,维护团队培养难度大的缺点。采用本方案后,维护工作趋于统一,大幅简化,学习成本显著降低;以上结合附图对本发明的实施方式作了详细说明,但本发明不限于所描述的实施方式。对于本领域的技术人员而言,在不脱离本发明原理和精神的情况下,对这些实施方式进行多种变化、修改、替换和变型,仍落入本发明的保护范围内。

权利要求:1.一种应用程序主备切换方法,其特征在于:包括步骤:S10:启动HaKeeper服务,由HaKeeper服务读取配置文件,获取目标应用的操作脚本;S20:HaKeeper根据Lock访问ZooKeeper目录,通过获取锁判断目标应用是否允许运行于当前主机;S30:如获取锁失败,停止应用或确认应用关闭后执行步骤S20;S40:如获取锁成功,启动应用或确认应用开启后定时的检测应用的运行状态;S50:如应用运行状态异常,由lock内嵌模块释放锁,以允许其他主机上运行的HaKeeper获得目标应用的锁。2.根据权利要求1所述的应用程序主备切换方法,其特征在于:步骤S20包括:S21:通过配置确认需要管控的目标应用;S22:为每一目标应用分别创建lock锁,并提交给Zookeeper,lock锁为临时序列Znode;S23:Zookeeper根据目标应用目录下当前最大序号给lock锁设定序号;S24:查询目标应用目录下最小序号锁节点,与内存中所保存的锁节点名对比,如名称一致,则判定获得目标应用的运行锁;S25:如名称不一致,判断目标应用运行锁获取失败。3.根据权利要求1所述的应用程序主备切换方法,其特征在于:步骤S50中释放锁通过ZooKeeper在目标应用目录下删除应用运行锁来实现。4.根据权利要求1所述的通用应用程序主备切换方法,其特征在于:步骤S30包括:S31:检查目标应用是否运行于当前主机;S32:当目标应用未运行于当前主机,则执行步骤S20;S33:当目标应用已运行于当前主机,则调用应用停止脚本停止目标应用后执行步骤S20。5.根据权利要求1所述的应用程序主备切换方法,其特征在于:步骤S40包括:S41:检查目标应用当前是否运行于当前主机;S42:当目标应用未运行于当前主机,则调用应用开启脚本开启目标应用;S43:定时的检测应用的运行状态。6.一种应用程序主备切换系统,其特征在于:包括:至少两台主机,每台主机内包括HaKeeper服务模块、ZooKeeper服务模块、应用配置文件模块,所述HaKeeper服务模块包括lock内嵌模块;所述HaKeeper服务模块,用于运行HaKeeper服务,由HaKeeper服务读取所述配置文件模块的文件,获取目标应用的操作脚本;所述lock内嵌模块,由HaKeeper服务控制,通过Lock访问所述ZooKeeper服务模块,通过获取锁判断目标应用是否允许运行于当前主机;如所述lock内嵌模块获取锁失败,通过所述应用配置文件模块读取目标应用的脚本,停止应用或确认应用关闭后通过所述lock内嵌模块再次尝试获取锁;如所述lock内嵌模块获取锁成功,通过所述应用配置文件模块读取目标应用脚本,启动应用或确认应用开启后定时检测应用运行状态;如应用运行状态异常,通过所述lock内嵌模块释放锁,以允许其他主机上运行的HaKeeper服务模块获得目标应用的锁。7.根据权利要求6所述的应用程序主备切换系统,其特征在于:所述HaKeeper服务模块执行所述操作:通过所述lock内嵌摸为每一目标应用分别创建lock锁,并提交给所述Zookeeper服务模块,lock锁为临时序列Znode;所述Zookeeper服务模块根据目标应用目录下当前最大序号给lock锁设定序号;查询目标应用目录下最小序号锁节点,与内存中所保存的锁节点名对比,如名称一致,则判定获得目标应用的运行锁,如名称不一致,判断目标应用运行锁获取失败;通过ZooKeeper在目标应用目录下删除应用运行锁释放锁。8.根据权利要求6所述的应用程序主备切换系统,其特征在于:所述HaKeeper服务模块包括配置解析器及应用监视器;所述配置解析器,为应用配置文件模块解析组件,用以解析所需管控的目标应用及目标应用的开启脚本、停止脚本、运行状态检测脚本,并根据目标应用的数量,创建与目标应用一一对应的所述应用监视器;所述应用监视器,负责一个目标应用的管控工作,利用所述Lock内嵌模块获取目标应用的运行锁,通过所述应用状态检查模块检查目标应用的状态,通过脚本执行器来调用外部脚本,实现对目标应用的开启、停止及运行状态检测。9.根据权利要求8所述的应用程序主备切换系统,其特征在于:所述应用监视器包括应用状态检查模块、脚本执行器及所述Lock内嵌模块;所述Lock内嵌模块:用于访问ZooKeeper,利用ZooKeeper序列临时节点特性来创建、检测、释放锁,实现目标应用运行锁的获取与释放;所述应用状态检查模块:用于定期执行应用检查,触发锁获取、锁释放的事件,并触发开启、状态检测、停止目标应用的事件;脚本执行器:用以执行外部shell脚本并获取执行结果,向所述应用状态检查模块反馈操作结果。10.根据权利要求9所述的应用程序主备切换系统,其特征在于:HaKeeper服务模块还包括外部命令接收器、状态查询器及日志模块;所述外部命令接收器:接收人工发送的命令,将目标应用的开启及停止命令转发给所述应用监视器处理,将状态查询命令转发至所述状态查询器处理;所述状态查询器:接收所述外部命令接收器的命令事件通知,通过ZooKeeper查询所管控的目标应用当前运行于哪些主机,并将结果发送至所述日志模块;所述日志模块:收集每个所述应用监视器及所述状态查询器产生的日志,在主机本地进行输出。

百度查询: 福建新大陆软件工程有限公司 应用程序主备切换方法及系统

免责声明
1、本报告根据公开、合法渠道获得相关数据和信息,力求客观、公正,但并不保证数据的最终完整性和准确性。
2、报告中的分析和结论仅反映本公司于发布本报告当日的职业理解,仅供参考使用,不能作为本公司承担任何法律责任的依据或者凭证。