CN115840582B - 一种服务器批量管理代理发布系统 - Google Patents
一种服务器批量管理代理发布系统 Download PDFInfo
- Publication number
- CN115840582B CN115840582B CN202310144938.XA CN202310144938A CN115840582B CN 115840582 B CN115840582 B CN 115840582B CN 202310144938 A CN202310144938 A CN 202310144938A CN 115840582 B CN115840582 B CN 115840582B
- Authority
- CN
- China
- Prior art keywords
- online
- server
- item
- module
- control unit
- 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
Images
Landscapes
- Information Transfer Between Computers (AREA)
Abstract
本发明涉及计算机软件技术领域,尤其涉及一种服务器批量管理代理发布系统,包括采集模块,用以采集上线信息和对应的项目信息,存储模块用以对采集模块采集的上线信息和项目信息进行储存,并将项目信息发送至调度模块,调度模块用以根据项目信息确定对应项目的执行方式,发布模块用以根据接收到的请求类型确定发布方式,中控模块,包括用以确定代码发布量的运算单元、用以在第一代码发布量下控制发布模块采用第一发布方式的第一控制单元、用以在第二代码发布量下根据网络流量占比确定对该上线项目的操作方式的第二控制单元、以及用以确定执行上线操作的服务器占比的第三控制单元。本发明通过程序自动化进行代码上线,提高了效率。
Description
技术领域
本发明涉及计算机软件技术领域,尤其涉及一种服务器批量管理代理发布系统。
背景技术
近年来随着互联网技术的快速发展,技术更新迭代越发的迅速。从上世纪90年代的web1.0到如今的web3.0,互联网无时无刻都不在快速发展,与此同时快速发展的技术,给IT相关从业者也将带来不小的挑战。如何保证业务功能的平稳上线,又要保证新功能上线期间,不会对正在使用系统的发起人造成影响。以及在上线过程中发生异常时,如何快速的回滚至正确的版本,这些都将是今后IT工作者必须要考虑的问题。
中国专利公开号:CN104717249B公开了一种远程操作应用发布的方法、代理服务器和系统,涉及计算机软件技术领域,该方法包括:在外部应用系统和Citrix应用发布服务器之间设置代理服务器,所述代理服务器接收外部应用系统发来的远程操作指令;通过内置的JACOB组件调用COM组件按照所述远程操作指令对所述Citrix应用发布服务器中的应用发布执行对应的远程操作;所述代理服务器将所述Citrix应用发布服务器返回的操作结果发送至所述外部应用系统。能够通过Citrix通讯代理的配置,实现不同编译语言平台服务之间的通讯,从而实现了基于异构类平台的外部系统远程控制Citrix服务器上应用的发布及变更,而无需关心平台底层操作系统的差异。
然而,传统发布方式大量依赖于人工操作,即开发人员代码编写完成之后,交由第三方人员手动上传至服务器,完成代码的发布。然后交由相关人员进行验证。上述流程效率较低,不能充分利用互联网带给我们的便利,此种方式的主要缺点如下:
1、大量依赖人工操作,每个人的操作习惯都有差异,不能做到统一标准,因此在后期维护成本过高。
2、由于是人工操作,失误在所难免,因此简单的代码发布过程中,也会存在相应的风险。
3、随着互联网的发展,服务器数量可能会直线上升,因此手动发布带来的工作量将急剧提升。
4、当上线的功能存在异常时,很难做到快速回滚至正确版本。
5、上线过程中势必会造成对现有使用者的影响,严重影响用户体验。
发明内容
为此,本发明提供一种服务器批量管理代理发布系统,用以部分克服以上问题。
为此,本发明提供一种服务器批量管理代理发布系统,包括:
采集模块,用以在第一预设条件下采集发起人输入的上线信息以获取发起人的操作类型,并基于操作类型采集对应的项目信息;所述第一预设条件为发起人在所述采集模块发起上线操作;
存储模块,其与所述采集模块相连,用以对采集模块采集的所述上线信息和所述项目信息进行储存,并将项目信息发送至调度模块;
调度模块,其与所述存储模块相连,用以根据接收的所述项目信息确定对应项目的执行方式,所述项目包括上线项目和回滚项目;
发布模块,其与所述调度模块相连,用以在第一执行方式和第二执行方式下对上线项目采用第一发布方式,在第三执行方式下对回滚项目采用第二发布方式;
中控模块,其分别与所述调度模块和所述发布模块相连,包括互相连接的运算单元、第一控制单元、第二控制单元和第三控制单元,其中,
所述运算单元用以确定上线项目的代码发布量;
所述第一控制单元用以在第一代码发布量时控制所述发布模块采用第一发布方式;
所述第二控制单元用以在第二代码发布量时计算上线项目对应的服务器上网络流量占比B并根据所述网络流量占比B确定是否对该上线项目进行上线操作;
所述第三控制单元用以计算存在上线操作任务的服务器的占比C并根据所述占比C与预设服务器占比标准C0的比对结果确定执行上线操作的服务器的占比,以及在服务器的网络流量平均占比符合预设条件下对预设服务器占比标准C0进行调节以提高执行上线操作的服务器的占比;
通知模块,其与所述发布模块相连,用以将发布结果返回给发起人。
进一步地,所述采集模块包括:
采集单元,用以在操作类型为更新操作时采集上线项目信息,以及在操作类型为回滚操作时采集回滚项目信息;
第一发送单元,其与所述采集单元相连,用以将所述上线项目信息发送至所述存储模块;
第二发送单元,其与所述采集单元相连,用以将回滚项目信息发送至所述存储模块。
进一步地,所述调度模块根据接收的所述项目信息确定对应项目的执行方式,其中,
所述调度模块在第二预设条件下判断项目类型,并根据项目类型确定对应项目的执行方式;
若项目类型为编译型项目,则触发第一执行方式,所述第一执行方式为根据上线项目采用的编程语言进行编译处理,并将编译后的产物发送至所述发布模块以进行上线请求;
若项目类型非编译型项目,则触发第二执行方式,所述第二执行方式为直接拉取上线项目相关代码并发送至所述发布模块以进行上线请求;
所述调度模块在第三预设条件下触发第三执行方式,所述第三执行方式为直接将回滚项目信息发送至所述发布模块以进行回滚请求;
所述第二预设条件为所述调度模块接收的所述项目信息为上线项目信息;
所述第三预设条件为所述调度模块接收的所述项目信息为回滚项目信息。
进一步地,所述发布模块根据接收到的请求类型确定发布方式,其中,
第一发布方式为,在对应服务器上对上线项目进行上线操作;
第二发布方式为,在对应服务器上对回滚项目使用ansible进行回滚操作;
所述第一发布方式满足接收到的请求为上线请求;
所述第二发布方式满足接收到的请求为回滚请求。
进一步地,所述运算单元统计任一上线项目的代码发布量Q,运算单元将Q与代码发布量标准Q0进行比对,
若Q>Q0,所述运算单元将Q对应的代码发布量记为第一代码发布量;
若Q<Q0,所述运算单元将Q对应的代码发布量记为第二代码发布量。
进一步地,所述第一控制单元和所述第二控制单元根据代码发布量确定是否采用第一发布方式,其中,
若上线项目的代码发布量为第一代码发布量,所述第一控制单元控制所述发布模块采用第一发布方式对上线项目进行上线操作;
若上线项目的代码发布量为第二代码发布量,所述第二控制单元计算上线项目对应的服务器上网络流量占比B,并根据网络流量占比B确定是否对该上线项目进行上线操作;
其中,网络流量占比B=S/S0,S为上线项目对应的服务器上的网络流量,S0为上线项目对应的服务器满载量。
进一步地,所述第二控制单元将上线项目对应的服务器上网络流量占比B与预设网络流量占比标准B0进行比对并根据比对结果确定是否对该上线项目进行上线操作,其中,
在第一网络流量占比比对结果下,所述第二控制单元控制所述发布模块采用第一发布方式对该上线项目进行上线操作;
在第二网络流量占比比对结果下,所述第二控制单元判定不对该上线项目进行上线操作并对下一上线任务的代码发布量进行统计以判断是否满足采用第一发布方式的条件,若下一上线任务的代码发布量为第一代码发布量则进行上线操作,同时第二控制单元停止对该服务器的新用户分配直至该服务器的网络流量占比小于B0,并在当前上线项目操作完毕后进行该第二代码发布量对应的上线项目的上线操作;
其中,所述第一网络流量占比比对结果满足B<B0,所述第二网络流量占比比对结果满足B≥B0。
进一步地,所述第三控制单元在若干服务器同时存在上线操作任务时,第三控制单元计算存在上线操作任务的服务器的占比C,设定C=N/N0,其中,N为存在上线操作任务的服务器的数量,N0为服务器的总数量,第三控制单元将占比C与预设服务器占比标准C0进行比对,并根据比对结果确定执行上线操作的服务器的占比,其中,
在第一服务器占比比对结果下,所述第三控制单元将执行上线操作的服务器的占比确定为C0,并按照所述发布模块接收上线请求的先后顺序控制对应的服务器执行上线操作;
在第二服务器占比比对结果下,所述第三控制单元将执行上线操作的服务器的占比确定为C;
其中,所述第一服务器占比比对结果满足C>C0,所述第二服务器占比比对结果满足C≤C0,30%<C0<40%。
进一步地,所述第三控制单元计算服务器的网络流量平均占比Bp,设定
其中,Bi为任一服务器上网络流量占比,m为服务器总数量;
所述第三控制单元将服务器的网络流量平均占比Bp与预设网络流量占比标准B0进行比对,
在第一比对结果下,所述第三控制单元判定对预设服务器占比标准C0进行调节;
在第二比对结果下,所述第三控制单元判定不对预设服务器占比标准C0进行调节;
其中,所述第一比对结果满足Bp≤B0,所述第二比对结果满足Bp>B0。
进一步地,所述第三控制单元在第一比对结果下计算网络流量平均占比Bp与预设网络流量占比标准B0的流量差值ΔB,设定ΔB=B0-Bp,第三控制单元中设有第一预设流量差值ΔB1和第二预设流量差值ΔB2,ΔB1<ΔB2,第三控制单元将流量差值ΔB分别与ΔB1和ΔB2进行比对并根据比对结果确定对预设服务器占比标准C0的调节方式,其中,
第一调节方式为选用第一调节系数β1将预设服务器占比标准C0调节至第一服务器占比标准C1,设定C1=C0×β1;
第二调节方式为选用第二调节系数β2将预设服务器占比标准C0调节至第二服务器占比标准C2,设定C2=C0×β2;
第三调节方式为选用第三调节系数β3将预设服务器占比标准C0调节至第三服务器占比标准C3,设定C3=C0×β3;
其中,所述第一调节方式满足ΔB≥ΔB2,所述第二调节方式满足ΔB1≤ΔB<ΔB2,所述第三调节方式满足ΔB<ΔB1,1<β3<β2<β1<1.15。
与现有技术相比,本发明的有益效果在于,本发明通过程序自动化进行代码上线,极大程度上提高了生产力,使得能更好的专注于业务,优化用户体验;本发明所述发布系统在上线过程中让用户做到无感知,增强用户体验,并在上线过程中发生异常时,能够第一时间回滚到正确版本,降低服务的不可用性。
进一步地,本发明在代码发布量低于标准时,即代码发布量为第一代码发布量时控制所述发布模块采用第一发布方式对上线项目进行上线操作,而当代码发布量高于标准时,即代码发布量为第二代码发布量时根据服务器上网络流量占比对上线项目是否进行上线操作做进一步判断,服务器上网络流量占比高于标准时,服务器较为繁忙,服务的用户较多,此时不对第二代码发布量的上线项目进行上线操作,避免降低服务器的运算速度,进一步优化了用户体验,此时,第二控制单元对下一上线任务的代码发布量进行统计以判断是否满足采用第一发布方式的条件,若下一上线任务的代码发布量为第一代码发布量则进行上线操作,在不影响用户使用体验的前提下提高了上线项目的上线效率;服务器上网络流量占比低于标准时,服务器相对清闲,此时对第二代码发布量的上线项目进行上线操作,在不影响用户使用体验的前提下提高了上线项目的上线效率。
进一步地,本发明第三控制单元在若干服务器同时存在上线操作任务时,计算存在上线操作任务的服务器的占比C并根据所述占比C与预设服务器占比标准C0的比对结果确定执行上线操作的服务器的占比,以使执行上线操作的服务器的占比不超过预设服务器占比标准C0,通过以上技术方案,进一步优化了用户体验,提高了上线项目的上线效率。
进一步地,本发明第三控制单元在判定服务器的网络流量平均占比小于预设网络流量占比标准时,判定服务器还存在足够的运算空间,此时对预设服务器占比标准C0进行调节以增加预设服务器占比标准,并以调节后的预设服务器占比标准判定执行上线操作的服务器的占比,提高了执行上线操作的服务器的占比,提高了服务器在空闲时间进行上线操作的比例,进一步优化了用户体验,提高了上线项目的上线效率。
附图说明
图1为本发明实施例服务器批量管理代理发布系统的结构框图;
图2为本发明实施例中控模块的结构框图。
具体实施方式
为了使本发明的目的和优点更加清楚明白,下面结合实施例对本发明作进一步描述;应当理解,此处所描述的具体实施例仅仅用于解释本发明,并不用于限定本发明。
下面参照附图来描述本发明的优选实施方式。本领域技术人员应当理解的是,这些实施方式仅仅用于解释本发明的技术原理,并非在限制本发明的保护范围。
请参阅图1和图2所示,其中,图1为本发明实施例服务器批量管理代理发布系统的结构框图,图2为本发明实施例中控模块的结构框图,本发明所述服务器批量管理代理发布系统,包括:
采集模块,用以在第一预设条件下采集发起人输入的上线信息以获取发起人的操作类型,并基于操作类型采集对应的项目信息;所述第一预设条件为发起人在所述采集模块发起上线操作;
存储模块,其与所述采集模块相连,用以对采集模块采集的所述上线信息和所述项目信息进行储存,并将项目信息发送至调度模块;
调度模块,其与所述存储模块相连,用以根据接收的所述项目信息确定对应项目的执行方式,所述项目包括上线项目和回滚项目;
发布模块,其与所述调度模块相连,用以在第一执行方式和第二执行方式下对上线项目采用第一发布方式,在第三执行方式下对回滚项目采用第二发布方式;
中控模块,其分别与所述调度模块和所述发布模块相连,包括互相连接的运算单元、第一控制单元、第二控制单元和第三控制单元,其中,
所述运算单元用以确定上线项目的代码发布量;
所述第一控制单元用以在第一代码发布量时控制所述发布模块采用第一发布方式;
所述第二控制单元用以在第二代码发布量时计算上线项目对应的服务器上网络流量占比B并根据所述网络流量占比B确定是否对该上线项目进行上线操作;
所述第三控制单元用以计算存在上线操作任务的服务器的占比C并根据所述占比C与预设服务器占比标准C0的比对结果确定执行上线操作的服务器的占比,以及在服务器的网络流量平均占比符合预设条件下对预设服务器占比标准C0进行调节以提高执行上线操作的服务器的占比;
通知模块,其与所述发布模块相连,用以将发布结果返回给发起人。
本发明通过程序自动化进行代码上线,极大程度上提高了生产力,使得能更好的专注于业务,优化用户体验;本发明所述发布系统在上线过程中让用户做到无感知,增强用户体验,并在上线过程中发生异常时,能够第一时间回滚到正确版本,降低服务的不可用性。
所述上线信息包括项目名称、版本信息、发布人和发布类型,其中,
若发布类型为上线,所述采集模块判定操作类型为更新操作,并将对应的项目记为上线项目;
若发布类型为回滚,所述采集模块判定操作类型为回滚操作,并将对应的项目记为回滚项目。
所述项目信息包括上线项目信息和回滚项目信息,其中,
所述上线项目信息包括项目名称、版本信息、发布人和更新日期;
所述回滚项目信息包括项目名称和版本信息。
其中上线操作是由用户在采集模块发起的,用户将上线项目的版本信息提交,从而完成后续的上线操作。
具体而言,所述采集模块包括:
采集单元,用以在操作类型为更新操作时采集上线项目信息,以及在操作类型为回滚操作时采集回滚项目信息;
第一发送单元,其与所述采集单元相连,用以将所述上线项目信息发送至所述存储模块;
第二发送单元,其与所述采集单元相连,用以将回滚项目信息发送至所述存储模块。
所述存储模块根据所述操作类型确定对所述项目信息的储存方式,其中,
第一存储方式为将所述上线项目信息存储到MySQL数据库,同时将上线项目信息发送至所述调度模块;
第二存储方式为不对所述回滚项目信息进行储存,直接将回滚项目信息发送至所述调度模块;
所述第一存储方式满足操作类型为更新操作;
所述第二存储方式满足操作类型为回滚操作。
具体而言,所述调度模块根据接收的所述项目信息确定对应项目的执行方式,其中,
所述调度模块在第二预设条件下判断项目类型,并根据项目类型确定对应项目的执行方式;
若项目类型为编译型项目,则触发第一执行方式,所述第一执行方式为根据上线项目采用的编程语言进行编译处理,并将编译后的产物发送至所述发布模块以进行上线请求;
若项目类型非编译型项目,则触发第二执行方式,所述第二执行方式为直接拉取上线项目相关代码并发送至所述发布模块以进行上线请求;
所述调度模块在第三预设条件下触发第三执行方式,所述第三执行方式为直接将回滚项目信息发送至所述发布模块以进行回滚请求;
所述第二预设条件为所述调度模块接收的所述项目信息为上线项目信息;
所述第三预设条件为所述调度模块接收的所述项目信息为回滚项目信息。
具体而言,所述发布模块根据接收到的请求类型确定发布方式,其中,
第一发布方式为,在对应服务器上对上线项目进行上线操作;
第二发布方式为,在对应服务器上对回滚项目使用ansible进行回滚操作;
所述第一发布方式满足接收到的请求为上线请求;
所述第二发布方式满足接收到的请求为回滚请求。
发布模块接受到上线请求后,首先通过上线项目获取对应的负载均衡器信息,为了保证线上业务的平稳运行,通过负载均衡器摘除要上线的服务器,然后将代码同步至对应的服务器,代码同步完成后,在将服务器挂载至负载均衡器,然后继续循环发布,直到全部服务器代码发布完毕。
具体而言,所述运算单元统计任一上线项目的代码发布量Q,运算单元将Q与代码发布量标准Q0进行比对,
若Q>Q0,所述运算单元将Q对应的代码发布量记为第一代码发布量;
若Q<Q0,所述运算单元将Q对应的代码发布量记为第二代码发布量。
具体而言,所述第一控制单元和所述第二控制单元根据代码发布量确定是否采用第一发布方式,其中,
若上线项目的代码发布量为第一代码发布量,所述第一控制单元控制所述发布模块采用第一发布方式对上线项目进行上线操作;
若上线项目的代码发布量为第二代码发布量,所述第二控制单元计算上线项目对应的服务器上网络流量占比B,并根据网络流量占比B确定是否对该上线项目进行上线操作;
其中,网络流量占比B=S/S0,S为上线项目对应的服务器上的网络流量,S0为上线项目对应的服务器满载量。
具体而言,所述第二控制单元将上线项目对应的服务器上网络流量占比B与预设网络流量占比标准B0进行比对并根据比对结果确定是否对该上线项目进行上线操作,其中,
在第一网络流量占比比对结果下,所述第二控制单元控制所述发布模块采用第一发布方式对该上线项目进行上线操作;
在第二网络流量占比比对结果下,所述第二控制单元判定不对该上线项目进行上线操作并对下一上线任务的代码发布量进行统计以判断是否满足采用第一发布方式的条件,若下一上线任务的代码发布量为第一代码发布量则进行上线操作,同时第二控制单元停止对该服务器的新用户分配直至该服务器的网络流量占比小于B0,并在当前上线项目操作完毕后进行该第二代码发布量对应的上线项目的上线操作;
其中,所述第一网络流量占比比对结果满足B<B0,所述第二网络流量占比比对结果满足B≥B0。
本发明在代码发布量低于标准时,即代码发布量为第一代码发布量时控制所述发布模块采用第一发布方式对上线项目进行上线操作,而当代码发布量高于标准时,即代码发布量为第二代码发布量时根据服务器上网络流量占比对上线项目是否进行上线操作做进一步判断,服务器上网络流量占比高于标准时,服务器较为繁忙,服务的用户较多,此时不对第二代码发布量的上线项目进行上线操作,避免降低服务器的运算速度,进一步优化了用户体验,此时,第二控制单元对下一上线任务的代码发布量进行统计以判断是否满足采用第一发布方式的条件,若下一上线任务的代码发布量为第一代码发布量则进行上线操作,在不影响用户使用体验的前提下提高了上线项目的上线效率;服务器上网络流量占比低于标准时,服务器相对清闲,此时对第二代码发布量的上线项目进行上线操作,在不影响用户使用体验的前提下提高了上线项目的上线效率。
具体而言,所述第三控制单元在若干服务器同时存在上线操作任务时,第三控制单元计算存在上线操作任务的服务器的占比C,设定C=N/N0,其中,N为存在上线操作任务的服务器的数量,N0为服务器的总数量,第三控制单元将占比C与预设服务器占比标准C0进行比对,并根据比对结果确定执行上线操作的服务器的占比,其中,
在第一服务器占比比对结果下,所述第三控制单元将执行上线操作的服务器的占比确定为C0,并按照所述发布模块接收上线请求的先后顺序控制对应的服务器执行上线操作;
在第二服务器占比比对结果下,所述第三控制单元将执行上线操作的服务器的占比确定为C;
其中,所述第一服务器占比比对结果满足C>C0,所述第二服务器占比比对结果满足C≤C0,30%<C0<40%。
本发明第三控制单元在若干服务器同时存在上线操作任务时,计算存在上线操作任务的服务器的占比C并根据所述占比C与预设服务器占比标准C0的比对结果确定执行上线操作的服务器的占比,以使执行上线操作的服务器的占比不超过预设服务器占比标准C0,通过以上技术方案,进一步优化了用户体验,提高了上线项目的上线效率。
具体而言,所述第三控制单元计算服务器的网络流量平均占比Bp,设定
其中,Bi为任一服务器上网络流量占比,m为服务器总数量;
所述第三控制单元将服务器的网络流量平均占比Bp与预设网络流量占比标准B0进行比对,
在第一比对结果下,所述第三控制单元判定对预设服务器占比标准C0进行调节;
在第二比对结果下,所述第三控制单元判定不对预设服务器占比标准C0进行调节;
其中,所述第一比对结果满足Bp≤B0,所述第二比对结果满足Bp>B0。
具体而言,所述第三控制单元在第一比对结果下计算网络流量平均占比Bp与预设网络流量占比标准B0的流量差值ΔB,设定ΔB=B0-Bp,第三控制单元中设有第一预设流量差值ΔB1和第二预设流量差值ΔB2,ΔB1<ΔB2,第三控制单元将流量差值ΔB分别与ΔB1和ΔB2进行比对并根据比对结果确定对预设服务器占比标准C0的调节方式,其中,
第一调节方式为选用第一调节系数β1将预设服务器占比标准C0调节至第一服务器占比标准C1,设定C1=C0×β1;
第二调节方式为选用第二调节系数β2将预设服务器占比标准C0调节至第二服务器占比标准C2,设定C2=C0×β2;
第三调节方式为选用第三调节系数β3将预设服务器占比标准C0调节至第三服务器占比标准C3,设定C3=C0×β3;
其中,所述第一调节方式满足ΔB≥ΔB2,所述第二调节方式满足ΔB1≤ΔB<ΔB2,所述第三调节方式满足ΔB<ΔB1,1<β3<β2<β1<1.15。
本发明第三控制单元在判定服务器的网络流量平均占比小于预设网络流量占比标准时,判定服务器还存在足够的运算空间,此时对预设服务器占比标准C0进行调节以增加预设服务器占比标准,并以调节后的预设服务器占比标准判定执行上线操作的服务器的占比,提高了执行上线操作的服务器的占比,提高了服务器在空闲时间进行上线操作的比例,进一步优化了用户体验,提高了上线项目的上线效率。
本发明实施例中,还可以对代码上线任务的任务状态进行监控,具体为:
步骤1,存储模块收到上线项目信息时,还将生成该项目上线任务的状态信息,作为该代码上线任务的任务处理信息,此时将任务状态标记为"开始";
步骤2,相应的调度模块接受到要上线的任务信息后,判断项目是否为编译项目,如非编译项目,则将该任务状态改为"获取代码中",然后根据任务信息去同步项目;如果是编译项目,在获取代码之后,将状态改为"编译中",然后根据项目进行不同的编译;
步骤3,发布模块在接收到上线任务后,此时可以将任务状态改为"上线中";
步骤4,发布模块操作结束后,通知模块根据发布模块的状态改为不同的信息,如果发布模块反馈的结果是上线成功,此时则将任务状态改为“成功”,反之将状态改为“失败”,此时为任务的最终状态。
本发明实施例中,更进一步的,采集模块还可以在对上线任务的处理过程中,根据当前已完成的处理操作生成并显示对应的处理进度信息,从而使得用户能够实时了解该代码上线任务的处理进度。
本发明实施例中,发布模块在代码发布中,引入开源工具ansible,作为代码同步工具,通过编写通用的模板,使得在添加任务时,能够直接复用,极大提高工作效率。
本发明实施例中,当需要对本次代码上线进行回滚处理,即需要将本次代码上线结果回退至上一次上线结果,可以通过如何下方式完成:
步骤a,在采集模块输入要回滚的项目,以及要回滚的版本,并选择上线类型为回滚操作,之后采集模块会将相关信息传递给存储模块;
步骤b,存储模块收到采集模块传递的回滚请求后,将该任务标记为"开始回滚",然后将相关信息继续传递至调度模块;
步骤c,调度模块接收到回滚请求后,不进行任何处理,直接将回滚请求发送至发布模块;
步骤d,发布模块收到回滚请求后,将该任务状态标记为“回滚中”,考虑到之前版本已经得到过验证,不在进行负载均衡摘除操作,直接通过发布模块进行回滚操作,因为相关代码已经存在于服务器上,所以可以直接用ansible直接回滚。
本发明实施例中,调度模块支持两种版本控制工具:SVN、git,可以根据不同的项目,从不同仓库拉取对应所需的代码。
采用本发明实施例提供的上述方案,不在需要人工手动将代码发送至服务器。用户仅需要提交包括项目名、版本号、发布类型,然后由采集模块发送至下游模块,自动将待上线的代码发送至对应服务器,从而可以快速的完成批量代码分发,提高了上线效率。
至此,已经结合附图所示的优选实施方式描述了本发明的技术方案,但是,本领域技术人员容易理解的是,本发明的保护范围显然不局限于这些具体实施方式。在不偏离本发明的原理的前提下,本领域技术人员可以对相关技术特征做出等同的更改或替换,这些更改或替换之后的技术方案都将落入本发明的保护范围之内。
以上所述仅为本发明的优选实施例,并不用于限制本发明;对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (5)
1.一种服务器批量管理代理发布系统,其特征在于,包括:
采集模块,用以在第一预设条件下采集发起人输入的上线信息以获取发起人的操作类型,并基于操作类型采集对应的项目信息;所述第一预设条件为发起人在所述采集模块发起上线操作;
存储模块,其与所述采集模块相连,用以对采集模块采集的所述上线信息和所述项目信息进行储存,并将项目信息发送至调度模块;
调度模块,其与所述存储模块相连,用以根据接收的所述项目信息确定对应项目的执行方式,所述项目包括上线项目和回滚项目;
发布模块,其与所述调度模块相连,用以在第一执行方式和第二执行方式下对上线项目采用第一发布方式,在第三执行方式下对回滚项目采用第二发布方式;
中控模块,其分别与所述调度模块和所述发布模块相连,包括互相连接的运算单元、第一控制单元、第二控制单元和第三控制单元,其中,
所述运算单元用以确定上线项目的代码发布量;
所述第一控制单元用以在第一代码发布量时控制所述发布模块采用第一发布方式;
所述第二控制单元用以在第二代码发布量时计算上线项目对应的服务器上网络流量占比B并根据所述网络流量占比B确定是否对该上线项目进行上线操作;
所述第三控制单元用以计算存在上线操作任务的服务器的占比C并根据所述占比C与预设服务器占比标准C0的比对结果确定执行上线操作的服务器的占比,以及在服务器的网络流量平均占比符合预设条件下对预设服务器占比标准C0进行调节以提高执行上线操作的服务器的占比;
通知模块,其与所述发布模块相连,用以将发布结果返回给发起人;
所述第一控制单元和所述第二控制单元根据代码发布量确定是否采用第一发布方式,其中,
若上线项目的代码发布量为第一代码发布量,所述第一控制单元控制所述发布模块采用第一发布方式对上线项目进行上线操作;
若上线项目的代码发布量为第二代码发布量,所述第二控制单元计算上线项目对应的服务器上网络流量占比B,并根据网络流量占比B确定是否对该上线项目进行上线操作;
其中,网络流量占比B=S/S0,S为上线项目对应的服务器上的网络流量,S0为上线项目对应的服务器满载量;
所述第二控制单元将上线项目对应的服务器上网络流量占比B与预设网络流量占比标准B0进行比对并根据比对结果确定是否对该上线项目进行上线操作,其中,
在第一网络流量占比比对结果下,所述第二控制单元控制所述发布模块采用第一发布方式对该上线项目进行上线操作;
在第二网络流量占比比对结果下,所述第二控制单元判定不对该上线项目进行上线操作并对下一上线任务的代码发布量进行统计以判断是否满足采用第一发布方式的条件,若下一上线任务的代码发布量为第一代码发布量则进行上线操作,同时第二控制单元停止对该服务器的新用户分配直至该服务器的网络流量占比小于B0,并在当前上线项目操作完毕后进行该第二代码发布量对应的上线项目的上线操作;
其中,所述第一网络流量占比比对结果满足B<B0,所述第二网络流量占比比对结果满足B≥B0;
所述第三控制单元在若干服务器同时存在上线操作任务时,第三控制单元计算存在上线操作任务的服务器的占比C,设定C=N/N0,其中,N为存在上线操作任务的服务器的数量,N0为服务器的总数量,第三控制单元将占比C与预设服务器占比标准C0进行比对,并根据比对结果确定执行上线操作的服务器的占比,其中,
在第一服务器占比比对结果下,所述第三控制单元将执行上线操作的服务器的占比确定为C0,并按照所述发布模块接收上线请求的先后顺序控制对应的服务器执行上线操作;
在第二服务器占比比对结果下,所述第三控制单元将执行上线操作的服务器的占比确定为C;
其中,所述第一服务器占比比对结果满足C>C0,所述第二服务器占比比对结果满足C≤C0,30%<C0<40%;
所述第三控制单元计算服务器的网络流量平均占比Bp,设定
其中,Bi为任一服务器上网络流量占比,m为服务器总数量;
所述第三控制单元将服务器的网络流量平均占比Bp与预设网络流量占比标准B0进行比对,
在第一比对结果下,所述第三控制单元判定对预设服务器占比标准C0进行调节;
在第二比对结果下,所述第三控制单元判定不对预设服务器占比标准C0进行调节;
其中,所述第一比对结果满足Bp≤B0,所述第二比对结果满足Bp>B0;
所述第三控制单元在第一比对结果下计算网络流量平均占比Bp与预设网络流量占比标准B0的流量差值ΔB,设定ΔB=B0-Bp,第三控制单元中设有第一预设流量差值ΔB1和第二预设流量差值ΔB2,ΔB1<ΔB2,第三控制单元将流量差值ΔB分别与ΔB1和ΔB2进行比对并根据比对结果确定对预设服务器占比标准C0的调节方式,其中,
第一调节方式为选用第一调节系数β1将预设服务器占比标准C0调节至第一服务器占比标准C1,设定C1=C0×β1;
第二调节方式为选用第二调节系数β2将预设服务器占比标准C0调节至第二服务器占比标准C2,设定C2=C0×β2;
第三调节方式为选用第三调节系数β3将预设服务器占比标准C0调节至第三服务器占比标准C3,设定C3=C0×β3;
其中,所述第一调节方式满足ΔB≥ΔB2,所述第二调节方式满足ΔB1≤ΔB<ΔB2,所述第三调节方式满足ΔB<ΔB1,1<β3<β2<β1<1.15。
2.根据权利要求1所述的服务器批量管理代理发布系统,其特征在于,所述采集模块包括:
采集单元,用以在操作类型为更新操作时采集上线项目信息,以及在操作类型为回滚操作时采集回滚项目信息;
第一发送单元,其与所述采集单元相连,用以将所述上线项目信息发送至所述存储模块;
第二发送单元,其与所述采集单元相连,用以将回滚项目信息发送至所述存储模块。
3.根据权利要求2所述的服务器批量管理代理发布系统,其特征在于,所述调度模块根据接收的所述项目信息确定对应项目的执行方式,其中,
所述调度模块在第二预设条件下判断项目类型,并根据项目类型确定对应项目的执行方式;
若项目类型为编译型项目,则触发第一执行方式,所述第一执行方式为根据上线项目采用的编程语言进行编译处理,并将编译后的产物发送至所述发布模块以进行上线请求;
若项目类型非编译型项目,则触发第二执行方式,所述第二执行方式为直接拉取上线项目相关代码并发送至所述发布模块以进行上线请求;
所述调度模块在第三预设条件下触发第三执行方式,所述第三执行方式为直接将回滚项目信息发送至所述发布模块以进行回滚请求;
所述第二预设条件为所述调度模块接收的所述项目信息为上线项目信息;
所述第三预设条件为所述调度模块接收的所述项目信息为回滚项目信息。
4.根据权利要求3所述的服务器批量管理代理发布系统,其特征在于,所述发布模块根据接收到的请求类型确定发布方式,其中,
第一发布方式为,在对应服务器上对上线项目进行上线操作;
第二发布方式为,在对应服务器上对回滚项目使用ansible进行回滚操作;
所述第一发布方式满足接收到的请求为上线请求;
所述第二发布方式满足接收到的请求为回滚请求。
5.根据权利要求4所述的服务器批量管理代理发布系统,其特征在于,所述运算单元统计任一上线项目的代码发布量Q,运算单元将Q与代码发布量标准Q0进行比对,
若Q>Q0,所述运算单元将Q对应的代码发布量记为第一代码发布量;
若Q<Q0,所述运算单元将Q对应的代码发布量记为第二代码发布量。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310144938.XA CN115840582B (zh) | 2023-02-21 | 2023-02-21 | 一种服务器批量管理代理发布系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310144938.XA CN115840582B (zh) | 2023-02-21 | 2023-02-21 | 一种服务器批量管理代理发布系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115840582A CN115840582A (zh) | 2023-03-24 |
CN115840582B true CN115840582B (zh) | 2023-05-09 |
Family
ID=85579990
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310144938.XA Active CN115840582B (zh) | 2023-02-21 | 2023-02-21 | 一种服务器批量管理代理发布系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115840582B (zh) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111431741A (zh) * | 2020-03-17 | 2020-07-17 | 北京奇艺世纪科技有限公司 | 服务上线方法、系统、计算机设备及存储介质 |
CN112036825A (zh) * | 2020-08-28 | 2020-12-04 | 航天科工网络信息发展有限公司 | 一种基于工单的自动化运维管理系统 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8954495B2 (en) * | 2013-01-04 | 2015-02-10 | Netfilx, Inc. | Proxy application with dynamic filter updating |
CN110784530A (zh) * | 2019-10-22 | 2020-02-11 | 聚好看科技股份有限公司 | 灰度的发布方法和服务器 |
CN113726575A (zh) * | 2021-08-31 | 2021-11-30 | 上海妙契科技有限公司 | 前端项目自动化上线方法、装置、服务器和存储介质 |
CN114116237B (zh) * | 2022-01-28 | 2022-05-10 | 深圳市玩物科技有限公司 | 一种大规模网络设备的分级自治远程管理方法 |
-
2023
- 2023-02-21 CN CN202310144938.XA patent/CN115840582B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111431741A (zh) * | 2020-03-17 | 2020-07-17 | 北京奇艺世纪科技有限公司 | 服务上线方法、系统、计算机设备及存储介质 |
CN112036825A (zh) * | 2020-08-28 | 2020-12-04 | 航天科工网络信息发展有限公司 | 一种基于工单的自动化运维管理系统 |
Also Published As
Publication number | Publication date |
---|---|
CN115840582A (zh) | 2023-03-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI788650B (zh) | 用於半導體加工調度的方法、半導體加工調度系統和非暫時性電腦可讀儲存介質 | |
CN104407912B (zh) | 一种虚拟机配置方法及装置 | |
CN108803553A (zh) | 工单执行方法及装置、介质、数控机床以及生产管理系统 | |
US6834214B2 (en) | System, method and computer-program product for transferring a numerical control program to thereby control a machine tool controller | |
US20020091560A1 (en) | Work flow management method and system and processing program thereof | |
CN115840582B (zh) | 一种服务器批量管理代理发布系统 | |
CN105824919B (zh) | 一种数据查询操作定价的动态调整方法及装置 | |
CN111242643B (zh) | 一种微型环形零件制造服务信息实时更新系统 | |
CN113837611A (zh) | 一种自动化人员派工推荐方法和系统 | |
CN104735134B (zh) | 一种用于提供计算服务的方法和装置 | |
CN107909460B (zh) | 头寸同步方法、设备、数据中心及存储介质 | |
CN114676965A (zh) | 生产订单处理方法、装置、设备和存储介质 | |
CN115439080A (zh) | 工单自动化处理方法及电子设备 | |
CN111311406B (zh) | 基于电力市场并发交易的发电商交易能力管控系统及方法 | |
JP2001265603A (ja) | 自動振分ソフトウエア配布システム及びその方法 | |
JP7392725B2 (ja) | 交渉システム、交渉方法および交渉プログラム | |
JP2972232B2 (ja) | 計算機ネツトワーク・システムの制御方式 | |
CN113112181A (zh) | 一种项目管理方法及相关装置 | |
CN108134762A (zh) | 投放资源预定方法及装置 | |
CN106557943A (zh) | 移动试衣间服务系统 | |
CN105871647A (zh) | 一种客户端向服务器通信的时间异步对照方法及系统 | |
JP5291504B2 (ja) | 負荷分散処理システム | |
JP7447204B1 (ja) | 情報管理システム、情報管理方法及びプログラム | |
JP2001297185A (ja) | サプライチェーンマネージメントの評価装置 | |
CN115545550A (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 |