本申请公开了一种组件升级方法、装置、设备及介质,涉及计算机技术领域,包括:获取并解析目标页面发起的页面升级请求,并基于页面升级请求遍历各待升级组件的目标节点;基于目标节点生成相应的节点升级命令,并将节点升级命令写入数据库,然后唤醒调度线程,以及通过调度线程判断数据库中是否存在节点升级命令;若存在,则启动用于批量下发任务的目标进程从预先定义的配置文件中读取预设单批次任务数量,并基于预设单批次任务数量下发相应数量个节点升级命令至对应的待升级组件以执行节点升级命令。当需要对组件进行升级时,本申请通过采取批量下发节点升级命令至待升级组件的方式,能够有效缓解服务器压力,并提升服务组件升级的稳定性。升级的稳定性。升级的稳定性。
【技术实现步骤摘要】
一种组件升级方法、装置、设备及介质
[0001]本专利技术涉及计算机
,特别涉及一种组件升级方法、装置、设备及介质。
技术介绍
[0002]Ambari是一种基于Web的工具,支持Apache Hadoop集群的供应、管理和监控;Ambari server是Ambari的server程序,主要管理部署在每个节点上的管理监控程序。当前,现有的Ambari组件升级架构如图1中所示,在Ambari技术体系下,是通过Ambari server一次性发送升级指令到所有节点。也即Ambari原始的组件升级命令是,无论有多少节点,都会一次性下发所有节点的升级命令,那么,Ambari server处理的数据量=节点数*命令。然而,Ambari server部分原生代码设计时没有考虑过实际生产环境的大规模节点,使得大规模升级组件的请求一次性下发,会导致现有的Ambari组件升级方式在大规模集群上部署时稳定性较差的情况。由于网络通信以及硬件原因,当节点数过大,升级命令过多时,一次处理过多节点的升级请求命令则会使得Ambari server服务器处理压力过大,容易出现宕机,内存溢出,组件升级失败,数据库信息不一致的问题。
[0003]综上,如何提高组件升级的稳定性,并缓解服务器的压力是目前有待解决的问题。
技术实现思路
[0004]有鉴于此,本专利技术的目的在于提供一种组件升级方法、装置、设备及介质,能够提高组件升级的稳定性,并缓解服务器的压力。其具体方案如下:
[0005]第一方面,本申请公开了一种组件升级方法,包括:
[0006]获取并解析目标页面发起的页面升级请求,并基于所述页面升级请求遍历各待升级组件的目标节点;
[0007]基于所述目标节点生成相应的节点升级命令,并将所述节点升级命令写入数据库,然后唤醒调度线程,以及通过所述调度线程判断所述数据库中是否存在所述节点升级命令;
[0008]若存在,则启动用于批量下发任务的目标进程从预先定义的配置文件中读取预设单批次任务数量,并基于所述预设单批次任务数量下发相应数量个节点升级命令至对应的待升级组件以执行所述节点升级命令。
[0009]可选的,所述基于所述页面升级请求遍历待升级组件的目标节点之后,还包括:
[0010]基于所述目标节点生成用于表征节点升级顺序的有向无环图,并对所述有向无环图划分调度阶段。
[0011]可选的,所述基于所述预设单批次任务数量下发相应数量个节点升级命令至对应的待升级组件以执行所述节点升级命令,包括:
[0012]基于所述预设单批次任务数量并按照所述有向无环图中的所述节点升级顺序下发相应数量个节点升级命令至对应的待升级组件以执行所述节点升级命令。
[0013]可选的,所述唤醒调度线程之后,还包括:
[0014]确定当前的目标节点数量,并基于所述目标节点数量对所述配置文件中设置的所述预设单批次任务数量进行动态调整。
[0015]可选的,所述基于所述预设单批次任务数量下发相应数量个节点升级命令至对应的待升级组件以执行所述节点升级命令之后,还包括:
[0016]获取所述待升级组件执行所述节点升级命令后的升级状态,并基于升级状态更新所述数据库中的节点升级命令。
[0017]可选的,所述基于所述预设单批次任务数量下发相应数量个节点升级命令至对应的待升级组件以执行所述节点升级命令之后,还包括:
[0018]获取所述待升级组件中所述节点升级命令的执行状态,并判断所述执行状态是否满足预设条件;
[0019]若满足,则通过监控线程确定当前的目标节点数量,并基于所述目标节点数量对所述预设单批次任务数量进行动态调整;
[0020]启动所述目标进程,并基于调整后的所述预设单批次任务数量下发下一批次的相应数量个节点升级命令至对应的待升级组件以执行所述节点升级命令。
[0021]可选的,所述判断所述执行状态是否满足预设条件,包括:
[0022]判断所述执行状态是否为执行完成状态或执行超时状态。
[0023]第二方面,本申请公开了一种组件升级装置,包括:
[0024]待升级组件确定模块,用于获取并解析目标页面发起的页面升级请求,并基于所述页面升级请求遍历各待升级组件的目标节点;
[0025]升级命令确定模块,用于基于所述目标节点生成相应的节点升级命令,并将所述节点升级命令写入数据库,然后唤醒调度线程,以及通过所述调度线程判断所述数据库中是否存在所述节点升级命令;
[0026]组件升级模块,用于若存在,则利用目标任务线程从预先定义的配置文件中读取预设单批次任务数量,并基于所述预设单批次任务数量下发相应数量个节点升级命令至对应的待升级组件以执行所述节点升级命令。
[0027]第三方面,本申请公开了一种电子设备,包括:
[0028]存储器,用于保存计算机程序;
[0029]处理器,用于执行所述计算机程序,以实现前述公开的组件升级方法的步骤。
[0030]第四方面,本申请公开了一种计算机可读存储介质,用于存储计算机程序;其中,所述计算机程序被处理器执行时实现前述公开的组件升级方法的步骤。
[0031]可见,本申请获取并解析目标页面发起的页面升级请求,并基于所述页面升级请求遍历各待升级组件的目标节点;基于所述目标节点生成相应的节点升级命令,并将所述节点升级命令写入数据库,然后唤醒调度线程,以及通过所述调度线程判断所述数据库中是否存在所述节点升级命令;若存在,则启动用于批量下发任务的目标进程从预先定义的配置文件中读取预设单批次任务数量,并基于所述预设单批次任务数量下发相应数量个节点升级命令至对应的待升级组件以执行所述节点升级命令。由此可见,本申请在获取到目标页面发起的页面升级请求后,则通过对该页面升级请求进行解析以确定出待升级组件的目标节点,并生成与目标节点相应的节点升级命令以及存储至数据库,然后唤醒调度线程并通过该调度线程判断数据库中是否存在节点升级命令,若存在,则启动一个用于批量下
发任务的目标进程读取配置文件中的预设单批次任务数量,以便根据该预设单批次任务数量下发本批次的节点升级命令至待升级组件以实现组件中节点的升级。如此一来,相比于现有技术中一次性下发所有节点升级命令,本申请通过采取批量下发节点升级命令至待升级组件的方式,能够有效缓解服务器压力,提升服务组件升级的稳定性,并进一步避免服务器出现宕机,内存溢出等情况。
附图说明
[0032]为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
[0033]图1为本申请公开的一种现有的Ambari组件升级架构示意图;
[0034]图2为本申请公开的一种组件升级方法流程图;
[0035]图3为本申请公开本文档来自技高网...
【技术保护点】
【技术特征摘要】
1.一种组件升级方法,其特征在于,包括:获取并解析目标页面发起的页面升级请求,并基于所述页面升级请求遍历各待升级组件的目标节点;基于所述目标节点生成相应的节点升级命令,并将所述节点升级命令写入数据库,然后唤醒调度线程,以及通过所述调度线程判断所述数据库中是否存在所述节点升级命令;若存在,则启动用于批量下发任务的目标进程从预先定义的配置文件中读取预设单批次任务数量,并基于所述预设单批次任务数量下发相应数量个节点升级命令至对应的待升级组件以执行所述节点升级命令。2.根据权利要求1所述的组件升级方法,其特征在于,所述基于所述页面升级请求遍历待升级组件的目标节点之后,还包括:基于所述目标节点生成用于表征节点升级顺序的有向无环图,并对所述有向无环图划分调度阶段。3.根据权利要求2所述的组件升级方法,其特征在于,所述基于所述预设单批次任务数量下发相应数量个节点升级命令至对应的待升级组件以执行所述节点升级命令,包括:基于所述预设单批次任务数量并按照所述有向无环图中的所述节点升级顺序下发相应数量个节点升级命令至对应的待升级组件以执行所述节点升级命令。4.根据权利要求1所述的组件升级方法,其特征在于,所述唤醒调度线程之后,还包括:确定当前的目标节点数量,并基于所述目标节点数量对所述配置文件中设置的所述预设单批次任务数量进行动态调整。5.根据权利要求1所述的组件升级方法,其特征在于,所述基于所述预设单批次任务数量下发相应数量个节点升级命令至对应的待升级组件以执行所述节点升级命令之后,还包括:获取所述待升级组件执行所述节点升级命令后的升级状态,并基于升级状态更新所述数据库中的节点升级命令。6.根据权利要求1至5任一项所述的组件升级...
【专利技术属性】
技术研发人员:董开元,
申请(专利权)人:济南浪潮数据技术有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。