CN110990035B - 一种基于Git的链式软件升级方法 - Google Patents

一种基于Git的链式软件升级方法 Download PDF

Info

Publication number
CN110990035B
CN110990035B CN201911060083.2A CN201911060083A CN110990035B CN 110990035 B CN110990035 B CN 110990035B CN 201911060083 A CN201911060083 A CN 201911060083A CN 110990035 B CN110990035 B CN 110990035B
Authority
CN
China
Prior art keywords
software
upgrading
computers
git
computer
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
Application number
CN201911060083.2A
Other languages
English (en)
Other versions
CN110990035A (zh
Inventor
何亮
陈振华
张晨曦
李庆亮
张露
陶金钱
倪鸿
颜秉辉
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
No63811 Unit Of Pla
Original Assignee
No63811 Unit Of Pla
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by No63811 Unit Of Pla filed Critical No63811 Unit Of Pla
Priority to CN201911060083.2A priority Critical patent/CN110990035B/zh
Publication of CN110990035A publication Critical patent/CN110990035A/zh
Application granted granted Critical
Publication of CN110990035B publication Critical patent/CN110990035B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal 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)
  • Multi Processors (AREA)

Abstract

本发明公开了一种基于Git的链式软件升级方法,本发明具体包括以下步骤:S1、首先计算机A从服务器完成升级,S2、然后升级调度软件将计算机A的IP、用户名和Git库路径信息告诉需要升级的计算机B、C,S3、计算机B、C通过修改本机Git配置文件中的“url”属性,将软件升级源指向已完成升级的计算机A的Git库路径,然后从计算机A拉取最新的软件完成软件升级,S4、计算机B、C完成软件升级后,重复S2‑S3步骤升级后续的计算机,直至所有计算机全部完成软件升级。本发明涉及计算机技术领域,该方法可使得软件升级并行化,升级速度成指数增长,从而有效提高软件升级效率,规避软件升级失败风险。

Description

