CN112099825B - 组件进行升级的方法、装置、设备及存储介质 - Google Patents
组件进行升级的方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN112099825B CN112099825B CN202010955045.XA CN202010955045A CN112099825B CN 112099825 B CN112099825 B CN 112099825B CN 202010955045 A CN202010955045 A CN 202010955045A CN 112099825 B CN112099825 B CN 112099825B
- Authority
- CN
- China
- Prior art keywords
- component
- version information
- upgrade
- installation package
- detection thread
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 153
- 230000008569 process Effects 0.000 claims abstract description 120
- 238000001514 detection method Methods 0.000 claims abstract description 72
- 238000009434 installation Methods 0.000 claims abstract description 71
- 238000012545 processing Methods 0.000 claims description 10
- 238000004891 communication Methods 0.000 claims description 9
- 238000004590 computer program Methods 0.000 claims description 8
- 238000012423 maintenance Methods 0.000 abstract description 9
- 238000007726 management method Methods 0.000 description 11
- 239000003795 chemical substances by application Substances 0.000 description 7
- 238000010586 diagram Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 238000012544 monitoring process Methods 0.000 description 3
- 238000012795 verification Methods 0.000 description 3
- 230000002093 peripheral effect Effects 0.000 description 2
- 238000013500 data storage Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000000802 evaporation-induced self-assembly Methods 0.000 description 1
- 230000008570 general process Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本申请涉及一种组件进行升级的方法、装置、设备及存储介质,应用于部署有组件的云服务器,组件在运行状态中的进程包括主进程和升级检测线程,方法包括:升级检测线程每间隔设定周期获取组件的元数据信息,元数据信息中包括组件最新的第一版本信息;升级检测线程确定第一版本信息和组件当前运行的第二版本信息是否相同,如果不相同,则确定主进程中是否有正在运行的任务;如果主进程中没有正在运行的任务,则获取组件的与第一版本信息对应的安装包;升级检测线程在获取到第一版本信息对应的安装包后发出第一停止信号;主进程在检测到第一停止信号后,结束自身进程。用以解决运维人员手动进行组件升级所导致的升级效率低、人为因素影响大的问题。
Description
技术领域
本申请涉及分布式处理技术领域,尤其涉及一种对云服务器中分布式系统的组件进行升级方法、装置、设备及存储介质。
背景技术
互联网技术发展至今,特别是大数据技术,核心原理是通过分布式系统解决单机数据处理能力、提升多机处理的系统稳定性。所谓分布式系统是指多机部署,通过网络通信的系统。分布式系统中具体部署在每台机器上的软件、服务、进程等称为组件。
分布式系统的规模一般都比较大,可以达到千级到万级的设备规模。分布式系统中组件升级一般是比较频繁的,组件升级需要保证新的安装包重启过程中,不影响组件的服务。
现有的分布式系统中组件升级方案为:运维人员将新的安装包(一般是rpm包)通过ansible或scp等方式拷贝到需要升级的设备上,手动进行安装。该升级方案全程需要运维人员参与,升级效率低,且升级是否成功主要依赖于运维人员的水平,人为因素影响大。
发明内容
本申请提供了一种对云服务器中分布式系统的组件进行升级的方法、装置、设备及存储介质,用以解决运维人员手动进行组件升级所导致的升级效率低、人为因素影响大的问题。
第一方面,本申请实施例提供了一种对云服务器中分布式系统的组件进行升级的方法,应用于部署有组件的云服务器,所述组件在运行状态中的进程包括主进程和升级检测线程,所述方法包括:
所述升级检测线程每间隔设定周期获取组件的元数据信息,其中,所述元数据信息中包括所述组件最新的第一版本信息;
所述升级检测线程确定所述第一版本信息和所述组件当前运行的第二版本信息是否相同,如果不相同,则确定所述主进程中是否有正在运行的任务;如果所述主进程中没有正在运行的任务,则获取所述组件的与所述第一版本信息对应的安装包;
所述升级检测线程在获取到所述第一版本信息对应的安装包后发出第一停止信号;
所述主进程在检测到所述第一停止信号后,结束自身进程。
可选地,所述云服务器中还运行有用于对所述组件的进程进行检测的进程管理模块,所述进程管理模块在检测到所述主进程结束后,基于所述第一版本信息对应的安装包重新启动所述组件的进程。
可选地,所述升级检测线程在获取到所述第一版本信息对应的安装包后,对所述第一版本信息对应的安装包检测无误后发出所述第一停止信号;
其中,对所述第一版本信息对应的安装包检测包括:对所述第一版本信息对应的安装包中的所有文件的校验码进行校验。
可选地,所述元数据信息中还包括灰度信息,所述灰度信息包括:灰度服务器名称和灰度升级策略;
所述获取所述组件的与所述第一版本信息对应的安装包,包括:
所述升级检测线程根据所述灰度服务器名称和所述灰度升级策略,获取所述组件的与所述第一版本信息对应的安装包。
可选地,所述灰度升级策略包括:全局开关变量和对应的当前值;所述根据所述灰度服务器名称和所述灰度升级策略,获取所述组件的与所述第一版本信息对应的安装包,包括:
所述升级检测线程在所述全局开关变量对应的当前值为第一预设值,且所述组件当前所在的云服务器名称与所述灰度服务器名称相同的条件下,获取所述组件的与所述第一版本信息对应的安装包。
可选地,所述灰度升级策略包括:全局开关变量和对应的当前值;所述根据所述灰度服务器名称和所述灰度升级策略,确定是否获取所述组件的与所述第一版本信息对应的安装包,包括:
所述升级检测线程在所述全局开关变量对应的当前值为第二预设值,所述组件当前所在的云服务器名称与所述灰度服务器名称相同或不相同的条件下,获取所述组件的与所述第一版本信息对应的安装包。
可选地,所述基于所述第一版本信息对应的安装包重新启动所述组件的进程之后,所述方法还包括:
所述升级检测线程将所述第二版本信息对应的安装包中,所述第二版本信息修改为最新的第三版本信息,将所述元数据信息中所述组件最新的第一版本信息修改为所述第三版本信息;
所述升级检测线程获取所述元数据信息中所述第三版本信息,确定所述组件当前运行的第一版本信息与所述第三版本信息不相同,且确定所述主进程中没有正在运行的任务时,获取所述第三版本信息对应的安装包;
所述升级检测线程在获取到所述第三版本信息对应的安装包后发出第二停止信号;
所述主进程在检测到所述第二停止信号后,结束自身进程。
第二方面,本申请实施例提供了一种对云服务器中分布式系统的组件进行升级的装置,应用于部署有组件的云服务器,所述组件在运行状态中的进程包括主进程和升级检测线程,包括:
获取模块,用于所述升级检测线程每间隔设定周期获取组件的元数据信息,其中,所元数据信息中包括所述组件最新的第一版本信息;
升级模块,用于所述升级检测线程确定所述第一版本信息和所述组件当前运行的第二版本信息是否相同,如果不相同,则确定所述主进程中是否有正在运行的任务;如果所述主进程中没有正在运行的任务,则获取所述组件的与所述第一版本信息对应的安装包;
发出模块,用于所述升级检测线程在获取到所述第一版本信息对应的安装包后发出第一停止信号;
结束模块,用于所述主进程在检测到所述第一停止信号后,结束自身进程。
第三方面,本申请实施例提供了一种电子设备,包括:处理器、存储器和通信总线,其中,处理器和存储器通过通信总线完成相互间的通信;
所述存储器,用于存储计算机程序;
所述处理器,用于执行所述存储器中所存储的程序,实现第一方面所述的方法。
第四方面,本申请实施例提供了一种计算机可读存储介质,存储有计算机程序,所述计算机程序被处理器执行时实现第一方面所述的方法。
本申请实施例提供的上述技术方案与现有技术相比具有如下优点:本申请实施例提供的该方法,组件在运行状态中的升级检测线程通过定期获取组件的元数据信息,从该元数据信息中获取该组件最新的第一版本信息,在确定组件当前运行的第二版本信息与第一版本信息不相同的情况下,如果主进程中没有正在运行的任务,则获取该组件的与第一版本信息对应的安装包,并在获取到该安装包后发出第一停止信号,主进程在检测到第一停止信号后结束自身进程,使得主进程再次启动后即采用升级后的版本运行。从而实现了组件版本信息的自动监控和获取,并能够在判定组件当前运行版本与组件最新版本不相同时,自动对组件进行升级,该升级方案全程无需运维人员参与,升级效率高,升级过程不需要依赖运维人员的水平,摆脱了人为因素影响。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并与说明书一起用于解释本发明的原理。
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例中组件升级过程示意图;
图2为本申请实施例中组件升级的具体实施过程示意图;
图3为本申请实施例中对云服务器中分布式系统的组件进行升级的装置的结构示意图;
图4为本申请实施例中电子设备的结构示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请的一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。
首先,对本申请实施例描述过程中出现的部分名词或者术语适用于如下解释:
rpm,英文全称为Red-Hat Package Manager,中文翻译为软件包管理器,是一种用于互联网下载包的打包及安装工具。
ansible,ansible是一种自动化运维工具,基于Python开发,集合了众多运维工具的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能。
scp,英文全称为secure copy,scp是Linux系统下基于完全外壳协议(ssh)登陆的远程文件拷贝命令。
md5,MD5 Message-Digest Algorithm,一种被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值(hash value),用于确保信息传输完整一致。
toml,一种配置文件格式。
元数据(Metadata),又称中介数据、中继数据,为描述数据的数据(data aboutdata),主要是描述数据属性(property)的信息,用来支持如指示存储位置、历史数据、资源查找、文件记录等功能。这里的元数据信息主要是用于描述组件最新的版本信息。
本申请实施例中,为了实现对云服务器中分布式系统的组件的自动升级,提出了一种对云服务器中分布式系统的组件进行升级的方法,该方法可以应用于分布式系统中部署有组件的任意云服务器。当然,根据需要,可以应用于分布式系统中的部分云服务器,也可以应用于分布式系统中的全部云服务器。为了便于理解,以下实施例中,仅以一个云服务器中的组件升级过程为例进行说明。
其中,组件在运行状态中的进程包括主进程和升级检测线程。
如图1所示,对云服务器中分布式系统的任意一个组件进行升级的过程主要包括:
步骤101,升级检测线程每间隔设定周期获取组件的元数据信息,其中,该元数据信息中包括该组件最新的第一版本信息。
一个具体实施例中,在每次出现组件最新的版本信息后,将组件的最新的版本信息保存在该组件的元数据(meta)信息中,该元数据信息可以保存在指定的云对象存储空间中,组件的升级检测线程每间隔设定周期(例如每分钟)从指定的云对象存储空间中获取该组件的元数据信息。
其中,指定的云对象存储空间,是由组件最新的版本信息的生成设备(或设计人员),与云服务器中组件的升级检测线程相互约定,也就是说,预先在组件的升级检测线程中配置该云对象存储空间,以使得该升级检测线程能够定期从该云对象存储空间中,获取组件的元数据信息。
需要说明的是,这里将组件的元数据信息保存在指定的云对象存储空间中,但这并不表示组件的元数据信息只能够存储在云对象存储空间,可以理解的是,组件的元数据信息可以存储在任意一种形式的存储空间中,只需要满足组件的在运行状态中的进程能够访问该存储空间并读取其中存储的元数据信息即可。
步骤102,升级检测线程确定第一版本信息和组件当前运行的第二版本信息是否相同,如果不相同,则确定主进程中是否有正在运行的任务;如果主进程中没有正在运行的任务,则获取组件的与第一版本信息对应的安装包。
步骤103,升级检测线程在获取到第一版本信息对应的安装包后发出第一停止信号。
步骤104,主进程在检测到第一停止信号后,结束自身进程。
一个具体实施例中,云服务器中还运行有用于对组件的进程进行检测的进程管理模块,进程管理模块在检测到主进程结束后,基于第一版本信息对应的安装包重新启动组件的进程,包括主进程和升级检测线程,使得重新启动后该组件基于升级后的第一版本运行。
一个具体实施例中,升级检测线程在根据第一版本信息和第二版本信息,确定第二版本与第一版本不相同时,若获得组件的主进程当前正在执行任务,等待主进程执行完毕该任务后,关闭该组件的任务提交入口,以使该组件停止执行新的任务,之后即时获得该组件的第一版本信息对应的安装包,以用于升级该组件。从而使得组件升级不影响组件的正常服务。
例如,第一版本的信息中包括第一版本号,第二版本的信息中包括第二版本号,若第一版本号与第二版本号不相同,则需要升级。
一个具体实施例中,升级检测线程在升级组件的过程中,通过升级更新命令获取组件第一版本信息对应的安装包,以将该组件升级为第一版本,并对该第一版本信息对应的安装包检测无误后发出第一停止信号。其中,对第一版本信息对应的安装包检测,具体可以包括对该第一版本信息对应的安装包中的所有文件的校验码进行校验,在验证第一版本信息对对应的安装包中的所有文件的校验码一致后,确定该组件升级成功。通过验证码校验,能够防止安装包中内容被篡改,保证安装包的完整性。
其中,校验码可以为文件的md5(信息摘要算法)值。当然,校验码也可以采用其他形式,只要能够校验安装包的完整性和安全性即可。
其中,升级更新命令具体为yum upgrade命令。
一个具体实施例中,升级检测线程在组件升级成功后,发出第一停止(stop)信号,主进程在获取到该停止信号后,结束,则该主进程死亡。进程管理模块在监测到该组件的主进程死亡后,重启该组件的主进程,则该组件使用更新后的安装包运行。其中,进程管理模块可以是用Python开发的一套通用的进程管理程序,也称为Supervisor,该进程管理模块能将一个普通的命令行转换为后台进程,并监控进程状态,在该进程异常退出时自动重启。
一个具体实施例中,可以采用灰度升级的方式,对分布式系统中的一部分云服务器中的组件进行升级。所谓灰度升级是指只对上线的部分云服务器进行组件升级,如果组件升级后验证成功,则对所有云服务器进行组件升级。具体地,元数据信息中包括灰度信息,该灰度信息包括灰度服务器名称和灰度升级策略。在每间隔设定周期获取组件的元数据信息之后,从该元数据信息中获取灰度服务器名称和灰度升级策略,根据该灰度服务器名称和该灰度升级策略,获取该组件的与该第一版本信息对应的安装包,以对组件进行升级。
具体地,灰度升级策略包括全局开关变量和对应的当前值,升级检测线程在全局开关变量对应的当前值为第一预设值,且该组件当前所在的云服务器名称与灰度服务器名称相同的条件下,升级该组件,即获取该组件的与第一版本信息对应的安装包。如果不满足该条件,则不升级该组件。
通过该全局开关变量对是否使用灰度升级进行控制,具体地,升级检测线程每间隔设定周期获取组件的元数据信息之后,获取全局开关变量的取值,在获得全局开关变量对应的当前值为第一预设值,则进行灰度升级,即只升级灰度服务器中的组件,其中,第一预设值用于指示在组件当前所在的云服务器名称与灰度服务器名称相同时,进行组件升级。
具体地,如果全局开关变量对应的当前值为第二预设值,则对分布式系统中每个云服务器中部署的组件进行升级,不需要对组件当前所在的云服务器名称与灰度服务器名称是否相同进行判断。也就是说,升级检测线程在全局开关变量对应的当前值为第二预设值,组件当前所在的云服务器名称与灰度服务器名称相同或不相同的条件下,均获取该组件的与第一版本信息对应的安装包。其中,第二预设值用于指示对分布式系统中每个云服务器中部署的组件进行升级。
例如,组件的升级检测线程定时从云对象存储系统的指定路径中获取agent.meta,agent.meta是记录着组件最新版本(version)信息,以及灰度信息等相关信息。agent.meta是一个toml文件,组件的升级检测线程从toml文件中获取最新版本信息,并使用upgrade命令升级时,rpm安装执行post-install.sh,自动将组件当前运行版本替换为最新版本,其中,agent.meta具体包含的信息内容如下:组件名称、版本号信息、灰度信息;其中,灰度信息包括:灰度服务器名称和灰度策略;灰度策略包括:全局开关变量和对应的当前值。
具体代码实现中,例如:agent.meta可以为:
name:组件名称
version:1.0.1#版本号信息,1.0.1代表版本号命名的格式要求
gray:#以下为灰度升级的配置
nodes:#灰度云服务器
-node1#灰度云服务器名称为node1
upgrade_type:no#upgrade_type取值为0.不升级,取值为1.只升级nodes指定的agent,upgrade_type取值为2.全部升级,no表示全局开关未启用。
其中,agent.meta存在组件自升级的一些元数据,包括gray(灰度信息),如果组件当前所在的云服务器名称与灰度云服务器名称相同,且meta中的最新版本比组件当前运行版本高,则需要进行升级。
upgrade_type为全局开关变量,如果全局开关变量的当前值为0,则即使满足升级条件也不升级,如果全局开关变量的当前值为1,则只对灰度云服务器中的组件进行升级,如果全局开关变量的当前值为2则在任意云服务器中的组件,只要meta中的最新版本比组件当前运行版本高即进行升级。
一个具体实施例中,在升级组件之后,如果有缺陷(bug)或者服务异常,则需要将该组件回退到升级之前的版本,即重新部署升级之前版本的服务,如灰度升级之前版本的服务,该过程也称为回滚。该具体实施例中,可以对该组件升级之前的版本的版本信息进行修改,使修改后的版本高于该组件当前运行的版本,执行步骤101至步骤104的组件升级过程,即可将该组件回退到升级之前的版本。
具体地,进程管理模块基于第一版本信息对应的安装包重新启动组件的进程之后,升级检测线程将第二版本信息对应的安装包中,第二版本信息修改为最新的第三版本信息,将元数据信息中该组件最新的第一版本信息修改为第三版本信息;升级检测线程获取元数据信息中第三版本信息,确定组件当前运行的第一版本信息与第三版本信息不相同,且确定主进程中没有正在运行的任务时,获取第三版本信息对应的安装包;升级检测线程在获取到第三版本信息对应的安装包后发出第二停止信号;主进程在检测到第二停止信号后,结束自身进程。
进程管理模块基于第三版本信息对应的安装包重新启动该组件的进程,该组件安装运行第三版本,即回退到第二版本。
一个具体实施例中,如图2所示,组件升级的具体实施过程如下:
步骤201,启动组件的升级检测线程;
步骤202,组件的升级检测线程每分钟从云对象存储系统获取组件meta;
步骤203,组件的升级检测线程读取meta,获取meta中组件待更新版本号;
步骤204,组件的升级检测线程判断组件当前运行版本与待更新版本是否相同,若相同,则转去执行步骤202,若不相同,执行步骤205;
步骤205,组件的升级检测线程判断组件的主进程是否正在执行任务,若是,执行步骤206,否则,执行步骤207;
步骤206,组件的升级检测线程等待主进程任务执行完毕后,转去执行步骤205;
步骤207,组件的升级检测线程执行yum upgrade命令,升级组件至待更新版本;
步骤208,组件的升级检测线程升级组件完毕后,通知组件的主进程,组件的主进程退出;
步骤209,进程管理模块(Supervisor)监测到组件的主进程退出,重新启动该组件的进程。
本申请实施例中,通过定期获取组件的元数据信息,从该元数据信息中获取组件最新的第一版本的信息,在确定组件运行的第二版本与第一版本不相同的情况下,在组件的主进程停止执行任务时,升级该组件至第一版本。从而实现了组件更新包的自动监控和获取,并能够在判定当前运行版本与最新版本不一致时,自动对组件进行升级,该升级方案全程无需运维人员参与,升级效率高,升级过程不需要依赖运维人员的水平,摆脱了人为因素影响。
基于同一构思,本申请实施例中提供了一种对云服务器中分布式系统的组件进行升级的装置,应用于部署有组件的云服务器,所述组件在运行状态中的进程包括主进程和升级检测线程,该装置的具体实施可参见方法实施例部分的描述,重复之处不再赘述,如图3所示,该装置主要包括:
获取模块301,用于所述升级检测线程每间隔设定周期获取组件的元数据信息,其中,所元数据信息中包括所述组件最新的第一版本信息;
升级模块302,用于所述升级检测线程确定所述第一版本信息和所述组件当前运行的第二版本信息是否相同,如果不相同,则确定所述主进程中是否有正在运行的任务;如果所述主进程中没有正在运行的任务,则获取所述组件的与所述第一版本信息对应的安装包;
发出模块303,用于所述升级检测线程在获取到所述第一版本信息对应的安装包后发出第一停止信号;
结束模块304,用于所述主进程在检测到所述第一停止信号后,结束自身进程。
本申请实施例中,通过获取模块定期获取组件的元数据信息,升级模块302从在确定组件运行的第二版本与元数据信息中组件最新的第一版本不相同的情况下,在组件的主进程停止执行任务时,升级该组件至第一版本。从而实现了组件更新包的自动监控和获取,并能够自动对组件进行升级,该升级方案全程无需运维人员参与,升级效率高,升级过程不需要依赖运维人员的水平,摆脱了人为因素影响。
基于同一构思,本申请实施例中还提供了一种电子设备,如图4所示,该电子设备主要包括:处理器401、存储器402和通信总线403,其中,处理器401和存储器402通过通信总线403完成相互间的通信。其中,存储器402中存储有可被至处理器401执行的程序,处理器401执行存储器402中存储的程序,实现如下步骤:所述升级检测线程每间隔设定周期获取组件的元数据信息,其中,所述元数据信息中包括所述组件最新的第一版本信息;所述升级检测线程确定所述第一版本信息和所述组件当前运行的第二版本信息是否相同,如果不相同,则确定所述主进程中是否有正在运行的任务;如果所述主进程中没有正在运行的任务,则获取所述组件的与所述第一版本信息对应的安装包;所述升级检测线程在获取到所述第一版本信息对应的安装包后发出第一停止信号;所述主进程在检测到所述第一停止信号后,结束自身进程。
上述电子设备中提到的通信总线403可以是外设部件互连标准(PeripheralComponent Interconnect,简称PCI)总线或扩展工业标准结构(Extended IndustryStandard Architecture,简称EISA)总线等。该通信总线403可以分为地址总线、数据总线、控制总线等。为便于表示,图4中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
存储器402可以包括随机存取存储器(Random Access Memory,简称RAM),也可以包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。可选地,存储器还可以是至少一个位于远离前述处理器401的存储装置。
上述的处理器401可以是通用处理器,包括中央处理器(Central ProcessingUnit,简称CPU)、网络处理器(Network Processor,简称NP)等,还可以是数字信号处理器(Digital Signal Processing,简称DSP)、专用集成电路(Application SpecificIntegrated Circuit,简称ASIC)、现场可编程门阵列(Field-Programmable Gate Array,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
在本申请的又一实施例中,还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有计算机程序,当该计算机程序在计算机上运行时,使得计算机执行上述实施例中所描述的对云服务器中分布式系统的组件进行升级的方法。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。该计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行该计算机指令时,全部或部分地产生按照本申请实施例所述的流程或功能。该计算机可以时通用计算机、专用计算机、计算机网络或者其他可编程装置。该计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,计算机指令从一个网站站点、计算机、服务器或者数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、微波等)方式向另外一个网站站点、计算机、服务器或数据中心进行传输。该计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。该可用介质可以是磁性介质(例如软盘、硬盘、磁带等)、光介质(例如DVD)或者半导体介质(例如固态硬盘)等。
需要说明的是,在本文中,诸如“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上所述仅是本发明的具体实施方式,使本领域技术人员能够理解或实现本发明。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所申请的原理和新颖特点相一致的最宽的范围。
Claims (9)
1.一种对云服务器中分布式系统的组件进行升级的方法,其特征在于,应用于部署有组件的云服务器,所述组件在运行状态中的进程包括主进程和升级检测线程,所述方法包括:
所述升级检测线程每间隔设定周期获取组件的元数据信息,其中,所述元数据信息中包括所述组件最新的第一版本信息;
所述升级检测线程确定所述第一版本信息和所述组件当前运行的第二版本信息是否相同,如果不相同,则确定所述主进程中是否有正在运行的任务;如果所述主进程中没有正在运行的任务,则获取所述组件的与所述第一版本信息对应的安装包;
所述升级检测线程在获取到所述第一版本信息对应的安装包后发出第一停止信号;
所述主进程在检测到所述第一停止信号后,结束自身进程;
所述云服务器中还运行有用于对所述组件的进程进行检测的进程管理模块,所述进程管理模块在检测到所述主进程结束后,基于所述第一版本信息对应的安装包重新启动所述组件的进程。
2.根据权利要求1所述的方法,其中,所述升级检测线程在获取到所述第一版本信息对应的安装包后,对所述第一版本信息对应的安装包检测无误后发出所述第一停止信号;
其中,对所述第一版本信息对应的安装包检测包括:对所述第一版本信息对应的安装包中的所有文件的校验码进行校验。
3.根据权利要求1所述的方法,其中,所述元数据信息中还包括灰度信息,所述灰度信息包括:灰度服务器名称和灰度升级策略;
所述获取所述组件的与所述第一版本信息对应的安装包,包括:
所述升级检测线程根据所述灰度服务器名称和所述灰度升级策略,获取所述组件的与所述第一版本信息对应的安装包。
4.根据权利要求3所述的方法,其中,所述灰度升级策略包括:全局开关变量和对应的当前值;所述根据所述灰度服务器名称和所述灰度升级策略,获取所述组件的与所述第一版本信息对应的安装包,包括:
所述升级检测线程在所述全局开关变量对应的当前值为第一预设值,且所述组件当前所在的云服务器名称与所述灰度服务器名称相同的条件下,获取所述组件的与所述第一版本信息对应的安装包。
5.根据权利要求3所述的方法,其中,所述灰度升级策略包括:全局开关变量和对应的当前值;所述根据所述灰度服务器名称和所述灰度升级策略,确定是否获取所述组件的与所述第一版本信息对应的安装包,包括:
所述升级检测线程在所述全局开关变量对应的当前值为第二预设值,所述组件当前所在的云服务器名称与所述灰度服务器名称相同或不相同的条件下,获取所述组件的与所述第一版本信息对应的安装包。
6.根据权利要求2所述的方法,其特征在于,所述基于所述第一版本信息对应的安装包重新启动所述组件的进程之后,所述方法还包括:
所述升级检测线程将所述第二版本信息对应的安装包中,所述第二版本信息修改为最新的第三版本信息,将所述元数据信息中所述组件最新的第一版本信息修改为所述第三版本信息;
所述升级检测线程获取所述元数据信息中所述第三版本信息,确定所述组件当前运行的第一版本信息与所述第三版本信息不相同,且确定所述主进程中没有正在运行的任务时,获取所述第三版本信息对应的安装包;
所述升级检测线程在获取到所述第三版本信息对应的安装包后发出第二停止信号;
所述主进程在检测到所述第二停止信号后,结束自身进程。
7.一种对云服务器中分布式系统的组件进行升级的装置,其特征在于,应用于部署有组件的云服务器,所述组件在运行状态中的进程包括主进程和升级检测线程,包括:
获取模块,用于所述升级检测线程每间隔设定周期获取组件的元数据信息,其中,所元数据信息中包括所述组件最新的第一版本信息;
升级模块,用于所述升级检测线程确定所述第一版本信息和所述组件当前运行的第二版本信息是否相同,如果不相同,则确定所述主进程中是否有正在运行的任务;如果所述主进程中没有正在运行的任务,则获取所述组件的与所述第一版本信息对应的安装包;
发出模块,用于所述升级检测线程在获取到所述第一版本信息对应的安装包后发出第一停止信号;
结束模块,用于所述主进程在检测到所述第一停止信号后,结束自身进程;
所述云服务器中还运行有用于对所述组件的进程进行检测的进程管理模块,所述进程管理模块在检测到所述主进程结束后,基于所述第一版本信息对应的安装包重新启动所述组件的进程。
8.一种电子设备,其特征在于,包括:处理器、存储器和通信总线,其中,处理器和存储器通过通信总线完成相互间的通信;
所述存储器,用于存储计算机程序;
所述处理器,用于执行所述存储器中所存储的程序,实现权利要求1至6任一项所述的方法。
9.一种计算机可读存储介质,存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至6任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010955045.XA CN112099825B (zh) | 2020-09-11 | 2020-09-11 | 组件进行升级的方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010955045.XA CN112099825B (zh) | 2020-09-11 | 2020-09-11 | 组件进行升级的方法、装置、设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112099825A CN112099825A (zh) | 2020-12-18 |
CN112099825B true CN112099825B (zh) | 2024-04-09 |
Family
ID=73751736
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010955045.XA Active CN112099825B (zh) | 2020-09-11 | 2020-09-11 | 组件进行升级的方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112099825B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113608765A (zh) * | 2021-08-05 | 2021-11-05 | 北京华云安信息技术有限公司 | 数据处理方法、装置、设备以及存储介质 |
CN116048594B (zh) * | 2022-07-01 | 2023-10-10 | 荣耀终端有限公司 | 软件升级方法及相关装置 |
CN115469940A (zh) * | 2022-07-29 | 2022-12-13 | 天翼云科技有限公司 | 软件服务的处理方法、电子设备及存储介质 |
CN115344289A (zh) * | 2022-08-23 | 2022-11-15 | 北京比特大陆科技有限公司 | 一种客户端升级方法、装置、终端设备及存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2013078951A1 (zh) * | 2011-12-01 | 2013-06-06 | 腾讯科技(深圳)有限公司 | 软件升级方法和系统 |
WO2016086654A1 (zh) * | 2014-12-03 | 2016-06-09 | 广州广电运通金融电子股份有限公司 | 自助终端软件远程升级方法和系统,及升级包制作方法 |
CN107943505A (zh) * | 2017-12-14 | 2018-04-20 | 广东欧珀移动通信有限公司 | 应用升级管理方法、装置、存储介质及电子设备 |
CN108829425A (zh) * | 2018-07-26 | 2018-11-16 | 中国电子科技网络信息安全有限公司 | 一种针对国产操作系统上的应用软件在线升级管控方法 |
CN110069266A (zh) * | 2018-01-24 | 2019-07-30 | 腾讯科技(深圳)有限公司 | 应用升级方法、装置、计算机设备以及存储介质 |
-
2020
- 2020-09-11 CN CN202010955045.XA patent/CN112099825B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2013078951A1 (zh) * | 2011-12-01 | 2013-06-06 | 腾讯科技(深圳)有限公司 | 软件升级方法和系统 |
WO2016086654A1 (zh) * | 2014-12-03 | 2016-06-09 | 广州广电运通金融电子股份有限公司 | 自助终端软件远程升级方法和系统,及升级包制作方法 |
CN107943505A (zh) * | 2017-12-14 | 2018-04-20 | 广东欧珀移动通信有限公司 | 应用升级管理方法、装置、存储介质及电子设备 |
CN110069266A (zh) * | 2018-01-24 | 2019-07-30 | 腾讯科技(深圳)有限公司 | 应用升级方法、装置、计算机设备以及存储介质 |
CN108829425A (zh) * | 2018-07-26 | 2018-11-16 | 中国电子科技网络信息安全有限公司 | 一种针对国产操作系统上的应用软件在线升级管控方法 |
Non-Patent Citations (2)
Title |
---|
分布式系统高效升级方法研究;屠雪真;陈小强;;微型电脑应用(06);全文 * |
电信设备软件自动升级设计与实现;谭亚科;;电子技术(10);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN112099825A (zh) | 2020-12-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112099825B (zh) | 组件进行升级的方法、装置、设备及存储介质 | |
US7873957B2 (en) | Minimizing user disruption during modification operations | |
US7937697B2 (en) | Method, system and computer program for distributing software patches | |
EP2210183B1 (en) | Managing updates to create a virtual machine facsimile | |
CN106909411B (zh) | 一种文件更新方法及装置 | |
US11544052B2 (en) | Tenant declarative deployments with release staggering | |
CN109298962B (zh) | 定时任务的监控方法、计算机可读存储介质和终端设备 | |
CN112905230B (zh) | 应用程序的管理方法、装置、终端设备和存储介质 | |
CN111679888A (zh) | 一种代理容器的部署方法及装置 | |
CN113434180B (zh) | 应用的数据处理方法、装置、服务器和存储介质 | |
CN114640709B (zh) | 一种边缘节点的处理方法、装置及介质 | |
CN109032641B (zh) | 应用版本更新方法及装置 | |
CN108170488B (zh) | 一种升级插件的方法及装置 | |
CN112256283A (zh) | 用于Android设备的应用版本管控方法及装置 | |
CN111176687A (zh) | 一种云主机客户端程序更新方法、装置、设备及存储介质 | |
WO2016131294A1 (zh) | 版本升级处理方法及装置 | |
CN115934390A (zh) | 处理应用程序崩溃的方法、系统和运行应用程序的设备 | |
CN112685063B (zh) | 特征库更新方法、装置、网络设备及可读存储介质 | |
KR102221593B1 (ko) | 단말의 설치 환경 유지를 위한 시스템 | |
CN113703823A (zh) | 一种bmc固件升级方法、装置、电子设备及存储介质 | |
CN115291925A (zh) | 一种bmc升级方法、系统、设备及存储介质 | |
CN114253906A (zh) | 配置文件的管理方法、装置、配置分发系统及存储介质 | |
CN115080834A (zh) | 推送链路的故障检测方法、装置、电子设备及存储介质 | |
JP2010186452A (ja) | 保守管理システム、データベースサーバ、保守管理プログラムおよび保守管理方法 | |
CN112214437A (zh) | 一种存储设备及通信方法、装置、计算机可读存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |