一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种基于groovy代码实时更新部署方法与流程

2022-05-26 16:26:10 来源:中国专利 TAG:


1.本发明涉及代码编程技术领域,具体是一种基于groovy代码实时更新部署方法。


背景技术:

2.groovy是一种基于jvm(java虚拟机)的敏捷开发语言,是用于java虚拟机的一种敏捷的动态语言,它是一种成熟的面向对象编程语言,既可以用于面向对象编程,又可以用作纯粹的脚本语言,其是jvm的一个替代语言,使用方式基本与使用java代码的方式相同,该语言特别适合与spring的动态语言支持一起使用。
3.现有的技术是通过groovy模板引擎,将模板代码渲染成可执行的脚本,然后再通过与参数绑定的方式运行脚本,如果模板代码有变化,需要重新加载并渲染成可执行脚本,从而达到代码可实时更新,这种方式在使用时可能存在以下几个问题:
4.1、在模板中只适合写少量代码,写越多可读性、可维护性会越差,并且模板文件之间不能互相引用,开发效率低;
5.2、修改模板代码后,需要手动触发引擎重新渲染代码,多服务器部署时,需要每台服务器都做重新渲染;
6.3、模板渲染过程会消耗资源,如果大量频繁渲染会导致资源消耗过多。


技术实现要素:

