项目发布方法、装置、系统和计算机设备与流程

文档序号:20039336发布日期:2020-02-28 11:42阅读:175来源:国知局
项目发布方法、装置、系统和计算机设备与流程

本申请涉及项目发布技术领域,特别是涉及一种项目发布方法、项目发布装置、项目发布系统和计算机设备。



背景技术:

目前,互联网公司在发布项目时,通常采用停服发布或强制发布的方式,无论是停服发布,还是强制发布,大多需要专门的开发人员逐个节点服务器进行项目发布和维护操作,导致多个节点服务器的项目代码和功能会在短时间内不一致。因而,在强制发布项目的过程中,用户使用时极易出现系统逻辑错误或者数据错误的问题;若停服发布项目,也会因多个节点服务器代码同步和更新总耗时较长,导致项目发布效率低、开发人员维护难度大的问题,且项目发布时效性较差。



技术实现要素:

基于此,有必要针对上述技术问题,提供一种项目发布方法、项目发布装置、项目发布系统、计算机设备和计算机可读存储介质。

一方面,本发明实施例提供一种项目发布方法,所述方法包括:

接收项目发布请求;

根据所述项目发布请求,获取待发布项目对应的项目数据和多个目标节点;

将所述项目数据推送至各目标节点的临时目录中;

确定各目标节点的临时目录中的项目数据推送完成,获取各目标节点的离线目录;所述离线目录用于存储待运行的项目数据;

向各目标节点发送同步指令;所述同步指令用于将每个目标节点的临时目录中的项目数据同步至各自的离线目录中;

确定各目标节点的离线目录中的项目数据同步完成,向各目标节点发送切换指令;所述切换指令用于将各目标节点的离线目录切换为线上目录,所述线上目录用于存储实际运行的项目数据。

另一方面,本发明实施例提供一种项目发布装置,所述装置包括:

接收模块,用于接收项目发布请求;

获取模块,用于根据所述项目发布请求,获取待发布项目对应的项目数据和多个目标节点;

推送模块,用于将所述项目数据推送至各目标节点的临时目录中;

确定模块,用于确定各目标节点的临时目录中的项目数据推送完成,获取各目标节点的离线目录;所述离线目录用于存储待运行的项目数据;

同步模块,用于向各目标节点发送同步指令;所述同步指令用于获取各目标节点的离线目录,将每个目标节点的临时目录中的项目数据同步至各自的离线目录中;

切换模块,用于确定各目标节点的离线目录中的项目数据同步完成,向各目标节点发送切换指令;所述切换指令用于将各目标节点的离线目录切换为线上目录,所述线上目录用于存储实际运行的项目数据。

再一方面,本发明实施例提供一种项目发布系统,包括发布平台、发布中心服务器和多个目标节点;

所述发布平台,用于向发布中心服务器发送项目发布请求;

所述发布中心服务器,用于根据所述项目发布请求,获取对应的项目数据和多个目标节点;将所述项目数据推送至各目标节点的临时目录中;

所述多个目标节点,用于在确认各自临时目录中的项目数据推送完成之后,返回推送反馈信号至所述发布中心服务器;

所述发布中心服务器,还用于根据全部目标节点返回的推送反馈信号,向各目标节点发送同步指令;

所述多个目标节点,还用于根据所述同步指令,将所述临时目录中的项目数据同步至各自的离线目录中;同步完成之后,返回同步反馈信号至所述发布中心服务器;所述离线目录用于存储待运行的项目数据;

所述发布中心服务器,还用于根据全部目标节点返回的同步反馈信号,向各目标节点发送切换指令;

所述多个目标节点,还用于根据所述切换指令,将各自的离线目录切换为线上目录;所述线上目录用于存储实际运行的项目数据。

再一方面,本发明实施例提供一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现一种项目发布方法的步骤。

再一方面,本发明实施例提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现一种项目发布方法的步骤。

上述技术方案中的一个技术方案具有如下优点或有益效果:通过接收项目发布请求,并根据项目发布请求,获取待发布项目对应的项目数据和多个目标节点,将项目数据推送至各目标节点的临时目录中,待推送完成后,将每个目标节点的临时目录中的项目数据同步至各自的离线目录中,全部目标节点同步完成后,将各目标节点的离线目录统一切换为线上目录,以实际运行该项目数据。该方法对项目发布流程进行了改进和优化,所有目标节点同源且同时发布项目,避免了发布过程中访问代码不一致及报错的问题,提升了用户体验,极大地降低了系统风险;同时,可不需要开发人员在发布期间操作,项目可随时自动发布和快速响应线上问题,有效提高了项目发布的时效性;另外,多个项目可通过发布平台独立实现上述发布流程,据此,多个项目可同时并行发布,代码同步和更新总耗时短,极大程度提高了项目发布效率。

