微博

QQ

分布式系统配置管理技术及使用探讨

2023-02-09 北京真视通科技股份有限公司 王乐 依马狮视听工场


作者:北京真视通科技股份有限公司 王乐

本文发表于《InfoAV China》2023年1/2月刊


【摘要】:随着世界科技信息的飞速发展,分布式系统变得越来越普遍,它是计算机科学领域的一个庞大而复杂的领域。一个分布式系统是一些独立的计算机的集合,但是对于该系统的用户来说,系统就像一台计算机一样。与集中式系统相比,分布式系统相对更为复杂,在建设一个分布式系统时在资源的透明性、系统容错性、可伸缩性、配置管理等方面需要特别关注。配置管理是用管理和技术的手段对项目的工作成果进行管理,保证工作成果的完整性和可跟踪性。分布式系统项目研发过程中面临着持续不断的变化,变化可能导致版本混乱,目前GIT分布式配置管理系统就是用于控制变化,记录软件产品的演化过程,确保开发者在软件生命周期中的各个阶段都能得到精确的产品配置,最终保证软件产品的完整性、一致性、可追溯性。

【关键词】:分布式系统;配置管理;GIT

随着新一轮科技革命和产业变革深入发展,采用数字技术的分布式系统变得越来越普遍,分布式系统把任务分散在多个处理节点上(通常是分布在一地或多地的多台计算设备上)进行处理并获得结果的系统。政府企事业单位中大型信息服务平台因为业务形式多样,会包含多个子系统,这些子系统由不同研发厂家提供,通常总集成商通过统筹调度按时保质保量完成系统交付和平稳运行。在大型分布式系统建设过程中,对于版本控制、变更控制、权限控制、协作开发和资产管理方面,提出了更高的要求,此时需要一套稳定成熟的版本管理系统来支撑分布式系统的研发管理,记录项目研发的演化过程,确保开发者在软件生命周期中的各个阶段都能得到精确的产品配置,保证工作成果的完整性和可跟踪性。

 

一,配置管理系统简介

常用的软件配置管理系统分为两大类,一类是付费商业软件,一类是开源软件。付费软件配置管理工具有Rational ClearCase,Microsoft VSS等。开源免费软件配置管理工具有SVN和GIT,目前在国内IT领域使用最广泛,当属GIT软件,在一些传统企业中也有组织继续采用开源软件SVN。

SVN是Subversion的简称,是一个开放源代码的版本控制系统,用于多个人共同开发同一个项目,达到共享资源,实现最终集中式的管理。集中式管理的核心是服务器,所有开发者在开始新一天的工作之前必须从服务器获取代码,然后开发,最后解决冲突,提交。所有的版本信息都放在服务器上。如果脱离了服务器,开发者基本上是无法工作的。SVN优点是对中文支持好,使用界面统一,功能完善,操作简单。

GIT是一个开源的分布式版本控制系统,最初由Linus Torvalds编写,用于Linux内核开发的版本控制。GIT支持离线工作,在本地可以进行很多操作,包括分支功能。分布式相比于集中式的最大区别在于开发者可以提交到本地,每个开发者通过克隆,在本地机器上拷贝一个完整的GIT仓库。GIT命令多意味着功能多,若我们能掌握大部分 GIT的功能,体会到其中的奥妙,会发现再也回不去 SVN 的时代了。

 

二,分布式配置管理系统主要功能

配置项为配置管理设计的硬件、软件或者二者的集合,在配置管理过程中作为一个单个实体来对待。典型配置项包括项目计划书、需求文档、设计文档、源代码、可执行代码、测试用例、运行软件所需的各种数据,它们经评审和检查通过后进入配置管理。

配置库(Configuration Library)存放配置项并记录与配置项相关的所有信息,是配置管理的有力工具,利用库中的信息可回答许多配置管理的问题。例如哪些客户已提交了特定的系统版本,运行一个特定的系统版本需要什么硬件和系统软件等。使用配置库可以帮助配置管理员把分布式系统开发过程的各种工作产品,包括半成品或节点产品和最终产品管理得井井有条,使其不致管乱、管混、管丢。

配置库可以分为开发库、受控库、产品库3种类型。开发库(Development Library)用于保存开发人员当前正在开发的配置实体,如:新模块、文档、数据元素或进行修改的已有元素,开发人员可以随意修改;受控库(Controlled Library)是包含当前的基线加上对基线的变更,在分布式系统开发的某个阶段工作结束时,将当前的工作产品存入受控库。受控库存放测试版本的代码,需要开发组长提交测试申请修改。产品库(Product Library)包含已发布使用的各种基线的存档,被置于完全的配置管理之下。在分布式系统完成系统测试后,作为最终产品存入产品库中,等待交付用户或现场安装。

