CN111596953A - 版本管理系统、开发数据传输控制方法及相关装置 - Google Patents

版本管理系统、开发数据传输控制方法及相关装置 Download PDF

Info

Publication number
CN111596953A
CN111596953A CN202010384726.5A CN202010384726A CN111596953A CN 111596953 A CN111596953 A CN 111596953A CN 202010384726 A CN202010384726 A CN 202010384726A CN 111596953 A CN111596953 A CN 111596953A
Authority
CN
China
Prior art keywords
project
development data
storage device
development
target storage
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.)
Granted
Application number
CN202010384726.5A
Other languages
English (en)
Other versions
CN111596953B (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.)
Oppo Chongqing Intelligent Technology Co Ltd
Original Assignee
Oppo Chongqing Intelligent Technology Co Ltd
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 Oppo Chongqing Intelligent Technology Co Ltd filed Critical Oppo Chongqing Intelligent Technology Co Ltd
Priority to CN202010384726.5A priority Critical patent/CN111596953B/zh
Publication of CN111596953A publication Critical patent/CN111596953A/zh
Application granted granted Critical
Publication of CN111596953B publication Critical patent/CN111596953B/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/70Software maintenance or management
    • G06F8/71Version control; Configuration management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/21Design, administration or maintenance of databases
    • G06F16/219Managing data history or versioning
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/568Storing data temporarily at an intermediate stage, e.g. caching

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Data Mining & Analysis (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

本申请实施例公开了一种版本管理系统、开发数据传输控制方法及相关装置,系统包括开发者客户端、代理服务器和多个存储设备,开发者客户端与代理服务器通信连接,代理服务器与多个存储设备通信连接,其中,开发者客户端,用于记录用户的项目开发数据,并向代理服务器发送项目开发数据;代理服务器,用于接收项目开发数据,并向关联的目标存储设备发送项目开发数据,多个存储设备包括目标存储设备;目标存储设备,用于接收并存储项目开发数据。本申请实施例可以实现版本管理系统中服务端的高可用。

Description

版本管理系统、开发数据传输控制方法及相关装置
技术领域
本申请涉及电子设备技术领域,具体涉及一种版本管理系统、开发数据传输控制方法及相关装置。
背景技术
如图1A所示的现有git(一种开源分布式版本管理系统)系统架构,开发者客户端由开发者使用,所有的开发者客户端将用户针对程序开发项目的补丁上传至公共服务器,公共服务器汇总所有开发者的补丁,并同步备份到所有的备份服务器中。
随着使用量的增加,单机会有频繁的并发I/O请求,该方案中一旦发生工作区文件修改就需公共服务器要向所有备份服务器发送更新请求,无疑将会增加公共服务器I/O负担。公共服务器负责存储I/O的同时还要按照备份服务器的数量发送大量的网络I/O传输更新内容。最后主机异常必然进行全量故障切换,故障发生时如果存在大量I/O,那么主备之间的差异将会难以控制和缩小,故障难以最小化。
发明内容
本申请实施例提供了一种版本管理系统、开发数据传输控制方法及相关装置,以期实现版本管理系统中服务端的高可用。
第一方面,本申请实施例提供一种版本管理系统,包括开发者客户端、代理服务器和多个存储设备,所述开发者客户端与所述代理服务器通信连接,所述代理服务器与所述多个存储设备通信连接,其中,
所述开发者客户端,用于记录用户的项目开发数据,并向所述代理服务器发送所述项目开发数据;
所述代理服务器,用于接收所述项目开发数据,并向关联的目标存储设备发送所述项目开发数据,所述多个存储设备包括所述目标存储设备;
所述目标存储设备,用于接收并存储所述项目开发数据。
第二方面,本申请实施例提供一种应用于如第一方面所述的版本管理系统中的代理服务器,所述方法包括:
接收来自所述开发者客户端的项目开发数据;
向关联的目标存储设备发送所述项目开发数据。
第三方面,本申请实施例提供一种代理服务器,包括处理器、存储器、通信接口以及一个或多个程序,其中,上述一个或多个程序被存储在上述存储器中,并且被配置由上述处理器执行,上述程序包括用于执行本申请实施例第二方面任一方法中的步骤的指令。
第四方面,本申请实施例提供了一种计算机可读存储介质,其中,上述计算机可读存储介质存储用于电子数据交换的计算机程序,其中,上述计算机程序使得计算机执行如本申请实施例第二方面任一方法中所描述的部分或全部步骤。
第五方面,本申请实施例提供了一种计算机程序产品,其中,上述计算机程序产品包括存储了计算机程序的非瞬时性计算机可读存储介质,上述计算机程序可操作来使计算机执行如本申请实施例第二方面任一方法中所描述的部分或全部步骤。该计算机程序产品可以为一个软件安装包。
可以看出,本申请实施例中,版本管理系统包括开发者客户端、代理服务器和多个存储设备,开发者客户端与代理服务器通信连接,代理服务器与多个存储设备通信连接,其中,开发者客户端用于记录用户的项目开发数据,并向代理服务器发送项目开发数据;代理服务器用于接收项目开发数据,并向关联的目标存储设备发送项目开发数据,且多个存储设备包括目标存储设备;目标存储设备,用于接收并存储项目开发数据。可见,本申请的版本管理系统为开源分布式的系统架构,相对于原中心化服务器的系统架构,单个存储设备发生的异常不会对其他存储设备的使用造成任何影响,从而能够迅速收敛单个存储设备发生的异常,避免原中心化服务器架构中因公共服务期异常而导致所有用户无法正常使用的情况发生,实现版本管理系统中的服务端的高可用。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1A是本申请实施例提供的一种现有git系统架构图;
图1B是本申请实施例提供的一种版本管理系统10的系统架构图;
图1C是本申请实施例提供的一种代理服务器200的组成示例图;
图1D是本申请实施例提供的一种基于HTTP协议的开发者的代码推送过程的流程示意图;
图1E是本申请实施例提供的一种基于SSH协议的开发者的代码推送过程的流程示意图;
图2是本申请实施例提供的一种开发数据传输控制方法的流程示意图;
图3是本申请实施例提供的一种开发数据传输控制装置的功能单元组成框图;
图4是本申请实施例提供的一种开发数据传输控制装置的功能模块组成框图。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其他步骤或单元。
在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
为了更好地理解本申请实施例的方案,下面先对git系统中涉及到的相关术语和概念进行介绍。
(1)git系统中,多机互备是指一个开发者的修改补发送到单个公共服务器后,该公共服务器再将内容发到其它备份服务器存储备份,在公共服务器异常时,启用备份服务器提供服务的过程。
(2)备机(又称为备份服务器)也是公共服务器,公共服务器正常运行时,备份服务器处于未激活状态,仅作为备份数据的公共服务器,不对外提共服务。公共服务器切换时,被指定切换的备份服务器转为公共服务期激活运行。
(3)版本库,又称为仓库,英文名repository,简单理解成一个项目的目录,这个目录里面的所有文件都可以被管理起来,每个文件的修改、删除,都能被跟踪,以便任何时刻都可以追踪历史,或者在将来某个时刻可以“还原”。
随着开发者使用量的增加,单机会有频繁的并发I/O请求,该方案中一旦发生工作区文件修改就需公共服务器要向所有备份服务器发送更新请求,无疑将会增加公共服务器I/O负担。公共服务器负责存储I/O(公共服务器接收开发人员提交的补丁会将他存到本机的磁盘上,对磁盘的读写就是存储I/O)的同时还要按照备份服务器的数量发送大量的网络I/O(公共服务器将一份数据发送到备份服务器时,是通过网络传输的方式。网络传输数据的读写就是为网络I/O)传输更新内容。最后主机异常必然进行全量故障切换,故障发生时如果存在大量I/O,那么主备之间的差异将会难以控制和缩小,故障难以最小化。
基于目前git系统存在的上述问题,本申请提出一种版本管理系统、开发数据传输控制方法及相关装置,下面进行详细说明。
请参考图1B,本申请实施例提供了一种版本管理系统10(例如:git版本管理系统),该系统包括开发者客户端100、代理服务器200和多个存储设备300,其中,开发者客户端100与代理服务器200通信连接,代理服务器200与多个存储设备300通信连接。
开发者客户端100可以是膝上型计算机、台式计算机、平板电脑等,存储设备300可以是专用存储设备、通用存储设备等。
代理服务器200可以是本地服务器、云服务器、网关等,如图1C所示,本申请实施例提供的一种代理服务器200的组成示例图。代理服务器200可以包括一个或多个如下部件:处理器110、存储器120和输入输出设备130。
处理器110可以包括一个或者多个处理核心。处理器110利用各种接口和线路连接整个代理服务器200内的各个部分,通过运行或执行存储在存储器120内的指令、程序、代码集或指令集,以及调用存储在存储器120内的数据,执行代理服务器200的各种功能和处理数据。处理器110可以包括一个或多个处理单元,例如:处理器110可以包括中央处理器(CentralProcessing Unit,CPU)、应用处理器(application processor,AP)、调制解调处理器、图形处理器(graphics processing unit,GPU)、图像信号处理器(image signalprocessor,ISP)、控制器、视频编解码器、数字信号处理器(digital signal processor,DSP)、基带处理器,和/或神经网络处理器(neural-network processing unit,NPU)等。其中,控制器可以是代理服务器200的神经中枢和指挥中心。控制器可以根据指令操作码和时序信号,产生操作控制信号,完成取指令和执行指令的控制。CPU主要处理操作系统、用户界面和应用程序等;GPU用于负责显示内容的渲染和绘制;调制解调器用于处理无线通信。数字信号处理器用于处理数字信号,除了可以处理数字图像信号,还可以处理其他数字信号。NPU为神经网络(neural-network,NN)计算处理器,通过借鉴生物神经网络结构,例如借鉴人脑神经元之间传递模式,对输入信息快速处理,还可以不断的自学习。通过NPU可以实现代理服务器200的智能认知等应用,例如:图像识别,人脸识别,语音识别,文本理解等。
存储器120可以包括随机存储器(Random Access Memory,RAM),也可以包括只读存储器(Read-Only Memory)。可选地,该存储器120包括非瞬时性计算机可读介质(non-transitorycomputer-readable storage medium)。存储器120可用于存储指令、程序、代码、代码集或指令集。存储器120可包括存储程序区和存储数据区,其中,存储程序区可存储用于实现操作系统的指令、用于实现至少一个功能的指令(比如触控功能、声音播放功能、图像播放功能等)、用于实现下述各个方法实施例的指令等,该操作系统可以是安卓(Android)系统(包括基于Android系统深度开发的系统)、苹果公司开发的IOS系统(包括基于IOS系统深度开发的系统)或其它系统。存储数据区还可以存储代理服务器200在使用中所创建的数据(比如电话本、音视频数据、聊天记录数据)等。
需要注意的是,上述代理服务器200的结构示意图仅为示例,具体包含的器件可以更多或更少,此处不做唯一限定。
具体实现中,所述开发者客户端100,用于记录用户的项目开发数据,并向所述代理服务器200发送所述项目开发数据。
其中,所述项目开发数据是指开发人员在开发项目中通过本端的开发者客户端录入的程序集合,该程序集合可以是以项目的补丁的形式呈现。
所述代理服务器100,用于接收所述项目开发数据,并向关联的目标存储设备发送所述项目开发数据,所述多个存储设备300包括所述目标存储设备。
其中,所述目标存储设备为多个存储设备中的一个或多个存储设备,该一个或多个存储设备中每个存储设备均存储有所述项目开发数据所属项目的版本库,用于实现数据备份。
所述目标存储设备,用于接收并存储所述项目开发数据。
可以看出,本申请实施例中,版本管理系统包括开发者客户端、代理服务器和多个存储设备,开发者客户端与代理服务器通信连接,代理服务器与多个存储设备通信连接,其中,开发者客户端用于记录用户的项目开发数据,并向代理服务器发送项目开发数据;代理服务器用于接收项目开发数据,并向关联的目标存储设备发送项目开发数据,且多个存储设备包括目标存储设备;目标存储设备,用于接收并存储项目开发数据。可见,本申请的版本管理系统为开源分布式的系统架构,相对于原中心化服务器的系统架构,单个存储设备发生的异常不会对其他存储设备的使用造成任何影响,从而能够迅速收敛单个存储设备发生的异常,避免原中心化服务器架构中因公共服务期异常而导致所有用户无法正常使用的情况发生,实现版本管理系统中的服务端的高可用。
在一个可能的示例中,所述多个存储设备中的至少两个存储设备存储有所述项目开发数据所属项目的版本库。
具体实现中,可以按照实际开发的项目的重要性程度确定用于同步备份该项目的版本库的存储设备的数量,例如,第一项目的重要性级别为高级别,则可以设置四个存储设备用于同步备份该第一项目的版本库,第二项目的重要性级别为低级别,则可以设置两个存储设备用于同步备份该第二项目的版本库,等。
可以理解的是,一个项目的版本库由多少存储设备同步备份,可以由项目组织者根据项目经验进行确定,也可以像前述示例所描述的,预设规则在代理服务器中,有代理服务器自动进行配置,此处不做唯一限定。
可见,本示例中,通过至少两个存储设备同步备份项目开发数据所属项目的版本库,可以避免单个存储设备异常而导致所有用户无法使用的情况发生,提高服务端的存储服务能力。
在一个可能的示例中,所述版本管理系统支持超文本传输协议HTTP。
其中,HTTP是网络传输协议,用于传输数据。git协议是一种git客户端和服务端(即与代理服务器+存储设备)之间规定的数据解析、存储与通信协议,用于解析和存储HTTP传输过来的数据。
此处以代码推送存储过程举例说明,如图1D所示,假设版本管理系统为git系统,开发者客户端为git客户端,存储设备为git存储单元,项目开发数据为开发者的代码。
步骤1、git客户端向代理服务器发送HTTP请求,所述HTTP请求用于执行git推送push命令,所述git push命令用于推送开发者的代码。
具体的,在HTTP请求的git协议中HTTP的统一资源定位符(Uniform ResourceLocator,URL)包含项目的版本库路径信息,如:https://github.com/eclipse/jgit.git,其中,域名https://github.com/之后的eclipse/jgit.git即为版本库在git存储单元1的唯一路径及标志,即版本库标识信息。
步骤2、代理服务器进行鉴权及地址获取。
具体的,代理服务器从HTTP请求的URL中获取版本库路径及用户身份信息,通过身份信息对用户进行身份认证,认证通过后根据路径信息,通过一致性哈希hash算法,得到该路径所对应的git存储单元1的IP地址。
步骤3、代理服务器发送请求。
具体的,代理服务器通过IP地址将请求发给到git存储单元1,git存储单元1接收请求后,根据git协议解析数据并存储开发者的代码。
可见,本示例中,版本管理系统支持通过HTTP实现消息交互。
在一个可能的示例中,所述版本管理系统支持安全外壳SSH协议。
其中,SSH协议是网络传输协议,用于传输数据。git协议是一种git客户端和服务端(即与代理服务器+存储设备)之间规定的数据解析,存储与通信协议,用于解析和存储SSH协议传输过来的数据。
此处以代码推送存储过程举例说明,如图1E所示,假设版本管理系统为git系统,开发者客户端为git客户端,存储设备为git存储单元,项目开发数据为开发者的代码。
步骤1、git客户端向代理服务器发送SSH请求。
步骤2、身份鉴权及建立SSH连接。
具体的,代理服务器收到SSH请求,从SSH请求中取到公钥,并根据SSH协议要求,读取代理服务器authorized_keys文件内存储的用户公钥,通过公钥比对鉴权用户的身份信息,鉴权通过后,与git客户端之间正式建立SSH连接。
步骤3、git客户端向代理服务器发送第一条命令。
具体的,git客户端与代理服务器之间建立SSH连接后,git客户端发送第一条命令到代理服务器,如:git-receive-pack eclipse/jgit.git。
步骤4、地址获取。
具体的,代理服务器从第一条命令中获取开发者的代码所属的版本库的路径eclipse/jgit.git(即版本库标识信息),通过一致性hash算法,获取到对应的git存储单元1的IP地址。
步骤5、代理服务器与git存储单元1建立SSH连接。
具体的,代理服务器通过机器用户名加密码的方式与git存储单元1之间建立SSH连接。
步骤6、代理服务器发送第一条命令到git存储单元1。
具体的,将git存储单元1的输入流与代理服务器的输出流建立管道连接,将git存储单元1的错误输出流与代理服务器的错误输入流建立管道连接(错误输出流、错误输入流是指异常的项目开发数据,如错误的补丁等),将git存储单元1的输出流与代理服务器的输入流建立管道连接。
其中,管道实际是由代理服务器维护的一个中继程序,用于把数据从git客户端读取出来通过代理服务器传输到git存储单元或者是把t存储单元的数据读取出来通过代理服务器写回git客户端。客户端和存储单元虽然没有直接连接,但是通过管道中继看起来就像“直接通信”。
步骤7、分支信息通过代理服务器中转传输。
其中,git作为版本管理工具,是按照分支粒度对代码进行管理的。比如通常当前项目处于开发阶段,代码开发都基于dev分支进行。所有代码都是提交到dev分支。git客户端在进行代码提交时,会先获取git存储单元1中dev分支的版本,然后与git客户端dev分支的版本进行对比,计算出差异内容,然后生成增量压缩包进行提交。(以上过程都是git协议的本身规定)这里传输的分支信息即是建立管道后,客户端和存储单元通过代理服务器管道连接中继传输交换分支版本信息的过程。
具体的,git存储单元1收到第一条命令后,按照git协议将git存储单元1内的分支信息通过对应的管道回传git客户端,git客户端根据git协议解析分支信息,并准备数据再通过对应的管道回传到具体的git存储单元1。
可见,本示例中,版本管理系统支持通过SSH协议实现消息交互。
在一个可能的示例中,所述项目开发数据所属项目的版本库标识信息用于关联所述目标存储设备。
其中,所述版本库标识信息用于标识存储设备中的版本库,如版本库1存储在存储设备1中,则版本库标识信息用于标识存储设备1中的版本库1。
在本可能的示例中,所述版本库标识信息通过如下至少一种确定:所述项目开发数据所属项目的项目类型、所述项目开发数据所述项目的项目保密级别、所述项目开发数据所属项目的开发数据体量、所述项目开发数据所属项目的项目周期。
由于存储设备的能力可以进行差异化设置,从而不同能力的存储设备所适配的项目的版本库就会有所不同。鉴于此,可以根据不同维度的约束因子设计策略来动态确定版本库标识信息。
在本可能的示例中,所述项目类型包括以下至少一种:系统开发项目、网页Web开发项目、小程序开发项目、应用程序APP开发项目。
具体实现中,不同的开发项目是有很大差异性的,如系统开发项目数据体量可能有几十G,网页Web开发项目的开发项目可能仅有几百M,对应的,适配这些项目的项目开发数据的设备会有所不同。
例如,存储设备A为大容量高传输速度的设备,存储设备B为小容量低传输速度的设备,项目1为系统开发项目,项目2为Web开发项目,则存储设备A可以存储项目1的版本库,存储设备B可以存储项目2的版本库。
也就是说,数据体量越大的项目,所需要配置的存储设备的能力要求越高。
可见,本示例中,通过项目类型动态选择适配当前项目的数据体量的存储设备,能够提高存储设备的资源利用均衡性和稳定性。
在本可能的示例中,所述项目保密级别与所述目标存储设备的防火墙安全级别成正关联关系。
具体实现中,项目保密级别越高,所需要的防火墙安全级别越高。
例如,存储设备1的防火墙安全级别为高级别,存储设备2的防火墙安全级别为低级别,项目1的保密级别为高级别,项目2的保密级别为低级别,则存储设备1可以存储项目1的版本库,存储设备2可以存储项目2的版本库。
可见,本示例中,通过保密级别与安全级别适配,能够显著提高项目开发过程中的安全性,避免信息泄露。
在本可能的示例中,所述开发数据体量与所述目标存储设备的磁盘读写速度成正关联关系。
具体实现中,开发数据体量越大,对应的,存储设备的磁盘读写速度要求越高。
例如,存储设备1的磁盘读写速度为高速级别,存储设备2的磁盘读写速度为低速级别,项目1的开发数据体量为高体量,项目2的开发数据体量为低体量,则存储设备1可以存储项目1的版本库,存储设备2可以存储项目2的版本库。
可见,本示例中,通过项目的开发数据体量与存储设备的磁盘读写速度适配,能够更加精确的进行项目需求与存储设备的匹配,提高项目开发过程的稳定性和成功率。
在本可能的示例中,所述项目周期与所述目标存储设备的存储容量成正关联关系。
具体实现中,项目周期越长,项目开发数据的数据量越大,对应的,存储设备的存储容量需求越高。
例如,存储设备1的存储容量为大容量(如:100T),存储设备2的存储容量为小容量(如100G),项目1的项目周期为半年,项目2的项目周期为2个月,则存储设备1可以存储项目1的版本库,存储设备2可以存储项目2的版本库。
可见,本示例中,通过项目周期与存储设备的存储容量适配,能够更加合理的适配项目的开发数据量,提高项目开发过程的稳定性。
在一个可能的示例中,所述目标存储设备包括主存储器和备存储器;所述主存储器和所述备存储器通过文件监听机制和文件发送机制实现热备份。
具体实现中,在git协议中文件存储的变动分为两个过程,首先服务端(对应本申请的存储设备)会在版本库根路径下创建临时目录和临时文件用于接收git客户端传输过来的数据包,在临时目录对包文件完整性校验通过后,服务端会进行解包,同时将解包出来的git对象(对应开发者的代码,即补丁)移动到服务端git裸库的objects目录内。移动完成后,服务端更新git裸库的refs目录下对应分支名文件内的commitId hash值。
在上述文件存储的变动的过程中,服务端会使用文件锁机制确保更新不会发生冲突。因此我们可以使用linux inotify机制对服务端的版本库的裸库的refs目录下分支名文件变动进行监听。当分支有内容更新时,必然会更新分支名文件对应的commitId hash值,此时仓库必然完成了一次完整的数据存储。具体包括如下步骤:
步骤1、目标存储设备的inotify进程监听到版本库的裸库的refs目录下的分支更新后,将文件消息发送给主存储器的发送进程。
步骤2、主存储器的发送进程,根据文件变动消息,获取到版本库地址,立刻对版本库下的所有文件进行一次扫描,只读取文件属性,并存储为快照。
步骤3、主存储器的发送进程向备存储器的接收进程发送消息,获取备存储器对应版本库的文件快照。
步骤4、主存储器根据文件快照(文件的创建修改时间,大小等)计算出差异文件。主存储器的发送进程将该部分差异文件路径记录,并生成任务加入主存储器的发送进程的发送队列。
步骤5、主存储器的发送进程读取队列将差异内容发送到备存储器的接收进程。
步骤6、备存储器的接收进程接收对应数据,并存入临时目录,单次传输完成后,再将数据移到版本库对应目录,确保单次更新内容的完整性。
可见,本示例中,目标存储设备通过主存储器和备存储器实现项目开发数据的热备份,可以进一步提高目标存储设备的抗干扰能力。
在一个可能的示例中,所述主存储器和所述备存储器支持主备切换。
其中,主存储器和所述备存储器之间使用传输控制协议TCP中keepalive机制保持心跳连接,使用vip机制对外提供服务。
具体实现中,可以预先配置keepalive主备切换时分别需要执行的脚本。keepalive完成切换后,主存储器keepalive会去执行主存储器的启动脚本,备存储器执行备存储器的启动脚本。主存储器启动脚本负责启动发送进程关闭接收进程。备存储器的启动脚本主要负责启动接收进程关闭发送进程。
可见,本示例中,目标存储设备的主存储器和备存储器支持主备切换,从而可以在一个存储器异常时切换到另一个存储器以继续位置服务,提高服务连续性。
与上述版本管理系统一致的,请参阅图2,图2是本申请实施例提供了一种开发数据传输控制方法的流程示意图,应用于如图1B所示的版本管理系统10中的代理服务器200,如图所示,本开发数据传输控制方法包括以下操作。
步骤201,接收来自所述开发者客户端的项目开发数据。
步骤202,向关联的目标存储设备发送所述项目开发数据。
可以看出,本申请实施例中,代理服务器可以将用户的项目开发数据分配至对应的存储设备,也就是说,不同项目的项目开发数据可以分发至不同的存储设备以实现差异化备份,相同项目的不同项目开发数据可以分发至多个存储设备以实现多机备份,如此可以使得项目开发数据不会因单个存储设备异常而导致所有用户无法使用,单个存储设备发生的异常不会对其他存储设备的使用造成任何影响,即能够迅速收敛单个存储设备发生的异常,实现版本管理系统中的服务端的高可用。
在一个可能的示例中,所述向关联的目标存储设备发送所述项目开发数据之前,所述方法还包括:确定所述项目开发数据所属项目的版本库标识信息;
所述向关联的目标存储设备发送所述项目开发数据,包括:根据所述版本库标识信息向关联的目标存储设备发送所述项目开发数据。
可见,本示例中,代理服务器可以根据版本库标识信息选择适配项目需求的目标存储设备。
在本可能的示例中,所述版本库标识信息通过如下至少一种确定:所述项目开发数据所属项目的项目类型、所述项目开发数据所述项目的项目保密级别、所述项目开发数据所属项目的开发数据体量、所述项目开发数据所属项目的项目周期。
由于存储设备的能力可以进行差异化设置,从而不同能力的存储设备所适配的项目的版本库就会有所不同。鉴于此,可以根据不同维度的约束因子设计策略来动态确定版本库标识信息。
在本可能的示例中,所述项目类型包括以下至少一种:系统开发项目、网页Web开发项目、小程序开发项目、应用程序APP开发项目。
可见,本示例中,通过项目类型动态选择适配当前项目的数据体量的存储设备,能够提高存储设备的资源利用均衡性和稳定性。
在本可能的示例中,所述项目保密级别与所述目标存储设备的防火墙安全级别成正关联关系。
可见,本示例中,通过保密级别与安全级别适配,能够显著提高项目开发过程中的安全性,避免信息泄露。
在本可能的示例中,所述开发数据体量与所述目标存储设备的磁盘读写速度成正关联关系。
可见,本示例中,通过项目的开发数据体量与存储设备的磁盘读写速度适配,能够更加精确的进行项目需求与存储设备的匹配,提高项目开发过程的稳定性和成功率。
在本可能的示例中,所述项目周期与所述目标存储设备的存储容量成正关联关系。
可见,本示例中,通过项目周期与存储设备的存储容量适配,能够更加合理的适配项目的开发数据量,提高项目开发过程的稳定性。
本申请实施例提供一种开发数据传输控制装置,该开发数据传输控制装置可以为代理服务器200。具体的,开发数据传输控制装置用于执行以上开发数据传输控制方法中代理服务器所执行的步骤。本申请实施例提供的开发数据传输控制装置可以包括相应步骤所对应的模块。
本申请实施例可以根据上述方法示例对开发数据传输控制装置进行功能模块的划分,例如,可以对应各个功能划分各个功能模块,也可以将两个或两个以上的功能集成在一个处理模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。本申请实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
在采用对应各个功能划分各个功能模块的情况下,图3示出上述实施例中所涉及的开发数据传输控制装置的一种可能的结构示意图。如图3所示,开发数据传输控制装置3包括接收单元30和发送单元31,
接收单元30,用于接收来自所述开发者客户端的项目开发数据;
发送单元31,用于向关联的目标存储设备发送所述项目开发数据。
其中,上述方法实施例涉及的各步骤的所有相关内容均可以援引到对应功能模块的功能描述,在此不再赘述。当然,本申请实施例提供的开发数据传输控制装置包括但不限于上述模块,例如:开发数据传输控制装置还可以包括存储单元32。存储单元32可以用于存储该开发数据传输控制装置的程序代码和数据。
在采用集成的单元的情况下,本申请实施例提供的开发数据传输控制装置的结构示意图如图4所示。在图4中,开发数据传输控制装置4包括:处理模块40和通信模块41。处理模块40用于对开发数据传输控制装置的动作进行控制管理,例如,接收单元30、发送单元31所执行的步骤,和/或用于执行本文所描述的技术的其它过程。通信模块41用于支持开发数据传输控制装置与其他设备之间的交互。如图4所示,开发数据传输控制装置还可以包括存储模块42,存储模块42用于存储开发数据传输控制装置的程序代码和数据,例如存储上述存储单元32所保存的内容。
其中,处理模块40可以是处理器或控制器,例如可以是中央处理器(CentralProcessing Unit,CPU),通用处理器,数字信号处理器(Digital Signal Processor,DSP),ASIC,FPGA或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。其可以实现或执行结合本申请公开内容所描述的各种示例性的逻辑方框,模块和电路。所述处理器也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,DSP和微处理器的组合等等。通信模块41可以是收发器、RF电路或通信接口等。存储模块42可以是存储器。
其中,上述方法实施例涉及的各场景的所有相关内容均可以援引到对应功能模块的功能描述,在此不再赘述。上述开发数据传输控制装置3和开发数据传输控制装置4均可执行上述图2所示的开发数据传输控制方法中代理服务器所执行的步骤。
本申请实施例还提供一种计算机存储介质,其中,该计算机存储介质存储用于电子数据交换的计算机程序,该计算机程序使得计算机执行如上述方法实施例中记载的任一方法的部分或全部步骤,上述计算机包括电子设备。
本申请实施例还提供一种计算机程序产品,上述计算机程序产品包括存储了计算机程序的非瞬时性计算机可读存储介质,上述计算机程序可操作来使计算机执行如上述方法实施例中记载的任一方法的部分或全部步骤。该计算机程序产品可以为一个软件安装包,上述计算机包括电子设备。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本申请所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置,可通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如上述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性或其它的形式。
上述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
上述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储器中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储器中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本申请各个实施例上述方法的全部或部分步骤。而前述的存储器包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,RandomAccess Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储器中,存储器可以包括:闪存盘、只读存储器(英文:Read-Only Memory,简称:ROM)、随机存取器(英文:RandomAccess Memory,简称:RAM)、磁盘或光盘等。
以上对本申请实施例进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。

Claims (22)

1.一种版本管理系统,其特征在于,包括开发者客户端、代理服务器和多个存储设备,所述开发者客户端与所述代理服务器通信连接,所述代理服务器与所述多个存储设备通信连接,其中,
所述开发者客户端,用于记录用户的项目开发数据,并向所述代理服务器发送所述项目开发数据;
所述代理服务器,用于接收所述项目开发数据,并向关联的目标存储设备发送所述项目开发数据,所述多个存储设备包括所述目标存储设备;
所述目标存储设备,用于接收并存储所述项目开发数据。
2.根据权利要求1所述的系统,其特征在于,所述多个存储设备中的至少两个存储设备存储有所述项目开发数据所属项目的版本库。
3.根据权利要求1所述的系统,其特征在于,所述版本管理系统支持超文本传输协议HTTP。
4.根据权利要求1所述的系统,其特征在于,所述版本管理系统支持安全外壳SSH协议。
5.根据权利要求1-4任一项所述的系统,其特征在于,所述项目开发数据所属项目的版本库标识信息用于关联所述目标存储设备。
6.根据权利要求5所述的系统,其特征在于,所述版本库标识信息通过如下至少一种确定:
所述项目开发数据所属项目的项目类型、所述项目开发数据所述项目的项目保密级别、所述项目开发数据所属项目的开发数据体量、所述项目开发数据所属项目的项目周期。
7.根据权利要求6所述的系统,其特征在于,所述项目类型包括以下至少一种:
系统开发项目、网页Web开发项目、小程序开发项目、应用程序APP开发项目。
8.根据权利要求6所述的系统,其特征在于,所述项目保密级别与所述目标存储设备的防火墙安全级别成正关联关系。
9.根据权利要求6所述的系统,其特征在于,所述开发数据体量与所述目标存储设备的磁盘读写速度成正关联关系。
10.根据权利要求6所述的方法,其特征在于,所述项目周期与所述目标存储设备的存储容量成正关联关系。
11.根据权利要求1-10任一项所述的系统,其特征在于,所述目标存储设备包括主存储器和备存储器;
所述主存储器和所述备存储器通过文件监听机制和文件发送机制实现热备份。
12.根据权利要求11所述的系统,其特征在于,所述主存储器和所述备存储器支持主备切换。
13.一种开发数据传输控制方法,其特征在于,应用于如权利要求1-12任一项所述的版本管理系统中的代理服务器,所述方法包括:
接收来自所述开发者客户端的项目开发数据;
向关联的目标存储设备发送所述项目开发数据。
14.根据权利要求13所述的方法,其特征在于,所述向关联的目标存储设备发送所述项目开发数据之前,所述方法还包括:
确定所述项目开发数据所属项目的版本库标识信息;
所述向关联的目标存储设备发送所述项目开发数据,包括:
根据所述版本库标识信息向关联的目标存储设备发送所述项目开发数据。
15.根据权利要求14所述的方法,其特征在于,所述版本库标识信息通过如下至少一种确定:
所述项目开发数据所属项目的项目类型、所述项目开发数据所述项目的项目保密级别、所述项目开发数据所属项目的开发数据体量、所述项目开发数据所属项目的项目周期。
16.根据权利要求15所述的方法,其特征在于,所述项目类型包括以下至少一种:
系统开发项目、网页Web开发项目、小程序开发项目、应用程序APP开发项目。
17.根据权利要求15所述的方法,其特征在于,所述项目保密级别与所述目标存储设备的防火墙安全级别成正关联关系。
18.根据权利要求15所述的方法,其特征在于,所述开发数据体量与所述目标存储设备的磁盘读写速度成正关联关系。
19.根据权利要求15所述的方法,其特征在于,所述项目周期与所述目标存储设备的存储容量成正关联关系。
20.一种开发数据传输控制装置,其特征在于,包括
接收单元,用于接收来自所述开发者客户端的项目开发数据;
发送单元,用于向关联的目标存储设备发送所述项目开发数据。
21.一种电子设备,其特征在于,包括处理器、存储器、通信接口,以及一个或多个程序,所述一个或多个程序被存储在所述存储器中,并且被配置由所述处理器执行,所述程序包括用于执行如权利要求13-19任一项所述的方法中的步骤的指令。
22.一种计算机可读存储介质,其特征在于,存储用于电子数据交换的计算机程序,其中,所述计算机程序使得计算机执行如权利要求13-19任一项所述的方法。
CN202010384726.5A 2020-05-08 2020-05-08 版本管理系统、开发数据传输控制方法及相关装置 Active CN111596953B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010384726.5A CN111596953B (zh) 2020-05-08 2020-05-08 版本管理系统、开发数据传输控制方法及相关装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010384726.5A CN111596953B (zh) 2020-05-08 2020-05-08 版本管理系统、开发数据传输控制方法及相关装置

Publications (2)

Publication Number Publication Date
CN111596953A true CN111596953A (zh) 2020-08-28
CN111596953B CN111596953B (zh) 2023-05-26

Family

ID=72191017

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010384726.5A Active CN111596953B (zh) 2020-05-08 2020-05-08 版本管理系统、开发数据传输控制方法及相关装置

Country Status (1)

Country Link
CN (1) CN111596953B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113872929A (zh) * 2021-08-16 2021-12-31 中国人民解放军战略支援部队信息工程大学 基于动态域名的web应用安全防护方法、系统及服务器

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002229873A (ja) * 2001-02-02 2002-08-16 Seiko Epson Corp クライアント・サーバシステム、サーバ、端末装置および端末装置監視方法
CN103729195A (zh) * 2014-01-15 2014-04-16 北京奇虎科技有限公司 一种软件版本的控制方法及系统
CN107948324A (zh) * 2017-12-29 2018-04-20 广东欧珀移动通信有限公司 请求传输系统、方法、装置及存储介质
CN110336863A (zh) * 2019-06-19 2019-10-15 腾讯科技(深圳)有限公司 一种数据上报方法和系统

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002229873A (ja) * 2001-02-02 2002-08-16 Seiko Epson Corp クライアント・サーバシステム、サーバ、端末装置および端末装置監視方法
CN103729195A (zh) * 2014-01-15 2014-04-16 北京奇虎科技有限公司 一种软件版本的控制方法及系统
CN107948324A (zh) * 2017-12-29 2018-04-20 广东欧珀移动通信有限公司 请求传输系统、方法、装置及存储介质
CN110336863A (zh) * 2019-06-19 2019-10-15 腾讯科技(深圳)有限公司 一种数据上报方法和系统

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
KHONG NENG CHOONG 等: "The case for a dynamic proxy framework with voluntary/incentive-based client hosting scheme", 《JOURNAL OF NETWORK AND COMPUTER APPLICATIONS》 *
赵新慧 等: "用Java开发HTTP代理服务器", 《抚顺石油学院学报》 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113872929A (zh) * 2021-08-16 2021-12-31 中国人民解放军战略支援部队信息工程大学 基于动态域名的web应用安全防护方法、系统及服务器
CN113872929B (zh) * 2021-08-16 2023-08-29 中国人民解放军战略支援部队信息工程大学 基于动态域名的web应用安全防护方法、系统及服务器

Also Published As

Publication number Publication date
CN111596953B (zh) 2023-05-26

Similar Documents

Publication Publication Date Title
JP6774499B2 (ja) オフラインでのハイブリッドアプリケーションへのアクセスの提供
US10944740B2 (en) Cluster claim
WO2018219178A1 (zh) 数据同步方法、装置、服务器及存储介质
US11792199B2 (en) Application-assisted login for a web browser
US11221995B2 (en) Data replication from a cloud-based storage resource
US10257110B2 (en) Using a template to update a stack of resources
CN111277432B (zh) 配置信息更新方法、装置、电子设备及存储介质
WO2021108452A2 (en) Systems and methods for enabling a highly available managed failover service
JP6150816B2 (ja) 対応するプライマリ・アプリケーションデータから導出される識別子に基づく補足データへのアクセス
US9591079B2 (en) Method and apparatus for managing sessions of different websites
US20200153889A1 (en) Method for uploading and downloading file, and server for executing the same
TW201403476A (zh) 使用者特定之漫遊設定
CN115225707A (zh) 资源访问方法及装置
CN113626133A (zh) 一种虚拟机控制方法、装置、设备及计算机可读存储介质
US10545667B1 (en) Dynamic data partitioning for stateless request routing
CN111596953A (zh) 版本管理系统、开发数据传输控制方法及相关装置
CN111327680B (zh) 认证数据同步方法、装置、系统、计算机设备和存储介质
US20230344826A1 (en) Authentication token management for multiple processes and representational state transfer clients
EP3276914A1 (en) Data sharing method and device for virtual desktop
CN113312669B (zh) 密码同步方法、设备及存储介质
CN107085681B (zh) 鲁棒的计算设备标识框架
CN115473810A (zh) 双端同步脚本热更新方法及装置
CN109302446B (zh) 跨平台访问方法、装置、电子设备及存储介质
CN115843359A (zh) 计算秘密的管理
US20200301759A1 (en) Chaining of brokered service instances

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