附图说明

图1为一个实施例中项目发布方法的应用场景图;

图2为一个实施例中项目发布方法的示意性流程图;

图3为另一个实施例中项目发布方法的示意性流程图;

图4为一个实施例中项目发布装置的示意性结构图;

图5为一个实施例中项目发布系统的示意性结构图;

图6为一个实施例中计算机设备的内部结构图。

具体实施方式

为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。

在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。

本申请提供的项目发布方法,可以应用于如图1所示的应用环境中。其中,图1中示出的项目发布应用场景可包括用于发布项目的系统102,该系统102可用于将多个项目数据(例如图1中的项目数据a、项目数据b、项目数据c、项目数据d)同时平滑发布到多个节点服务器(例如图1中的节点服务器a、节点服务器b、节点服务器c、节点服务器d)上;当然,多个项目数据和多个节点服务器的具体数量需根据实际情况进行设定。所谓平滑发布,可理解为发布过程无中断,不需要停服,服务可持续运转,代码可持续更新。

具体例如,该系统102可将项目数据a同时发布到多个节点服务器(简称节点)上,与此同时,也可将项目数据b同时发布到多个节点上。该发布过程可实现多个项目可同时并行发布,代码同步和更新总耗时短,极大程度提高了项目发布效率。

上述各个项目数据,可来自同一待发布项目,也可来自多个不同的待发布项目。待发布项目可不限于为php(php:hypertextpreprocessor,超文本预处理器)项目,也可以是其它语言开发项目,如python项目、lua项目等。每个项目数据可以是一个新项目,也可以是已发布项目的新增数据、变更数据或回滚数据。

该系统102中用于将项目数据发布至节点上的子系统1021,可以用独立的服务器或者是多个服务器组成的服务器集群来实现,当然也可根据实际情况进行其他选择,此处不设限。

具体例如,该系统102可至少包括发布平台、发布中心服务器和多个节点。其中,发布平台可用来管理项目发布,包括发布、回滚和实时展示发布流程等;发布中心服务器可作为项目发布的中心管理服务器,用来同步实时信息、推送项目代码至发布平台,和/或与发布平台的每个发布节点进行通讯,以转发每个阶段的执行命令,或实现诸如每个阶段成功或失败等逻辑判定;每个节点均为项目运行的服务器,可用来执行发布中心服务器命令、执行代码更新和/或重启项目。

需要说明的是,图1中示出的应用环境,仅仅与本申请方案相关的部分场景,并不构成对本申请应用环境的限定。

基于上述应用环境的描述,如图2所示,在一个实施例中,以该项目发布方法应用于发布中心服务器为例进行说明,包括以下步骤:

s1002,接收项目发布请求。

其中,项目发布请求,一方面可理解为用于开启发布流程,另一方面可用于将发布平台选择的待发布项目数据发送至发布中心服务器。

一个具体的实施方式为,该项目发布请求具体携带有待发布项目的标识、待发布项目的分支、发布节点(目标节点)的端口、项目发布路径等,前两个可有利于让发布中心服务器获取到需要发布的项目或项目分支,后两个则可用来确认预期发布的节点位置。

发布平台向发布中心服务器发送项目发布请求的一种实现方式可为:通过拥有某项目发布权限的开发人员,在后台界面上选择该项目、项目分支等信息后,点击发布按钮,以实现请求发送。

s1004,根据项目发布请求,获取待发布项目对应的项目数据和多个目标节点。

其中,待发布项目对应的项目数据,可为一个新项目,也可以是已发布项目的增量数据或回滚数据(其中增量数据可包括新增数据和/或变更数据等);目标节点即需要发布该项目数据的节点服务器。

该步骤中,可通过识别项目发布请求携带的标识信息,获知待发布项目及对应的项目数据,而后从项目仓库或其他服务器中拉取该项目数据对应的代码到发布中心服务器本地。上述项目仓库可以是本地数据库,也可以是外部配置的数据库或网络云端数据库等,此处不作限制。

同时,根据项目发布请求,确定多个目标节点,也可通过识别项目发布请求中配置的节点信息实现。具体例如,项目发布请求中携带有项目运行所在服务器的ip端口(如192.168.1.34:10001)和路径(如/data/www/test/)。

s1006,将项目数据推送至各目标节点的临时目录中。

本步骤中,发布中心服务器可先获取各目标节点的临时目录接口,再将获取的项目数据推送至各目标节点的临时目录中。

其中,临时目录,指的是设置在各目标节点上的用来接收推送过来的增量代码文件的目录,该目录可保证项目推送到目标节点后不立即对项目进行更新和发布,一方面可等待全部目标节点推送完成后,同时执行发布操作,以保证所有节点同源发布,提高一致性;另一方面,有助于开发人员在项目推送到目标节点后具有调整和执行其他逻辑运算的时机,起到缓冲作用,同时使得项目发布流程更合理,稳定性、可扩展性及可控性更强。