一种基于Git的链式软件升级方法
技术领域
本发明涉及计算机技术领域,具体为一种基于Git的链式软件升级方法。
背景技术
在航空航天、机械制造、工业生产等大型工程项目领域,涉及诸多子系统,各子系统涉及大量计算机终端运行,同时各子系统之间往往需要一套统一的软件协同配合。因此,可靠的软件版本控制方法和高效的软件升级机制,是确保工程项目能否圆满成功的关键。
Git一种优秀的软件版本控制软件,在很多领域得到广泛应用。目前,软件升级通常的使用方法是,使用Git软件进行版本管理和软件升级,只要在服务器上部署Git库,终端计算机就能通过该Git库准确可靠地获取到新版本的软件。
然而由于在大型工程项目中,子系统之间往往分散,开发、维护和使用的人员多、场所广,它对版本控制和升级部署的可靠性和高效性要求特别高。实际应用存在下述问题:当众多计算机同时执行升级操作时,服务器经常因内存资源耗尽而出现卡死的现象,导致无法顺利实现软件全面升级。为了避免上述情况的发生,减少了同时实施升级的计算机数量,进而减少Git服务器的连接并发数、降低了内存资源消耗,使软件升级得以顺利开展,但该方法导致了升级效率异常低下,不能满足现实要求,因此,亟待探索一种优化方法,既能保持软件可靠升级,又能显著提升软件升级效率。
许多工程项目往往采用“分散开发,统一集成”的软件开发维护策略。各个子部门只负责软件某一部分的软件开发与维护工作,各子部门维护完成后将成果提交给总体组,由总体组开展集成、测试和版本发布。为便于开发,各单位共用一台指Git服务器,因此可能面临多家单位同时升级软件的情况。
实践中,在项目全系统运行时,对大量计算机进行软件升级时,采用原有的软件升级技术,已发生多次服务器卡死现象,软件维护人员不得不减少同时升级的计算机数量,但由于没有直接的方法掌握到其他单位是否正在进行软件升级,服务器死机情况仍然时有发生。
发明内容
(一)解决的技术问题
针对现有技术的不足,本发明提供了一种基于Git的链式软件升级方法,解决了当众多计算机同时执行升级操作时,服务器经常因内存资源耗尽而出现卡死的现象,导致无法开展软件升级,若减少同时实施升级的计算机数量,会导致升级效率异常低下,不能满足短时间快速完成软件升级现实要求的问题。
(二)技术方案
为实现以上目的,本发明通过以下技术方案予以实现:一种基于Git的链式软件升级方法,具体包括以下步骤:
S1、首先计算机A从服务器完成升级;
S2、然后升级调度软件将计算机A的IP、用户名和Git库路径信息告诉需要升级的计算机B、C;
S3、计算机B、C通过修改本机Git配置文件中的“url”属性,将软件升级源指向已完成升级的计算机A的Git库路径,然后从计算机A拉取最新的软件完成软件升级;
S4、计算机B、C完成软件升级后,重复S2-S3步骤升级后续的计算机,直至所有计算机全部完成软件升级。
优选的,所述步骤S4中假设每次同步升级的计算机台数为A0,在第n轮升级完成后,完成升级的计算机总数A的计算公式为:A=A0(A0+1)(n-1)
优选的,Git库同时存在于服务器和客户计算机上。
优选的,只要有一台计算机从服务器升级成功,则后续软件升级将不再需要服务器支持,而是将升级成功的计算机作为软件升级的源。
(三)有益效果
基于Git的链式软件升级方法,与现有技术相比具备以下有益效果:我们在众多“开发者”中指定一位作为软件配置管理员,由他完成步骤S1-S4操作,其他“开发者”只执行步骤S1和步骤S3操作,在这个过程中的“其他开发者”实际上就是客户计算机的抽象,每个软件升级通常由一人完成,只需要通过远程调用,使计算机执行一个gitpull命令即可实现软件的升级,同理,执行gitclone命令可实现软件的安装,可实现简单地通过Git完成大量计算机软件升级,面临着升级效率低下和服务器资源耗尽的问题,该问题的根源在于升级过程对Git服务器的依赖,解除了软件升级对服务器的依赖,不仅解除了软件升级对服务器的依赖,也充分利用了大量待升级软件计算机的计算资源,同时通过修改Git配置文件,将客户计算机作为软件升级的源,使软件升级过程不再持续依赖于Git服务器,降低了软件升级受其他单位软件升级的影响,有效规避了软件升级失败的风险,同时,充分利用了闲置的计算资源,使得软件升级并行化,升级速度成指数增长,该方法获得了非常高效的软件升级体验,解决了过去长期面临的难题。
附图说明
图1为本发明的工作流程图;
图2为本发明Git分布式开发模式的示意图;
图3为本发明基于Git的软件升级模式的示意图;
图4为本发明软件升级方法的原理框架图;
图5为本发明Git本地库配置文件内容的示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参阅图1-5,本发明实施例提供一种技术方案:一种基于Git的链式软件升级方法,具体包括以下步骤:
S1、首先计算机A从服务器完成升级;
S2、然后升级调度软件将计算机A的IP、用户名和Git库路径信息告诉需要升级的计算机B、C;
S3、计算机B、C通过修改本机Git配置文件中的“url”属性,将软件升级源指向已完成升级的计算机A的Git库路径,然后从计算机A拉取最新的软件完成软件升级;
S4、计算机B、C完成软件升级后,重复S2-S3步骤升级后续的计算机,直至所有计算机全部完成软件升级。
假设每次同步升级的计算机台数为A0,在第n轮升级完成后,完成升级的计算机总数A的计算公式为:A=A0(A0+1)(n-1)
本发明中,整个过程可由多个开发者串行或并行执行,且开发者与开发者之间为透明。
本发明中,Git库同时存在于服务器和客户计算机上。
本发明中,只要有一台计算机从服务器升级成功,则后续软件升级将不再需要服务器支持,而是将升级成功的计算机作为软件升级的源。
我们在众多“开发者”中指定一位作为软件配置管理员,由他完成步骤S1-S4操作,其他“开发者”只执行步骤S1和步骤S3操作,在这个过程中的“其他开发者”实际上就是客户计算机的抽象,每个指挥大厅的软件升级通常由一人完成,只需要通过远程调用,使计算机执行一个gitpull命令即可实现软件的升级,同理,执行gitclone命令可实现软件的安装,简单地通过Git完成大量计算机软件升级,面临着升级效率低下和服务器资源耗尽的问题,该问题的根源在于升级过程对Git服务器的依赖,解除了软件升级对服务器的依赖,问题就能迎刃而解。
Git库同时存在于服务器和客户计算机上,假设客户计算机能够从其他计算机上克隆或拉取Git库,那么,只要有一台计算机从服务器升级成功,则后续软件升级将不再需要服务器支持,而是将升级成功的计算机作为软件升级的源,这样就形成了类似链式反应的软件升级发展进程,如图4所示,该方法不仅解除了软件升级对服务器的依赖,也充分利用了待软件升级计算机的计算资源。
Git本地库的配置文件,如图5所示,可以看到,该配置文件用“url”属性约束了本地库所追踪的远程库的路径,这就使得上述假设得以实现,“url”属性原本指向的是Git服务器,在改进后的软件升级方法中,情况变成了这样:计算机A从服务器完成升级,升级调度软件将计算机A的IP、用户名和Git库路径等信息告诉需要升级的计算机B、C,计算机B、C首先修改“url”属性,然后从计算机A获取升级,计算机B、C完成升级后,升级调度软件将调度新的计算机从计算机A、B、C获取升级。
上述升级发展进程中,假设每次同步升级的计算机台数为A0,在第n轮升级完成后,完成升级的计算机总数A的计算公式为:A=A0(A0+1)(n-1)
应用实例
在某次软件升级中,一台计算机从服务器完成一次升级大概需要30秒,每次升级3台,按依次从服务器升级的方式计算,192台计算机完成一次升级需要32分钟,采用改进的升级方法后,这个升级过程只需要进行4轮迭代,即2分钟,升级效率是原来的16倍!需升级的计算机规模数量越大,提高的效率越明显。
综上所述
本发明通过修改Git配置文件,将客户计算机作为软件升级的源,使指挥大厅软件升级过程不再持续依赖于Git服务器,降低了软件升级受外单位软件升级的影响,有效规避了软件升级失败的风险,同时,充分利用了待升级软件计算机的计算资源,使得软件升级并行化,升级速度成指数增长,该方法获得了非常高效的软件升级体验,解决了过去长期面临的难题。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。
尽管已经示出和描述了本发明的实施例,对于本领域的普通技术人员而言,可以理解在不脱离本发明的原理和精神的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由所附权利要求及其等同物限定。