分布式版本管理系统对本地数据管理,分为三个区,分别是工作区,暂存区和仓库区。工作区(Working Directory)是你在电脑里能看到的目录,直接编辑的地方,肉眼可见,直接操作,任何对象都是在工作区中诞生和被修改。暂存区(Staging)类似于缓存区域,临时保存你的改动,会记录git add添加文件的相关信息(文件名、文件大小、timestamp…),不保存文件实体,通过id指向每个文件实体。可以使用git status查看暂存区的状态,任何修改都是从进入暂存区才开始被版本控制。仓库区(Repository)分为本地仓库和远程仓库,本地仓库保存了对象被提交过的各个版本,比起工作区和暂存区的内容,它要更早一些。git commit后同步Staging的目录树到本地仓库,自动初始化为本地仓库,同时它会新建“.git”目录方便从下一步通过git push同步本地仓库与远程仓库。只有把修改提交到本地仓库,该修改才能在仓库中留下痕迹。可以在任何地方新建本地仓库,只需要在目标目录下执行“git init”指令,就会将此目录自动初始化为本地仓库。远程仓库内容可能与本地仓库同步,也可能不同步,但是它的内容是最早的。与协作者分享本地的修改,可以把它们push到远程仓库来共享。三个区之间的工作流及对应使用的指令如下图所示:

分布式系统配置管理技术及使用探讨

 

三、分布式系统配置管理最佳实践和关键技术点

分支(Branch)是软件版本演化图中的一条路径,是软件的一个独立演化的版本序列。在配置库中,各分支是独立存储的。在软件版本演化图的众多分支中,有一条是主线(master),也称主干。所有其它分支都从主线分出,并有可能会合并回主线。使用分支原因是需要创建一个不同的版本,或者一组人员需要在一个相对独立的环境中互相配合共同完成一个大的任务。深层次原因是软件开发进程面临着两个基本问题,即适当隔离和适当共享。适当隔离是在工作过程中,各人或各组需独立地工作,不希望被别人意外地干扰,也不希望干扰别人。适当共享是各人或各组的工作,在适当的时候,以适当的方式,共享和集成。分支同时对隔离和共享提供了支持。一条分支被创建后,它的生长是独立的,工作在一条分支上,不会与主线或其它分支相互影响。分支的起点是分支的基础,是分支继承的内容,不同分支上的工作成果,可在适当的时候合并。

通常对于小型分布式系统项目或产品,尤其成员大部分是熟悉GIT系统的研发人员,笔者最佳实践是使用 GIT建立 dev, cont和 prod 三个分支分别对应开发库、受控库和产品库,不需要建 3 个库,这样通过简单的合并操作就可以实现从开发库到受控库、从受控库到产品库的代码复制,而且可以从合并记录中看出 3 个分支之间的关系。在分支中进行权限控制,进入要管理的项目仓库,在分支页签下建好所需的分支,然后进入保护分支管理菜单,设置保护分支,按照提示操作具体分支,可以实现只允许管理员或者特定人员向这些分支提交/合并,从而实现了受控库和产品库受控。

对于中大型分布式系统项目研发,尤其涉及多个厂家共同合作开发并最终集成的情况,最佳实践是采用分组管理方式,来实现开发区、受控库、产品库的独立管理,目录结构跟传统SVN后台配置管理的结构类似。组(Group)是一个父子结构的目录,其每一级都可以设置关联的成员(Member),同时每一级下都可以创建项目(Project),组关联的Member和Member对应的权限,会继承到Group下的所有子项目和子组上,Project中除了继承Group的Member,还可以单独设置新的Member。这种方式可以为每个厂家分配自己负责的子项目,相对于完全分支管理,分组管理可以实现更严格的权限控制,当然也可以根据需要再做某个Project下单独分支管理。客户端方面,尽量选择GUI客户端,比如TortoiseGit,减少对GIT具体指令的依赖,这种前后端组合对于合作的各厂家版本配置技能要求会低很多。建议采用的配置管理流程图如下:

分布式系统配置管理技术及使用探讨

分布式系统配置管理技术及使用探讨

 

结束语:

真视通云视频工程实验室在研发分布式系统产品时,使用成熟稳定的分布式配置管理系统,在自主研发模块中,采用分支版本管理方式;在主导国内中大型分布式系统工程项目时,涉及多个合作单位,使用创新性的分组管理模式, 降低合作研发单位的配置管理技术要求,提高研发效率,保证软件产品的完整性、一致性、可追溯性。


参考文献:

[1] Wahli U,Brown J,Teinonen M,Trulsson L.软件配置管理:IBM Rational ClearCase和ClearQuest UCM指南[M].李纪华,译.北京:人民邮电出版社,2006.

[2] Gene Kim,Jez Humble,Patrick Debois,John Willis. DevOps实践指南[M]. 刘征,王磊,马博文,曾朝京译.北京:人民邮电出版社,2018.

[3] GB/T 12505-90, 计算机软件配置管理计划规范 [S]

真视通 分布式 配置管理 GIT

视听科技视频号 广告
发表评论