推送项目数据,可通过本地的linux上的rsync工具完成,当然也可通过其他工具进行数据推送,以实际情况为准。

s1008,确定各目标节点的临时目录中的项目数据推送完成,获取各目标节点的离线目录;离线目录用于存储待运行的项目数据。

确定各目标节点的临时目录中的项目数据推送完成的方式可为多种;例如,发布中心服务器可向各目标节点发送周期性或一次性的指令,使各目标节点在数据推送完成后反馈信号,待全部目标节点均反馈回信号后,即确定推送完成;或者,由各目标节点在数据推送完成后自动反馈发布中心服务器信号,待全部目标节点均反馈后,确定推送完成;具体方式还可根据实际情况设置为其他,此处不赘述。

当发布中心服务器确定所有目标节点的临时目录中的项目数据均推送完成后,获取各目标节点的用于存储待运行的项目数据的离线目录,目的在于将临时目录中的项目数据同步到该离线目录中;离线同步完成后,通过将各目标节点的离线目录同时转换为线上状态即可实现各目标节点上项目数据的同时发布。

其中,每个目标节点的离线目录可具有一固定的入口路径,通过识别各目标节点的入口路径,即可获取各目标节点的离线目录。

需要说明的是,若项目数据对应的待发布项目首次发布,则可能无法找到对应的离线目录,此时,需要发布中心服务器指示各目标节点自行创建离线目录,而后将新建的离线目录入口路径返回至发布中心服务器,使其获取各目标节点的离线目录。

s1010,向各目标节点发送同步指令;同步指令用于将每个目标节点的临时目录中的项目数据同步至各自的离线目录中。

即由发布中心服务器发送同步指令给每个目标节点,以使每个目标节点将临时目录中的项目数据同步至各自的离线目录中。

s1012,确定各目标节点的离线目录中的项目数据同步完成,向各目标节点发送切换指令;切换指令用于将各目标节点的离线目录切换为线上目录,线上目录用于存储实际运行的项目数据。

确定各目标节点的离线目录中的项目数据同步完成的方式同样可为多种;例如,发布中心服务器可向各目标节点发送周期性或一次性的指令,使各目标节点在数据同步完成后反馈信号,待全部目标节点均反馈回信号后,即确定同步完成;或者,由各目标节点在数据同步完成后自动反馈发布中心服务器信号,待全部目标节点均反馈后,确定同步完成;具体方式还可根据实际情况设置为其他,此处不赘述。

其中,离线目录用于存储待运行的项目数据,线上目录用于存储实际运行的项目数据,将离线目录切换为线上目录,即表示将待运行的项目数据切换为实际运行的项目数据,进一步表示将离线目录中的项目数据正式发布。该过程中,线上目录不仅起到发布项目数据的作用,还用于存储实际运行的项目数据。

另外,将各目标节点的离线目录切换为线上目录,可理解为,将各目标节点的离线目录统一切换为线上目录,进一步意味着各目标节点离线目录存储的待运行的项目数据几乎同时开始发布。事实上,只要使离线目录中的项目运行,使切换前的线上目录中正在运行的项目停止运行即可,上述将离线目录切换为线上目录的切换方式可为多种,可根据实际情况进行选取和设置。

需要说明的是,项目数据可以理解为是项目程序文件,也可为以其他存储形式存在的待发布、待运行或正在运行的项目数据;该项目数据在发布过程的不同阶段,其存在形式可相同,也可不同,可根据实际情况进行设定和封装,此处不作具体限定。

上述实施例的项目发布方法中,通过接收发布平台发送的项目发布请求,并根据项目发布请求,获取待发布项目对应的项目数据和多个目标节点,将项目数据推送至各目标节点的临时目录中,待推送完成后,将每个目标节点的临时目录中的项目数据同步至各自的离线目录中,全部目标节点同步完成后,将各目标节点的离线目录统一切换为线上目录,以实际运行该项目数据。该方法对项目发布流程进行了改进和优化,所有目标节点同源且同时发布项目,避免了发布过程中访问代码不一致及报错的问题,提升了用户体验,极大地降低了系统风险;同时,可不需要开发人员在发布期间操作,项目可随时自动发布和快速响应线上问题,有效提高了项目发布的时效性;另外,多个项目可通过发布平台独立实现上述发布流程,据此,多个项目可同时并行发布,代码同步和更新总耗时短,极大程度提高了项目发布效率。

在一些实施例中,于步骤s1002之前,该项目发布方法还可包括:接收发布平台发送的节点检测请求;根据节点检测请求,向各目标节点发送节点检测指令;若接收到各目标节点根据节点检测指令反馈的正常响应信号,向发布平台发送节点可用信号。