7.本发明的目的在于提供一种基于groovy代码实时更新部署方法,以解决上述背景技术中提出的问题。
8.为实现上述目的,本发明提供如下技术方案:
9.一种基于groovy代码实时更新部署方法,包括开发人员模块、服务系统和gitlab模块,所述开发人员模块的输出端和客户端模块的输入端电性连接,所述客户端模块的输出端和提交代码的输入端电性连接,所述提交代码的输出端和所述gitlab模块的输入端电性连接,所述gitlab模块的输出端和通知更新模块的输入端电性连接,所述通知更新模块的输出端和同步服务模块的输入端电性连接,所述同步服务模块的输出端和拉取更新模块的输入端电性连接,所述拉取更新模块的输出端和所述gitlab模块的输入端电性连接。
10.作为本发明进一步的方案:所述同步服务模块的输出端和同步发送模块的输入端电性连接,所述同步发送模块的输出端和网络磁盘的输入端电性连接。
11.作为本发明再进一步的方案:所述网络磁盘的输出端和挂载的输入端电性连接,所述挂载的输出端和服务集群的输入端电性连接,所述服务集群的输出端和读取的输入端电性连接,所述读取的输出端和所述网络磁盘的输入端电性连接。
12.作为本发明再进一步的方案:所述服务集群包括服务系统一、服务系统二、服务系统三
……
和服务系统n,且所述服务系统一、服务系统二、服务系统三
……
和服务系统n内部均设置有groovyscriptengine引擎。
13.作为本发明再进一步的方案:所述服务系统的输出端和服务器所在目录的输入端
电性连接,所述服务器所在目录的输出端和挂载模块的输入端电性连接,所述挂载模块的输出端和所述网络磁盘的输入端电性连接。
14.作为本发明再进一步的方案:所述groovyscriptengine引擎的输出端和监听模块的输入端电性连接,所述监听模块的输出端和所述服务器所在目录的输入端电性连接,所述服务器所在目录的输出端分别和更新、未更新的输入端电性连接。
15.作为本发明再进一步的方案:所述更新的输出端和调用最新代码的输入端电性连接,所述未更新的输出端和不调用代码的输入端电性连接,所述调用最新代码、不调用代码的输出端均和业务服务模块的输入端电性连接。
16.作为本发明再进一步的方案:所述gitlab模块的输出端和启用webhook功能的输入端电性连接,所述启用webhook功能的输出端分别和代码push、代码merge的输入端电性连接,所述代码push、代码merge的输出端均和触发通知的输入端电性连接。
17.与现有技术相比,本发明的有益效果是:
18.1、本发明实现了复杂代码的版本管理和实时更新,可以像开发正常项目一样去开写复杂脚本代码,并且代码文件之间也可互相引用,大大提高了开发效率。增加了代码版本管理,可以更方便的管理代码及历史追溯,轻松实现代码上线和回滚,有效提升系统的安全和稳定;
19.2、本发明通过groovyscriptengine直接执行脚本代码,提高可读性维护性,不再需要模板引擎渲染这个中间过程,也就不存在渲染时资源消耗问题,不再需要手动触发更新,只要代码更新则自动加载新代码;
20.3、本发明通过从客户端推送到版本管理库,再由版本库通知同步服务将代码发送到网络磁盘,多个服务可挂载同一网络磁盘,读取并执行最新发布的代码,从而最终实现自动部署无感更新;
21.4、本发明基于groovy脚本语言的相关特性,利用gitlab做为代码版本管理,将代码实时发布到服务系统中,然后通过groovyscriptengine引擎读取代码,达到最终无需重启和编译服务,就实现代码实时发布的效果。
附图说明
22.图1为基于groovy代码实时更新部署方法中开发人员模块到同步服务模块之间的系统结构示意图;
23.图2为基于groovy代码实时更新部署方法中同步服务模块到服务集群之间的系统结构示意图;
24.图3为基于groovy代码实时更新部署方法中服务集群的结构示意图;
25.图4为基于groovy代码实时更新部署方法中网络磁盘部分的系统结构示意图;
26.图5为基于groovy代码实时更新部署方法中groovyscriptengine引擎运行的系统结构示意图;
27.图6为基于groovy代码实时更新部署方法中webhook功能的系统结构示意图。
28.图中:1、开发人员模块;2、客户端模块;3、提交代码;4、gitlab模块;5、拉取更新模块;6、通知更新模块;7、同步服务模块;8、网络磁盘;9、读取;10、挂载;11、服务集群;12、服务系统;13、groovyscriptengine引擎;14、服务器所在目录;15、挂载模块;16、监听模块;
17、更新;18、未更新;19、调用最新代码;20、不调用代码;21、启用webhook功能;22、代码push;23、代码merge;24、触发通知;25、服务系统一;26、服务系统二;27、服务系统三;28、服务系统n;29、同步发送模块;30、业务服务模块。
具体实施方式
29.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
30.请参阅图1-6,本发明实施例中,一种基于groovy代码实时更新部署方法,包括开发人员模块1、服务系统12和gitlab模块4,开发人员模块1的输出端和客户端模块2的输入端电性连接,客户端模块2的输出端和提交代码3的输入端电性连接,提交代码3的输出端和gitlab模块4的输入端电性连接,gitlab模块4的输出端和通知更新模块6的输入端电性连接,通知更新模块6的输出端和同步服务模块7的输入端电性连接,同步服务模块7的输出端和拉取更新模块5的输入端电性连接,拉取更新模块5的输出端和gitlab模块4的输入端电性连接,开发人员模块1通过客户端模块2提交代码3到gitlab模块4中,然后就会触发webhook通过同步服务模块7,在通过同步服务模块7时,gitlab模块4会通知同步服务模块7进行更新,同步服务模块7会从gitlab模块4中拉取更新数据。
31.优选的,同步服务模块7的输出端和同步发送模块29的输入端电性连接,同步发送模块29的输出端和网络磁盘8的输入端电性连接,同步服务模块7收到通知,主动从gitlab模块4中拉取最新代码,并将代码同步发送到网络磁盘8相应目录下。
32.优选的,网络磁盘8的输出端和挂载10的输入端电性连接,挂载10的输出端和服务集群11的输入端电性连接,服务集群11的输出端和读取9的输入端电性连接,读取9的输出端和网络磁盘8的输入端电性连接,服务集群11可以挂载10在网络磁盘8上,服务集群11可以读取网络磁盘8中的代码,且多个服务集群11可挂载10在一个网络磁盘8上,从客户端推送到版本管理库,再由版本库通知同步服务将代码发送到网络磁盘8,多个服务可挂载同一网络磁盘8,读取并执行最新发布的代码,最终实现自动部署无感更新。
33.优选的,服务集群11包括服务系统一25、服务系统二26、服务系统三27
……
和服务系统n28,且服务系统一25、服务系统二26、服务系统三27
……
和服务系统n28内部均设置有groovyscriptengine引擎13,一个服务集群11可包含若干个服务系统12,且若干个服务系统12内部均包含groovyscriptengine引擎13。
34.优选的,服务系统12的输出端和服务器所在目录14的输入端电性连接,服务器所在目录14的输出端和挂载模块15的输入端电性连接,挂载模块15的输出端和网络磁盘8的输入端电性连接,指定一个网络磁盘8,并将该网络磁盘8挂载10到服务器所在目录14下。
35.优选的,groovyscriptengine引擎13的输出端和监听模块16的输入端电性连接,监听模块16的输出端和服务器所在目录14的输入端电性连接,服务器所在目录14的输出端分别和更新17、未更新18的输入端电性连接,服务中配置groovyscriptengine引擎13实时监听该目录下groovy文件是否已经更新。
36.优选的,更新17的输出端和调用最新代码19的输入端电性连接,未更新18的输出
端和不调用代码20的输入端电性连接,调用最新代码19、不调用代码20的输出端均和业务服务模块30的输入端电性连接,若groovyscriptengine引擎13监听该目录下groovy文件已经更新,则调用最新代码19再输入业务服务模块30,若groovyscriptengine引擎13监听该目录下groovy文件并未更新,则不调用代码20,通过groovyscriptengine引擎13直接执行脚本代码,提高可读性维护性,不再需要模板引擎渲染这个中间过程,也就不存在渲染时资源消耗问题,不再需要手动触发更新,只要代码更新则自动加载新代码。
37.优选的,gitlab模块4的输出端和启用webhook功能21的输入端电性连接,启用webhook功能21的输出端分别和代码push22、代码merge23的输入端电性连接,代码push22、代码merge23的输出端均和触发通知24的输入端电性连接,配置gitlab模块4服务内代码所在项目启用webhook功能21,并将触发方式设置为代码push或代码merge时都触发通知,专利实现了复杂代码的版本管理和实时更新,可以像开发正常项目一样去开写复杂脚本代码,并且代码文件之间也可互相引用,大大提高了开发效率。增加了代码版本管理,可以更方便的管理代码及历史追溯,轻松实现代码上线和回滚,有效提升系统的安全和稳定,基于groovy脚本语言的相关特性,利用gitlab模块4做为代码版本管理,将代码实时发布到服务系统中,然后通过groovyscriptengine引擎13读取代码,达到最终无需重启和编译服务,就实现代码实时发布的效果。
38.本发明的工作原理是:
39.使用时,指定一个网络磁盘8,并将该网络磁盘8挂载到服务器所在目录14下,并服务中配置groovyscriptengine监听该目录下groovy文件的更新,如发现有更新则调用代码时调用最新代码19,若该目录下groovy文件并未更新,则不调用任何代码,配置gitlab模块4服务内代码所在项目启用webhook功能21,并将触发方式设置为代码push22或代码merge23时都触发通知24,开发人员模块1通过客户端模块2提交代码3到gitlab模块中,然后就会触发webhook通过同步服务模块7,随后同步服务模块7收到通知,主动从gitlab模块4中拉取最新代码,并将代码同步发送到网络磁盘8的相应目录下,当业务服务模块30需要调用这里的代码时,groovyscriptengine引擎13会读取并执行最新的代码,通过groovyscriptengine直接执行脚本代码,提高可读性维护性,不再需要模板引擎渲染这个中间过程,也就不存在渲染时资源消耗问题,不再需要手动触发更新,只要代码更新则自动加载新代码,基于groovy脚本语言的相关特性,利用gitlab做为代码版本管理,将代码实时发布到服务系统中,然后通过groovyscriptengine引擎读取代码,达到最终无需重启和编译服务,就可以实现代码实时发布的效果,且实现了复杂代码的版本管理和实时更新,可以像开发正常项目一样去开写复杂脚本代码,并且代码文件之间也可互相引用,大大提高了开发效率。增加了代码版本管理,可以更方便的管理代码及历史追溯,轻松实现代码上线和回滚,有效提升系统的安全和稳定。
40.尽管参照前述实施例对本发明进行了详细的说明,对于本领域的技术人员来说,其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献