Claims (5)

1.一种基于Git的链式软件升级方法,其特征在于具体包括以下步骤:
S1、首先计算机A从服务器完成升级;
S2、然后升级调度软件将计算机A的IP、用户名和Git库路径信息告诉需要升级的计算机B、C;
S3、计算机B、C通过修改本机Git配置文件中的“url”属性,将软件升级源指向已完成升级的计算机A的Git库路径,然后从计算机A拉取最新的软件完成软件升级;
S4、计算机B、C完成软件升级后,重复S2-S3步骤升级后续的计算机,直至所有计算机全部完成软件升级。
2.根据权利要求1所述的一种基于Git的链式软件升级方法,其特征在于:整个过程由多个开发者串行或并行执行,且开发者与开发者之间为透明。
3.根据权利要求1所述的一种基于Git的链式软件升级方法,其特征在于:所述步骤S4中假设每次同步升级的计算机台数为A0,在第n轮升级完成后,完成升级的计算机总数A的计算公式为:A=A 0 (A 0 +1) (n-1)
4.根据权利要求1所述的一种基于Git的链式软件升级方法,其特征在于:Git库同时存在于服务器和客户计算机上。
5.根据权利要求1所述的一种基于Git的链式软件升级方法,其特征在于:只要有一台计算机从服务器升级成功,则后续软件升级将不再需要服务器支持,而是将升级成功的计算机作为软件升级的源。
CN201911060083.2A 2019-11-01 2019-11-01 一种基于Git的链式软件升级方法 Active CN110990035B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201911060083.2A CN110990035B (zh) 2019-11-01 2019-11-01 一种基于Git的链式软件升级方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911060083.2A CN110990035B (zh) 2019-11-01 2019-11-01 一种基于Git的链式软件升级方法

Publications (2)