需要说明的是,发布中心服务器可部署有center服务,节点服务器可部署agent服务,两类服务器可通过center服务和agent服务进行通信,并执行节点操作。此时,项目节点的检测过程可为,发布平台操作触发发布程序,发布程序将发送数据(节点检测请求)到center服务接口,通知center服务根据项目配置的节点信息,连接所有对应节点的agent服务,并发送节点检测指令,以确认需要发布的节点agent服务是否能够正常通信,收到所有节点回复的正常响应信号即可向告知发布平台所有节点可用,可开始发布流程。

具体地,连接所有对应节点的agent服务可通过发起http请求进行连接;正常响应信号可具体为返回状态200(200意为响应正常,此为服务器返回页面的响应头信息),当然,也可通过其他数据状态字段确认agent服务是否可用。

在一些实施例中,s1004具体可包括:根据项目发布请求,从项目仓库中获取待发布项目对应的项目数据。

此处,项目仓库可以理解为所有项目版本管理的git仓库,用来存放项目所有内容的仓库服务器。

在一些实施例中,项目发布请求中携带有项目标识;s1004具体还可包括:识别项目发布请求中的项目标识,根据项目标识确定待发布项目,并判断本地是否存在待发布项目对应的项目目录;若不存在,则从项目仓库中拉取待发布项目的全部数据至本地,作为对应的项目数据;和/或,若存在,则从项目仓库中获取待发布项目对应的增量数据或回滚数据,作为对应的项目数据。

其中,项目标识可理解为项目的唯一id,用于区分待发布项目的标识;根据项目标识确定待发布项目,即通过识别项目发布请求中的项目标识,根据识别结果确定对应的待发布项目。

在本实施例中,由于每次发布均要经由发布中心服务器,进而推送到节点服务器,对于正在运行的线上项目而言,发布中心服务器上将设置有从项目仓库拉取到本地的与线上项目对应的项目目录,在针对该线上项目进行更新发布时,仓库中的更新代码将会被拉取到该项目目录中,再执行后续的推送流程。对于新项目而言,发布中心服务器也将从项目仓库中将该项目和对应的项目目录一并拉取到本地,以便后续在该项目目录下执行该新项目的增量更新。

故而,发布中心服务器在判断待发布项目是新项目(首次发布)还是旧项目(非首次发布)时,可通过判断本地是否存在待发布项目对应的项目目录,若存在,则说明待发布项目是旧项目,可直接从项目仓库中拉取增量数据或回滚数据,执行增量更新;若不存在,则说明待发布项目是新项目,可先从项目仓库中拉取该项目及项目目录,再将拉取的项目数据推送至各目标节点。

应当指出的是,发布中心服务器在推送项目数据时,一般只推送项目数据而不推送项目目录,以减少内容传输,提高项目发布效率;通过设置项目目录,使得项目数据便于跟踪和传输,保证所有目标节点项目发布的一致性和同源性。

在一些实施例中,该项目发布方法还可以包括:检测各目标节点中是否存在临时目录;若不存在,则指示各目标节点新建临时目录。

需要说明的是,agent服务在每次启动和执行推送操作的时候均会判断是否存在与待发布的项目数据对应的临时目录,若不存在,则创建;若存在,则直接使用。发布中心服务器的center服务可在接收到目标节点agent服务反馈的无临时目录信息后,向agent服务发送用于新建临时目录的指令,agent服务可通过响应该指令以新建临时目录。

在一些实施例中,s1008具体可包括:向各目标节点发送更新确认指令;更新确认指令用于指示目标节点在确认临时目录中的项目数据推送完成之后,返回推送反馈信号;若接收到全部目标节点返回的推送反馈信号,确定各目标节点的临时目录中的项目数据推送完成。

在一些实施例中,上述的推送反馈信号中携带有目标节点的临时目录中的项目数据推送完成的时间信息。

其中,时间信息可指目标节点的临时目录中的项目数据推送完成后agent服务确认的目录更新完成的时刻或时间点。

在一些实施例中,s1008中的确定各目标节点的临时目录中的项目数据推送完成的步骤之后,该项目发布方法还可包括:将各目标节点返回的推送反馈信号同步至发布平台。

上述步骤中本地与目标节点之间均可通过center服务和agent服务进行通信。当center服务收到每个agent返回的推送反馈信号,可将各推送反馈信号同步至发布平台,以便于开发人员查看和掌握各节点的工作情况。

在一些实施例中,s1008中的获取各目标节点的离线目录的步骤,具体可以包括:检测各目标节点中是否存在离线目录;若存在,则获取所述离线目录;若不存在,则指示各目标节点新建离线目录,并获取所述离线目录。

同时,在一些实施例中,s1012中的将各目标节点的离线目录切换为线上目录的步骤,具体可以包括:将软链接指向所述离线目录,以将所述离线目录切换为线上目录。

在一个实施例中,节点服务器上设置有项目运行目录,该项目运行目录下可包含软链接目录、线上目录和离线目录。具体例如,项目运行目录包含软链接目录、v1目录和v2目录;其中,软链接目录用来对上层、对外部显示统一入口路径,v1目录和v2目录则用来作为离线目录和线上目录,线上目录即为软链接指向的目录。假设软链接指向v1,则意味着v1目录为线上目录,v2目录为离线目录。

更具体地,假设对外的软链接为/data/www/test,/data/www/test_v1为线上目录,即/data/www/test当前指向的正在运行的实际目录,此时,/data/www/test_v2为离线目录,当前不运行。项目数据同步时,将更新代码到/data/www/test_v2,由于是离线更新,不影响正在运行的/data/www/test_v1,此时/data/www/test_v2即为离线目录。

由于v2目录为离线目录,项目数据将被同步至v2目录;所有节点的离线目录完成推送和更新后,统一切换软链接,使其指向离线目录,即v2目录,实现目录统一切换,完成项目数据在各目标节点上的统一发布。此时,v1目录则作为新的离线目录,等待接收后续更新的项目数据。

需要说明的是,新项目在发布时,各目标节点的项目运行目录中可能不存在离线目录,此时center服务可指示各目标节点的agent服务新建离线目录,而后,center服务可根据获取的离线目录(v1和v2),将每个目标节点的临时目录中的待发布项目数据同步至各自的离线目录中,再将软链接指向其中一个目录中,使其切换为线上目录。

增量数据或回滚数据在发布时,各目标节点的项目运行目录中将存在离线目录(v1或v2),此时center服务可直接获取各目标节点的离线目录,并将每个目标节点的临时目录中的待发布项目数据同步至各自的离线目录中,再将软链接指向离线目录,使其切换为线上目录。

在一些实施例中,上述的切换指令还用于指示目标节点在将离线目录切换为线上目录之后,执行清除进程缓存操作。

需要说明的是,针对不同的待发布项目类型,清除进程缓存这一操作可能会有不同。例如,针对php项目,可执行php-fpm清除子进程缓存的操作;针对python项目,如web类型的python项目,可根据其具体类型进行刷新以外的额外操作;针对lua项目,可省去该刷新步骤。针对其他类型的项目,节点在切换目录后的操作可能有所不同,此处不作赘述。

在一些实施例中,步骤s1012之后,该项目发布方法还可包括:接收各目标节点发送的发布成功信号;发布成功信号由目标节点检测到离线目录切换成功后发出;将各目标节点发送的发布成功信号同步至发布平台。

在一些实施例中,s1012中的确定各目标节点的离线目录中的项目数据同步完成的步骤,具体可包括:通过center服务向各目标节点的agent服务发送同步确认指令;同步确认指令用于指示agent服务确认离线目录中的项目数据同步完成。

在一些实施例中,s1012中的确定各目标节点的离线目录中的项目数据同步完成的步骤之后,该项目发布方法还可包括:将各目标节点的agent服务返回的同步反馈信号同步至发布平台。

上述步骤中,center服务通过将每个阶段各目标节点返回的信息同步至发布平台,有助于开发人员通过发布平台实时展示的信息,对发布流程进行监控;同时,便于人工调整发布流程或针对发布中心服务器、项目仓库、节点服务器等进行其它逻辑控制。具体可通过参考图3展示的实施例方案,明晰上述详细的发布流程。

需要说明的是,项目回滚流程等同于发布,回滚时只需根据发布项目唯一的id信息,拉取项目仓库中对应的项目版本至发布中心服务器的项目目录中,然后根据上述发布流程推送到节点服务器即可。

在一个实施例中,若某目标节点上的项目数据发布失败,对应的agent服务可向center服务发送发布失败信号,center服务将该发布失败信号同步到发布平台,开发人员即可针对性地对节点进行修复,或重新执行发布操作。

上述各实施例提供的项目平滑发布方法,具有以下有益效果:

1、支持多项目并行发布,发布流程自动化程度高;通过构建开发整个发布流程,使得每个项目均具有独立的发布流程,整个流程无需人员参与,一方面支持多个项目同时并行发布,另一方面降低了人力成本和开发人员的维护难度;

2、发布时效性高,完全依靠程序并发完成多节点的项目同步、发布、回滚;

3、发布过程用户访问节点基本没有异常;通过设置v1目录和v2目录,将临时目录中的数据同步到离线目录,满足离线更新条件;

4、切换快速、无异常;通过切换软链接指向离线目录实现平滑无中断发布;

5、发布效率高,一天可执行多次发布;自动化程度高,每个发布流程从创建到完成可在两分钟内完成。