Publication Number Publication Date
CN110990035A CN110990035A (zh) 2020-04-10
CN110990035B true CN110990035B (zh) 2023-03-14

Family

ID=70082904

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911060083.2A Active CN110990035B (zh) 2019-11-01 2019-11-01 一种基于Git的链式软件升级方法

Country Status (1)

Country Link
CN (1) CN110990035B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111667520B (zh) * 2020-06-09 2023-05-16 中国人民解放军63811部队 红外图像和可见光图像的配准方法、装置及可读存储介质

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102541913B (zh) * 2010-12-15 2017-10-03 中国人民解放军国防科学技术大学 面向Web的VSM分类器训练、OSSP页面识别及OSS资源提取方法
CN105630522B (zh) * 2014-10-31 2019-03-08 阿里巴巴集团控股有限公司 一种Web应用的更新方法、装置和系统
CN105739968B (zh) * 2016-01-20 2020-06-30 北京京东尚科信息技术有限公司 基于分布式版本控制系统Git的更新内容的评审方法和装置
CN107315689B (zh) * 2017-07-04 2020-07-31 上海爱数信息技术股份有限公司 基于Git代码文件检索粒度的自动化回归测试方法
KR101954889B1 (ko) * 2017-12-05 2019-03-08 주식회사 우암코퍼레이션 에너지 플랫폼 기반 실시간 업그레이드 및 시스템 확장이 가능한 클라우드형 ess-ems 관리 시스템
CN108632375B (zh) * 2018-05-09 2021-04-27 四川华创世纪科技有限公司 一种针对分布式部署服务软件程序的在线升级方法
CN109144548A (zh) * 2018-08-27 2019-01-04 杭州安恒信息技术股份有限公司 一种基于git实现的多组件软件升级方法、装置及服务器
CN110321152B (zh) * 2019-07-04 2023-08-29 青岛华正信息技术股份有限公司 一种软件开发平台

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Blischak 等.A quick introduction to version control with Git and GitHub..2016,第12卷(第01期),全文. *
周伟 等.Git在软件版本管理实验教学中的应用.2016,(第05期),97-100. *

Also Published As

Publication number Publication date
CN110990035A (zh) 2020-04-10

Similar Documents

Publication Publication Date Title
US9875133B2 (en) Virtual machine disk image installation
US20200133666A1 (en) Application lifecycle management system
US7698391B2 (en) Performing a provisioning operation associated with a software application on a subset of the nodes on which the software application is to operate
US9032373B1 (en) End to end testing automation and parallel test execution
CN111580861A (zh) 用于计算机环境迁移的基于模式的人工智能计划器
CN105117286A (zh) MapReduce中任务的调度方法和流水化执行方法
Weimer et al. Reef: Retainable evaluator execution framework
CN103473287A (zh) 一种自动分发、运行和更新可执行程序的方法及系统
CN115061717B (zh) 应用管理方法、应用订阅方法及相关设备
CN112445598A (zh) 一种基于quartz的任务调度方法、装置、电子设备以及介质
CN111147541B (zh) 基于参数服务器的节点处理方法、装置、设备及存储介质
CN110990035B (zh) 一种基于Git的链式软件升级方法
Meister et al. Maggy: Scalable asynchronous parallel hyperparameter search
CN116302708A (zh) 基于负载均衡的数据备份方法、装置、设备及存储介质
CN114816694A (zh) 一种多流程协作的rpa任务调度方法及装置
KR20010110097A (ko) 작업흐름-관리-시스템에서의 보관 방법
CN111275389A (zh) 运维作业创建、管理方法和装置
Maymounkov Koji: Automating pipelines with mixed-semantics data sources
US20210182284A1 (en) System and method for data ingestion and workflow generation
CN114443050A (zh) 一种基于ci引擎流水线的新型日志展示方法
CN109298851B (zh) 一种OSGi异构软件框架的扩展机制适配方法
CN113434283B (zh) 服务调度方法及装置、服务器、计算机可读存储介质
US20230359547A1 (en) Targeted Testing for Modular Software Applications
CN111008035B (zh) 一种软件运维方法、电子设备及存储介质
US12008488B2 (en) Systems and methods to manage sub-chart dependencies with directed acyclic graphs

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