应该理解的是,对于前述的各方法实施例,虽然流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,方法实施例的流程图中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。

基于与上述实施例中的项目发布方法相同的思想,本文还提供一种项目发布装置1100。

在一个实施例中,如图4所示,提供了一种项目发布装置1100,包括:接收模块1101、获取模块1102、推送模块1103、确定模块1104、同步模块1105和切换模块1106,其中:

接收模块1101,用于接收发布平台发送的项目发布请求;

获取模块1102,用于根据项目发布请求,获取待发布项目对应的项目数据和多个目标节点;

推送模块1103,用于将项目数据推送至各目标节点的临时目录中;

确定模块1104,用于确定各目标节点的临时目录中的项目数据推送完成,获取各目标节点的离线目录;离线目录用于存储待运行的项目数据;

同步模块1105,用于向各目标节点发送同步指令;同步指令用于获取各目标节点的离线目录,将每个目标节点的临时目录中的项目数据同步至各自的离线目录中;

切换模块1106,用于确定各目标节点的离线目录中的项目数据同步完成,向各目标节点发送切换指令;切换指令用于将各目标节点的离线目录切换为线上目录,线上目录用于存储实际运行的项目数据。

在一些实施例中,项目发布装置1100还包括:节点检测模块,用于接收发布平台发送的节点检测请求;根据节点检测请求,向各目标节点发送节点检测指令;若接收到各目标节点根据节点检测指令反馈的正常响应信号,向发布平台发送节点可用信号。确定发布平台已得知各目标节点可用后,即可向接收模块1101发送一通知信息。

在一些实施例中,获取模块1102,具体用于根据项目发布请求,从项目仓库中获取待发布项目对应的项目数据。

在一些实施例中,项目发布请求中携带有项目标识;获取模块1102,具体还可用于识别项目发布请求中的项目标识,根据项目标识确定待发布项目,并判断本地是否存在待发布项目对应的项目目录;若不存在,则从项目仓库中拉取待发布项目的全部数据至本地,作为对应的项目数据;和/或,若存在,则从项目仓库中获取待发布项目对应的增量数据或回滚数据,作为对应的项目数据。

在一些实施例中,项目发布装置1100还包括:临时目录新建模块,用于检测各目标节点中是否存在临时目录;若不存在,则指示各目标节点新建临时目录。

在一些实施例中,推送模块1103,具体用于基于本地的rsync工具,将项目数据推送至各目标节点的临时目录中。

在一些实施例中,确定模块1104,具体用于向各目标节点发送更新确认指令;更新确认指令用于指示目标节点在确认临时目录中的项目数据推送完成之后,返回推送反馈信号;若接收到全部目标节点返回的推送反馈信号,确定各目标节点的临时目录中的项目数据推送完成。

在一些实施例中,推送反馈信号中携带有目标节点的临时目录中的项目数据推送完成的时间信息。

在一些实施例中,项目发布装置1100还包括:推送反馈模块,用于将各目标节点返回的推送反馈信号同步至发布平台。

在一些实施例中,确定模块1104,具体还用于检测各目标节点中是否存在离线目录;若存在,则获取所述离线目录;若不存在,则指示各目标节点新建离线目录,并获取所述离线目录。

在一些实施例中,切换模块1106,具体用于将软链接指向所述离线目录,以将所述离线目录切换为线上目录。

在一些实施例中,切换指令还用于指示目标节点在将离线目录切换为线上目录之后,执行清除进程缓存操作。

在一些实施例中,项目发布装置1100还包括:成功发布通知模块,用于接收各目标节点发送的发布成功信号;发布成功信号由目标节点检测到离线目录切换成功后发出;将各目标节点发送的发布成功信号同步至发布平台。

在一些实施例中,切换模块1106,具体还用于通过center服务向各目标节点的agent服务发送同步确认指令;同步确认指令用于指示agent服务确认离线目录中的项目数据同步完成。

在一些实施例中,项目发布装置1100还包括:同步反馈模块,用于将各目标节点的agent服务返回的同步反馈信号同步至发布平台。

关于项目发布装置1100的具体限定可以参见上文中对于项目发布方法的限定,在此不再赘述。上述项目发布装置1100中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。

此外,上述示例的项目发布装置1100的实施方式中,各程序模块的逻辑划分仅是举例说明,实际应用中可以根据需要,例如出于相应硬件的配置要求或者软件的实现的便利考虑,将上述功能分配由不同的程序模块完成,即将项目发布装置1100的内部结构划分成不同的程序模块,以完成以上描述的全部或者部分功能。

在一个实施例中,提供了一种项目发布系统,其结构图可如图5所示。该项目发布系统包括发布平台、发布中心服务器和多个目标节点;其中,

发布平台,用于向发布中心服务器发送项目发布请求;

发布中心服务器,用于根据项目发布请求,获取对应的项目数据和多个目标节点;将项目数据推送至各目标节点的临时目录中;

多个目标节点,用于在确认各自临时目录中的项目数据推送完成之后,返回推送反馈信号至发布中心服务器;

发布中心服务器,还用于根据全部目标节点返回的推送反馈信号,向各目标节点发送同步指令;

多个目标节点,还用于根据同步指令,将临时目录中的项目数据同步至各自的离线目录中;同步完成之后,返回同步反馈信号至发布中心服务器;离线目录用于存储待运行的项目数据;

发布中心服务器,还用于根据全部目标节点返回的同步反馈信号,向各目标节点发送切换指令;

多个目标节点,还用于根据切换指令,将各自的离线目录切换为线上目录;线上目录用于存储实际运行的项目数据。

本申请的项目发布系统与本申请的项目发布方法一一对应,关于项目发布系统的具体限定可以参见上文中对于项目发布方法的限定,在上述项目发布方法的实施例阐述的技术特征及其有益效果均适用于项目发布系统的实施例中,在此不再赘述。

本领域技术人员可以理解,图5中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的项目发布系统的限定,具体的项目发布系统可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。

在一个实施例中,提供了一种计算机设备,该计算机设备的内部结构图可以如图6所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口和数据库。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储项目发布用的数据。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种项目发布方法。

本领域技术人员可以理解,图6中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。

在一个实施例中,提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现以下步骤:接收发布平台发送的项目发布请求;根据项目发布请求,获取待发布项目对应的项目数据和多个目标节点;将项目数据推送至各目标节点的临时目录中;确定各目标节点的临时目录中的项目数据推送完成,获取各目标节点的离线目录;离线目录用于存储待运行的项目数据;向各目标节点发送同步指令;同步指令用于将每个目标节点的临时目录中的项目数据同步至各自的离线目录中;确定各目标节点的离线目录中的项目数据同步完成,向各目标节点发送切换指令;切换指令用于将各目标节点的离线目录切换为线上目录,线上目录用于存储实际运行的项目数据。

在一个实施例中,处理器执行计算机程序时还实现以下步骤:接收发布平台发送的节点检测请求;根据节点检测请求,向各目标节点发送节点检测指令;若接收到各目标节点根据节点检测指令反馈的正常响应信号,向发布平台发送节点可用信号。

在一个实施例中,处理器执行计算机程序时还实现以下步骤:根据项目发布请求,从项目仓库中获取待发布项目对应的项目数据。

在一个实施例中,项目发布请求中携带有项目标识;处理器执行计算机程序时还实现以下步骤:识别项目发布请求中的项目标识,根据项目标识确定待发布项目,并判断本地是否存在待发布项目对应的项目目录;若不存在,则从项目仓库中拉取待发布项目的全部数据至本地,作为对应的项目数据;和/或,若存在,则从项目仓库中获取待发布项目对应的增量数据或回滚数据,作为对应的项目数据。

在一个实施例中,处理器执行计算机程序时还实现以下步骤:检测各目标节点中是否存在临时目录;若不存在,则指示各目标节点新建临时目录。

在一个实施例中,处理器执行计算机程序时还实现以下步骤:基于本地的rsync工具,将项目数据推送至各目标节点的临时目录中。

在一个实施例中,处理器执行计算机程序时还实现以下步骤:向各目标节点发送更新确认指令;更新确认指令用于指示目标节点在确认临时目录中的项目数据推送完成之后,返回推送反馈信号;若接收到全部目标节点返回的推送反馈信号,确定各目标节点的临时目录中的项目数据推送完成。

在一个实施例中,推送反馈信号中携带有目标节点的临时目录中的项目数据推送完成的时间信息。

在一个实施例中,处理器执行计算机程序时还实现以下步骤:将各目标节点返回的推送反馈信号同步至发布平台。

在一个实施例中,处理器执行计算机程序时还实现以下步骤:检测各目标节点中是否存在离线目录;若存在,则获取所述离线目录;若不存在,则指示各目标节点新建离线目录,并获取所述离线目录。

在一个实施例中,处理器执行计算机程序时还实现以下步骤:将软链接指向所述离线目录,以将所述离线目录切换为线上目录。

在一个实施例中,切换指令还用于指示目标节点在将离线目录切换为线上目录之后,执行清除进程缓存操作。

在一个实施例中,处理器执行计算机程序时还实现以下步骤:接收各目标节点发送的发布成功信号;发布成功信号由目标节点检测到离线目录切换成功后发出;将各目标节点发送的发布成功信号同步至发布平台。

在一个实施例中,处理器执行计算机程序时还实现以下步骤:通过center服务向各目标节点的agent服务发送同步确认指令;同步确认指令用于指示agent服务确认离线目录中的项目数据同步完成。

在一个实施例中,处理器执行计算机程序时还实现以下步骤:将各目标节点的agent服务返回的同步反馈信号同步至发布平台。

在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:接收发布平台发送的项目发布请求;根据项目发布请求,获取待发布项目对应的项目数据和多个目标节点;将项目数据推送至各目标节点的临时目录中;确定各目标节点的临时目录中的项目数据推送完成,获取各目标节点的离线目录;离线目录用于存储待运行的项目数据;向各目标节点发送同步指令;同步指令用于将每个目标节点的临时目录中的项目数据同步至各自的离线目录中;确定各目标节点的离线目录中的项目数据同步完成,向各目标节点发送切换指令;切换指令用于将各目标节点的离线目录切换为线上目录,线上目录用于存储实际运行的项目数据。

在一个实施例中,计算机程序被处理器执行时还实现以下步骤:接收发布平台发送的节点检测请求;根据节点检测请求,向各目标节点发送节点检测指令;若接收到各目标节点根据节点检测指令反馈的正常响应信号,向发布平台发送节点可用信号。

在一个实施例中,计算机程序被处理器执行时还实现以下步骤:根据项目发布请求,从项目仓库中获取待发布项目对应的项目数据。

在一个实施例中,项目发布请求中携带有项目标识;计算机程序被处理器执行时还实现以下步骤:识别项目发布请求中的项目标识,根据项目标识确定待发布项目,并判断本地是否存在待发布项目对应的项目目录;若不存在,则从项目仓库中拉取待发布项目的全部数据至本地,作为对应的项目数据;和/或,若存在,则从项目仓库中获取待发布项目对应的增量数据或回滚数据,作为对应的项目数据。

在一个实施例中,计算机程序被处理器执行时还实现以下步骤:检测各目标节点中是否存在临时目录;若不存在,则指示各目标节点新建临时目录。

在一个实施例中,计算机程序被处理器执行时还实现以下步骤:基于本地的rsync工具,将项目数据推送至各目标节点的临时目录中。

在一个实施例中,计算机程序被处理器执行时还实现以下步骤:向各目标节点发送更新确认指令;更新确认指令用于指示目标节点在确认临时目录中的项目数据推送完成之后,返回推送反馈信号;若接收到全部目标节点返回的推送反馈信号,确定各目标节点的临时目录中的项目数据推送完成。

在一个实施例中,推送反馈信号中携带有目标节点的临时目录中的项目数据推送完成的时间信息。

在一个实施例中,计算机程序被处理器执行时还实现以下步骤:将各目标节点返回的推送反馈信号同步至发布平台。

在一个实施例中,计算机程序被处理器执行时还实现以下步骤:检测各目标节点中是否存在离线目录;若存在,则获取所述离线目录;若不存在,则指示各目标节点新建离线目录,并获取所述离线目录。

在一个实施例中,计算机程序被处理器执行时还实现以下步骤:将软链接指向所述离线目录,以将所述离线目录切换为线上目录。

在一个实施例中,切换指令还用于指示目标节点在将离线目录切换为线上目录之后,执行清除进程缓存操作。

在一个实施例中,计算机程序被处理器执行时还实现以下步骤:接收各目标节点发送的发布成功信号;发布成功信号由目标节点检测到离线目录切换成功后发出;将各目标节点发送的发布成功信号同步至发布平台。

在一个实施例中,计算机程序被处理器执行时还实现以下步骤:通过center服务向各目标节点的agent服务发送同步确认指令;同步确认指令用于指示agent服务确认离线目录中的项目数据同步完成。

在一个实施例中,计算机程序被处理器执行时还实现以下步骤:将各目标节点的agent服务返回的同步反馈信号同步至发布平台。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(rom)、可编程rom(prom)、电可编程rom(eprom)、电可擦除可编程rom(eeprom)或闪存。易失性存储器可包括随机存取存储器(ram)或者外部高速缓冲存储器。作为说明而非局限,ram以多种形式可得,诸如静态ram(sram)、动态ram(dram)、同步dram(sdram)、双数据率sdram(ddrsdram)、增强型sdram(esdram)、同步链路(synchlink)dram(sldram)、存储器总线(rambus)直接ram(rdram)、直接存储器总线动态ram(drdram)、以及存储器总线动态ram(rdram)等。

以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。

在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。

本文实施例的术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或(模块)单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。

在本文中提及的“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。

在本文中提及的“第一\第二”仅仅是是区别类似的对象,不代表针对对象的特定排序,可以理解地,“第一\第二”在允许的情况下可以互换特定的顺序或先后次序。应该理解“第一\第二”区分的对象在适当情况下可以互换,以使这里描述的实施例能够以除了在这里图示或描述的那些以外的顺序实施。

以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1