CN114047931A - 一种脚本的上线方法及开发平台 - Google Patents
一种脚本的上线方法及开发平台 Download PDFInfo
- Publication number
- CN114047931A CN114047931A CN202111347010.9A CN202111347010A CN114047931A CN 114047931 A CN114047931 A CN 114047931A CN 202111347010 A CN202111347010 A CN 202111347010A CN 114047931 A CN114047931 A CN 114047931A
- Authority
- CN
- China
- Prior art keywords
- project
- script
- server
- remote
- development platform
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/14—Details of searching files based on file metadata
- G06F16/148—File search processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/16—File or folder operations, e.g. details of user interfaces specifically adapted to file systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/25—Integrating or interfacing systems involving database management systems
- G06F16/252—Integrating or interfacing systems involving database management systems between a Database Management System and a front-end application
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/284—Relational databases
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Library & Information Science (AREA)
- Human Computer Interaction (AREA)
- Stored Programmes (AREA)
Abstract
本申请公开了一种脚本的上线方法及开发平台,其中,所述开发平台包括:脚本管理后台、远程脚本仓库、接口容器;所述远程脚本仓库用于存储上传的基于所述接口容器开发的项目脚本;所述脚本管理后台,用于响应用户的配置操作,配置项目的基础信息以及所述项目对应的远程脚本仓库地址,并将所述项目对应的远程脚本仓库地址下存储的所述项目脚本推送至目标线上服务器上;所述接口容器用于定时轮询对应的所述目标线上服务器最新接收到的所述项目脚本,并通过预先定义的所述项目脚本所属项目对应的脚本编译器,对所述项目脚本进行编译加载,以及用于响应用户的资源申请请求,在所述开发平台申请的资源集群中,创建项目对应的资源。
Description
技术领域
本申请涉及项目开发技术领域,特别涉及一种脚本的上线方法及开发平台。
背景技术
随着企业的规模和业务的不断扩张,相应的就会不断地新增线上项目。因此,就需要开发人员不断地开发并上线新的项目。
现有在新项目上线时,需要重新开发项目脚本,并且根据该项目的需求,为该项目申请单独的资源进行部署,如、应用、数据库等,最后再通过人工操作将项目脚本上线到指定的线上服务上。
但是现有的方式,每次在新项目上线时,就要从头开始执行所有的过程,不仅要开发脚本,还有需要申请单独的资源,并在得到审批后,进行资源的部署,最后再人工操作进行上线。所以现有的方式不仅成本高,并且过于繁琐,使得新项目的上线效率过低。
发明内容
基于上述现有技术的不足,本申请提供了一种脚本的上线方法及开发平台,以解决现有的项目开发上线方法的效率较低的问题。
为了实现上述目的,本申请提供了以下技术方案:
本申请第一方面提供了一种开发平台,包括:
脚本管理后台、远程脚本仓库、接口容器;
所述远程脚本仓库用于存储上传的基于所述接口容器开发的项目脚本;
所述脚本管理后台,用于响应用户的配置操作,配置项目的基础信息以及所述项目对应的远程脚本仓库地址,并将所述项目对应的远程脚本仓库地址下存储的所述项目脚本推送至目标线上服务器上;
所述接口容器用于定时轮询对应的所述目标线上服务器最新接收到的所述项目脚本,并通过预先定义的所述项目脚本所属项目对应的脚本编译器,对所述项目脚本进行编译加载,以及用于响应用户的资源申请请求,在所述开发平台申请的资源集群中,创建所述项目对应的资源。
可选地,在上述的开发平台中,所述接口容器,包括:
接口接入组件、脚本编译加载器组件、资源租户化访问组件;
所述接口接入组件,用于响应用户的编写操作,根据项目输入与输出生成所述项目的项目脚本;
所述脚本编译加载器组件用于响应用户的编译器定义操作,定义项目对应的脚本编译器,以及用于定时轮询部署所述接口容器的线上服务器最新接收到的所述项目脚本,并通过所述项目脚本所属项目对应的脚本编译器,对所述项目脚本进行编译和动态加载;
资源租户化访问组件,用于响应用户的资源申请请求,在所述开发平台申请的资源集群中,创建项目对应的资源。
可选地,在上述的开发平台中,所述接口容器,还包括:
资源访问保护组件,用于分别为每个项目分配固定的线程池资源,以及用于分别为每个所述项目依赖的各个第三方服务分配固定的线程池资源。
可选地,在上述的开发平台中,所述接口接入组件,还用于:
通过***对进入所述接口接入组件的数据中不符合要求的数据进行拦截。
本申请第二方面提供了一种脚本的上线方法,应用于开发平台,所述开发平台包括脚本管理后台、远程脚本仓库、接口容器,所述脚本的上线方法,包括:
所述远程脚本仓库存储上传的基于所述接口容器开发的项目脚本;
所述脚本管理后台响应用户的配置操作,配置项目的基础信息以及所述项目对应的远程脚本仓库地址;
所述脚本管理后台将所述项目对应的远程脚本仓库地址下存储的所述项目脚本推送至目标线上服务器上;
所述接口容器定时轮询所述目标线上服务器最新接收到的所述项目脚本,并通过预先定义的所述项目脚本所属项目对应的脚本编译器,对所述项目脚本进行编译加载。
可选地,在上述的脚本的上线方法中,所述脚本管理后台将所述项目对应的远程脚本仓库地址下存储的所述项目脚本推送至目标线上服务器上之前,还包括:
所述脚本管理后台判断是否存在指定的所述项目对应的线上服务器;
若判断出存在指定的所述项目对应的线上服务器,则将指定的所述项目对应的线上服务器确定为目标线上服务器;
若判断出不存在的指定的所述项目对应的线上服务器,则将所有线上服务器确定为目标线上服务器。
可选地,在上述的脚本的上线方法中,所述脚本管理后台将所述项目对应的远程脚本仓库地址下存储的所述项目脚本推送至指定的线上服务器上,包括:
所述脚本管理后台将所述项目对应的远程脚本仓库地址下存储的所述项目脚本,推送至所述目标线上服务器的本地仓库的指定目录中。
可选地,在上述的脚本的上线方法中,所述接口容器用于定时轮询对应的所述目标线上服务器最新接收到的所述项目脚本,并通过预先定义的所述项目脚本所属项目对应的脚本编译器,对所述项目脚本进行编译加载,包括:
所述接口容器用于定时轮询所述目标线上服务器的本地仓库的指定目录下的各个项目文件夹;
若轮询出最新接收到的项目脚本,则通过所述项目脚本所属项目对应的脚本编译器,对所述项目脚本进行编译加载。
可选地,在上述的脚本的上线方法中,还包括:
所述接口容器响应用户的资源申请请求,在所述开发平台申请的资源集群中,创建项目对应的资源。
可选地,在上述的脚本的上线方法中,还包括:
所述接口容器分别为每个项目分配固定的线程池资源,以及分别为每个所述项目依赖的各个第三方服务分配固定的线程池资源。
本申请实施例提供了一种开发平台,包括脚本管理后台、远程脚本仓库、接口容器。其中,远程脚本仓库用于存储上传的基于所述接口容器开发的项目脚本,脚本管理后台,用于响应用户的配置操作,配置项目的基础信息以及所述项目对应的远程脚本仓库地址,并将项目对应的远程脚本仓库地址下存储的项目脚本推送至目标线上服务器上,接口容器用于定时轮询对应的目标线上服务器最新接收到的所述项目脚本,并通过预先定义的所述项目脚本所属项目对应的脚本编译器,对项目脚本进行编译加载,从而只需要编写项目脚本并配置相应的信息就可以实现项目的自动上线,不需要人为操作上线,从而提高了上线的效率。并且,接口容器还用于响应用户的资源申请请求,在开发平台申请的资源集群中,创建项目对应的资源,从而通过预先集中申请资源,在有新项目时直接进行分配,不再需要每次都申请单独的资源,从而也提高了上线的效率。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本申请实施例提供的一种开发平台的架构示意图;
图2为本本申请实施例提供的一种双亲委派模型的架构示意图;
图3为本申请实施例提供的一种脚本的上线方法的流程图;
图4为本申请实施例提供的一种对项目脚本进行编译加载的方法的流程图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本文使用的术语“包括”及其变形是开放性包括,即“包括但不限于”。术语“基于”是“至少部分地基于”。术语“一个实施例”表示“至少一个实施例”;术语“另一实施例”表示“至少一个另外的实施例”;术语“一些实施例”表示“至少一些实施例”。其他术语的相关定义将在下文描述中给出。
需要注意,本公开中提及的“第一”、“第二”等概念仅用于对不同的装置、模块或单元进行区分,并非用于限定这些装置、模块或单元所执行的功能的顺序或者相互依存关系。
需要注意,本公开中提及的“一个”、“多个”的修饰是示意性而非限制性的,本领域技术人员应当理解,除非在上下文另有明确指出,否则应该理解为“一个或多个”。
本申请实施例提供了一种开发平台,如图1所示,包括:
脚本管理后台、远程脚本仓库、接口容器。
其中,远程脚本仓库(Script Repo)用于存储上传的基于接口容器开发的项目脚本。
具体的,开发人员在自己的开发机器上基于所部署的开发平台的接口容器进行项目脚本的开发,然后将开发好的项目脚本存储在开发机器的本地仓库中,然后将本地仓库的项目脚本上传值远程脚本仓库。
可选地,远程脚本仓库可以采用Git,或者其他代码远程仓库工具。
脚本管理后台(CMDB),用于响应用户的配置操作,配置项目的基础信息以及项目对应的远程脚本仓库地址,并将项目对应的远程脚本仓库地址下存储的项目脚本推送至目标线上服务器上。
接口容器(API Container)用于定时轮询对应的目标线上服务器最新接收到的项目脚本,并通过预先定义的项目脚本所属项目对应的脚本编译器,对项目脚本进行编译加载,以及用于响应用户的资源申请请求,在开发平台申请的资源集群中,创建项目对应的资源。
其中,目标线上服务器为指定的需要部署当前的项目脚本的线上服务器。项目对应的脚本编译器为指定的该项目对应的脚本编译器。需要说明的是,一个脚本编译器可以对应多个项目。
需要说明的是,各个线上服务器上部署有本申请实施例提供的开发平台。并且,各个线上服务器所部署的开发平台中的接口容器,定时轮询最新推送过来的存储在线上服务器的本地的项目脚本,并对其进行编译和加载,从而实现项目脚本在线上服务器的上线。
可选地,为了实现项目的快速开发,在本申请另一实施例中,接口容器,包括:
接口接入组件、脚本编译加载器组件、资源租户化访问组件。
其中,接口接入组件用于响应用户的编写操作,根据项目输入与输出生成所述项目的项目脚本。
具体的,接口接入组件主要作用是对项目的相关数据进行定义后,可以实现写一些,写一些输入和输出相关的函数,快速实现业务逻辑。
可选地,本申请实施例提供的开发平台主要面向的项目类型是纯后台的项目。以http接口项目为例,可以在接口接入组件定义的输入对象为两个:http协议的请求封装类型HttpServletRequest和响应封装类型HttpServletResponse,以及定义输出对象为HttpResult,其中包含有错误码code,提示信息msg和返回的具体业务数据data。
在开发的项目下编写上述输入和输出的function脚本后,通过http协议的请求路径:“http://ip:port/项目名/脚本名”即可访问获取此function的脚本执行后得到的数据。
可选地,接口接入组件还用于通过***对进入所述接口接入组件的数据中不符合要求的数据进行拦截,从而统一解决安全问题。
安全问题是所有项目都需要面对并解决的,而且所有的项目解决方案基本一致,所以由作为开发平台的唯一出入口的接口接入组件,通过***实现安全策略,做所有的安全防御处理。
脚本编译加载器组件用于响应用户的编译器定义操作,定义项目对应的脚本编译器,以及用于定时轮询部署所述接口容器的线上服务器最新接收到的项目脚本,并通过项目脚本所属项目对应的脚本编译器,对项目脚本进行编译和动态加载。
在本申请实施例中,脚本编译加载器支持脚本编译器的自定义,即支持多种基于JVM的脚本类型语言,例如,Groovy、Scala和Clojure等。同时还支持动态加载,并且其按项目做到租户化,对项目进行管理。
具体的,脚本编译加载器对存放在线上服务器的本地场景的所有项目脚本进行关联。具体同定时轮询器扫描本地仓库所有的项目脚本,以确定是否有项目的脚本新增、修改或者删除,即是否有推送的新的项目脚本,并对新的项目脚本进行动态加载。
需要说明的是,在本地仓库的根目录下的每个目录对应一个项目,并且每个项目的目录下可以配置有项目的基础的配置文件,可以包括有描述项目唯一标识、项目名称、依赖的包、编译类型等信息。
具体的,当需新增脚本编译器,则需实现ScriptArchiveCompiler接口,并以插件模式ScriptCompilerPlugin,添加提供脚本语言运行时的一些列资源。在平台中的每个项目都可以指定自己开发使用脚本语言的编译器。项目启动时指定的编译器会把该项目的项目脚本编译为class文件后加载。
可选地,在本申请实施例中,基于如图2所示的类加载器(ClassLoader)的双亲委派模型实现对编译后的项目脚本的动态加载。
具体当定时轮询器扫描本地仓库的脚本发送有新增、修改和删除时,在项目粒度上用型的自定义类加载器加载最新的项目脚本,并在加载完成后,后续请求处理就全部转到新的自定义的类加载器里面的脚本进行处理,然后卸载掉老的自定义类加载器,释放应用服务器资源,从而实现动态热加载。
资源租户化访问组件,用于响应用户的资源申请请求,在开发平台申请的资源集群中,创建项目对应的资源。
在本申请实施例中,不再是每次有新项目时,再申请单独使用的资源,而是预先集中申请一批资源,然后对资源进行租户化,分配给新的项目。
当前所涉及集中申请的资源主要为数据库,如Mysql数据库,以及集中式缓存,例如Redis。
其中,对于Mysql数据库,可以集中申请一批数据库服务器做Mysql集群,每个项目如需用到Mysql数据库,则从这个集中的Mysql集群中新建一个Mysql数据库。这样不仅满足了项目对于资源的需求,并且各个项目的Mysql数据就做到了隔离。
并且,开发平台还提供了Mysql数据库的多数据源封装,各个项目的脚本无需关心Mysql数据库如何建立连接,只需要把项目的唯一标识给开发到平台,即可拿到项目对应的Mysql库的数据库连接,来进行数据库的增删改查等操作。
同理,对于Redis也可以集中申请一批服务器做Redis集群,各个项目存储在Redis里面数据的Key统一增加一个项目唯一标识的前缀,这样各个项目的Redis数据做到了隔离。
同样,开发平台还提供了Redis基础操作的封装,各个项目的脚本无需关心Redis如何建立连接,只需要把项目的唯一标识给到平台,即可实现Redis数据基本操作的Key统一增加项目的唯一标识前缀。
可选地,在本申请另一实施例中,接口容器还进一步包括:
资源访问保护组件,用于分别每个项目分配固定的线程池资源,以及用于分别为每个项目依赖的各个第三方服务分配固定的线程池资源。
需要说明的是,由于开发平台部署在线上服务器上的一个进程中,所有开发平台所有的项目脚本占用的服务器资源都是共用的,为了保证一个项目出现问题时,不至于把线上服务器的所有资源都耗尽,导致其他项目无法正常提供服务,所以需要资源访问保护组件对项目资源进行隔离。
可选地,该组件可以采用Hystrix实现,当然也可以考虑Sentinel等其他方式实现,并不限制实现方式。具体的,资源访问保护组件给每个项目分配固定的线程池资源,保证不会无限制的消耗服务器的资源,同时提供熔断降级功能。
同理,由于开发平台部署很多项目,难免会依赖于第三方服务,比如通过http请求其他服务来实现业务逻辑。为了保证租户化极速开发平台中某一个项目依赖的第三方服务出故障导致耗时增长而占用过多连接资源,引起其他项目的依赖第三方服务请求失败,所以通过资源访问保护组件给每个第三方服务访问分配固定的线程池资源,同时提供熔断降级功能。
本申请实施例提供了一种开发平台,包括脚本管理后台、远程脚本仓库、接口容器。其中,远程脚本仓库用于存储上传的基于所述接口容器开发的项目脚本,脚本管理后台,用于响应用户的配置操作,配置项目的基础信息以及所述项目对应的远程脚本仓库地址,并将项目对应的远程脚本仓库地址下存储的项目脚本推送至目标线上服务器上,接口容器用于定时轮询对应的目标线上服务器最新接收到的所述项目脚本,并通过预先定义的所述项目脚本所属项目对应的脚本编译器,对项目脚本进行编译加载,从而只需要编写项目脚本并配置相应的信息就可以实现项目的自动上线,不需要人为操作上线,从而提高了上线的效率。并且,接口容器还用于响应用户的资源申请请求,在开发平台申请的资源集群中,创建项目对应的资源,从而通过预先集中申请资源,在有新项目时直接进行分配,不再需要每次都申请单独的资源,从而也提高了上线的效率。
基于上述提供的开发平台,本申请实施例提供了一种脚本的上线方法,应用于上述提供的开发平台。如上所述,该开发平台包括脚本管理后台、远程脚本仓库、接口容器。如图3所示,本申请实施例提供的一种脚本的上线方法,包括以下步骤:
S301、远程脚本仓库存储上传的基于接口容器开发的项目脚本。
具体的,开发人员在自己的开发机器上基于所部署的开发平台的接口容器进行项目脚本的开发,然后将开发好的项目脚本存储在开发机器的本地仓库中,然后将本地仓库的项目脚本上传值远程脚本仓库。
由于在项目的上线往往相应的资源的支持,所以可选地,在本申请另一实施例中,还可以进一步包括:
接口容器响应用户的资源申请请求,在开发平台申请的资源集群中,创建项目对应的资源。
即在本申请实施例中,预先集中申请了较多的资源集群,在新项目开发时,根据需求为资源集群中,为新项目创建相应的资源。
具体的,开发人员根据项目的需求定义好数据后,可以相应地资源,经进一步在开发机器上进行项目开发。
例如,需要开发一个用户管理***的接口项目,项目名称为:user_manager_api。首先可以根据项目的需求,定义好数据库的表结构,例如,如表1所示。然后申请Mysql数据库资源,从而在Mysql数据库集群中,新建一个名称与项目名称相应一致的数据库,然后在该数据库中根据表1创建相应的数据表。
表1
然后开发人员可以在开发机器上部署于的开发平台的本地仓库下新将与项目名称相应的文件夹,并在该文件夹下配置有该项目的基础配置信息,例如:
其中,该文件主要定义了该项目的唯一标识为:user_manager_api,项目对应的脚本编译器的类型为:groovy2,额外的依赖包有“javax/servlet”和“javax/servlet/http”。
假设该项目有一个接口为根据用户的姓名查询用户的基础信息,则开发相应的项目脚本时,只需要在该项目的文件夹下定义一个文件名称为“user_info.groovy”的脚本文件,并定义后相应的输出与输出,然后推送到远程脚本仓库。
S302、脚本管理后台响应用户的配置操作,配置项目的基础信息以及项目对应的远程脚本仓库地址。
其中,项目的基础信息包括项目名称、项目描述等信息,以便基于该基础信息使用该项目对应的预先定义好的信息以及脚本编译器等进行项目上线。
项目对应的远程脚本仓库地址指的是存储该远程脚本仓库中存储该项目的项目脚本的地址。
S303、脚本管理后台将项目对应的远程脚本仓库地址下存储的项目脚本推送至目标线上服务器上。
其中,目标线上服务器为需要上线该项目脚本的线上服务器。可以是指定的一个或多个线上服务器,或者是所有的线上服务器。
可选地,在本申请另一实施例中,在执行步骤S303之前,还先进一步执行:
脚本管理后台判断是否存在指定的该项目对应的线上服务器。
其中,若判断出存在指定的该项目对应的线上服务器,则将指定的该项目对应的线上服务器确定为目标线上服务器。
若判断出不存在的指定的该项目对应的线上服务器,则将所有线上服务器确定为目标线上服务器。
可选地,步骤S303的一种具体实施方式,包括:
脚本管理后台将项目对应的远程脚本仓库地址下存储的项目脚本,推送至目标线上服务器的本地仓库的指定目录中。
在本申请实施例中,在线上服务器的本地仓库中,一个项目对应一个目录,以实现对项目的租户化管理,所以需要将项目对应的远程脚本仓库地址下存储的项目脚本,推送至目标线上服务器的本地仓库的指定目录中。
S304、接口容器定时轮询目标线上服务器最新接收到的项目脚本,并通过预先定义的项目脚本所属项目对应的脚本编译器,对项目脚本进行编译加载。
具体的,线上部署的接口容器定时轮询最新推送过来的存储在本地的脚本,并通过脚本编译器对项目脚本进行编译,然后通过自定义类加载器进行加载,在加载完成后,即实现了项目脚本的上线。
可选地,在本申请另一实施例中,步骤S304的一种具体实施方式,如图4所示,包括:
S401、接口容器用于定时轮询目标线上服务器的本地仓库的指定目录下的各个项目文件夹。
S402、判断是否轮询出最新接收到的项目脚本。
具体的,每个项目文件夹用于存储一个项目的项目脚本,所以若轮询出新的项目文件夹,则该项目文件夹中包括的脚本即为最新接收到的项目脚本。
其中,若轮询出最新接收到的项目脚本,则执行步骤S403。
S403、通过项目脚本所属项目对应的脚本编译器,对项目脚本进行编译加载。
需要说明的,接口容器支持脚本编译器以及类加载器的自定义。
可选地,在本申请另一实施例中,在执行步骤S304之后,还可以进一步包括:
接口容器分别每个项目分配固定的线程池资源,以及分别为每个项目依赖的各个第三方服务分配固定的线程池资源。
由于开发平台部署在线上服务器上的一个进程中,所有开发平台所有的项目脚本占用的服务器资源都是共用的,为了保证一个项目出现问题时,不至于把线上服务器的所有资源都耗尽,导致其他项目无法正常提供服务,所以通过接口容器分别每个项目分配固定的线程池资源,从而实现项目资源隔离。同时,还可以对项目进行熔断降级。
同理,由于开发平台部署很多项目,难免会依赖于第三方服务,比如通过http请求其他服务来实现业务逻辑。为了保证租户化极速开发平台中某一个项目依赖的第三方服务出故障导致耗时增长而占用过多连接资源,引起其他项目的依赖第三方服务请求失败,所以要分别为每个项目依赖的各个第三方服务分配固定的线程池资源,实现依赖下游资源访问隔离。同样,还可以对项目与第三方服务间的关系进行熔断降级。
需要说明的是,本申请实施例中的各个框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的***来实现,或者可以用专用硬件与计算机指令的组合来实现。并且,虽然采用特定次序描绘了各操作,但是这不应当理解为要求这些操作以所示出的特定次序或以顺序次序执行来执行。在一定环境下,多任务和并行处理可能是有利的。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本申请。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (10)
1.一种开发平台,其特征在于,包括:
脚本管理后台、远程脚本仓库、接口容器;
所述远程脚本仓库用于存储上传的基于所述接口容器开发的项目脚本;
所述脚本管理后台,用于响应用户的配置操作,配置项目的基础信息以及所述项目对应的远程脚本仓库地址,并将所述项目对应的远程脚本仓库地址下存储的所述项目脚本推送至目标线上服务器上;
所述接口容器用于定时轮询对应的所述目标线上服务器最新接收到的所述项目脚本,并通过预先定义的所述项目脚本所属项目对应的脚本编译器,对所述项目脚本进行编译加载,以及用于响应用户的资源申请请求,在所述开发平台申请的资源集群中,创建所述项目对应的资源。
2.根据权利要求1所述的开发平台,其特征在于,所述接口容器,包括:
接口接入组件、脚本编译加载器组件、资源租户化访问组件;
所述接口接入组件,用于响应用户的编写操作,根据项目输入与输出生成所述项目的项目脚本;
所述脚本编译加载器组件用于响应用户的编译器定义操作,定义项目对应的脚本编译器,以及用于定时轮询部署所述接口容器的线上服务器最新接收到的所述项目脚本,并通过所述项目脚本所属项目对应的脚本编译器,对所述项目脚本进行编译和动态加载;
资源租户化访问组件,用于响应用户的资源申请请求,在所述开发平台申请的资源集群中,创建所述项目对应的资源。
3.根据权利要求2所述的开发平台,其特征在于,所述接口容器,还包括:
资源访问保护组件,用于分别为每个项目分配固定的线程池资源,以及用于分别为每个所述项目依赖的各个第三方服务分配固定的线程池资源。
4.根据权利要求2所述的开发平台,其特征在于,所述接口接入组件,还用于:
通过***对进入所述接口接入组件的数据中不符合要求的数据进行拦截。
5.一种脚本的上线方法,其特征在于,应用于开发平台,所述开发平台包括脚本管理后台、远程脚本仓库、接口容器,所述脚本的上线方法,包括:
所述远程脚本仓库存储上传的基于所述接口容器开发的项目脚本;
所述脚本管理后台响应用户的配置操作,配置项目的基础信息以及所述项目对应的远程脚本仓库地址;
所述脚本管理后台将所述项目对应的远程脚本仓库地址下存储的所述项目脚本推送至目标线上服务器上;
所述接口容器定时轮询所述目标线上服务器最新接收到的所述项目脚本,并通过预先定义的所述项目脚本所属项目对应的脚本编译器,对所述项目脚本进行编译加载。
6.根据权利要求5所述的方法,其特征在于,所述脚本管理后台将所述项目对应的远程脚本仓库地址下存储的所述项目脚本推送至目标线上服务器上之前,还包括:
所述脚本管理后台判断是否存在指定的所述项目对应的线上服务器;
若判断出存在指定的所述项目对应的线上服务器,则将指定的所述项目对应的线上服务器确定为目标线上服务器;
若判断出不存在的指定的所述项目对应的线上服务器,则将所有线上服务器确定为目标线上服务器。
7.根据权利要求5所述的方法,其特征在于,所述脚本管理后台将所述项目对应的远程脚本仓库地址下存储的所述项目脚本推送至指定的线上服务器上,包括:
所述脚本管理后台将所述项目对应的远程脚本仓库地址下存储的所述项目脚本,推送至所述目标线上服务器的本地仓库的指定目录中。
8.根据权利要求5所述的方法,其特征在于,所述接口容器用于定时轮询对应的所述目标线上服务器最新接收到的所述项目脚本,并通过预先定义的所述项目脚本所属项目对应的脚本编译器,对所述项目脚本进行编译加载,包括:
所述接口容器用于定时轮询所述目标线上服务器的本地仓库的指定目录下的各个项目文件夹;
若轮询出最新接收到的项目脚本,则通过所述项目脚本所属项目对应的脚本编译器,对所述项目脚本进行编译加载。
9.根据权利要求5所述的方法,其特征在于,还包括:
所述接口容器响应用户的资源申请请求,在所述开发平台申请的资源集群中,创建项目对应的资源。
10.根据权利要求5所述的方法,其特征在于,还包括:
所述接口容器分别为每个项目分配固定的线程池资源,以及分别为每个所述项目依赖的各个第三方服务分配固定的线程池资源。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111347010.9A CN114047931A (zh) | 2021-11-15 | 2021-11-15 | 一种脚本的上线方法及开发平台 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111347010.9A CN114047931A (zh) | 2021-11-15 | 2021-11-15 | 一种脚本的上线方法及开发平台 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114047931A true CN114047931A (zh) | 2022-02-15 |
Family
ID=80209084
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111347010.9A Pending CN114047931A (zh) | 2021-11-15 | 2021-11-15 | 一种脚本的上线方法及开发平台 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114047931A (zh) |
-
2021
- 2021-11-15 CN CN202111347010.9A patent/CN114047931A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6658882B2 (ja) | 制御装置、vnf配置先選択方法及びプログラム | |
CN109614167B (zh) | 一种管理插件的方法和*** | |
CN111858054B (zh) | 一种异构环境下基于边缘计算的资源调度***及方法 | |
US20100228839A1 (en) | Efficient on-demand provisioning of servers for specific software sets | |
US11398989B2 (en) | Cloud service for cross-cloud operations | |
US8549129B2 (en) | Live migration method for large-scale IT management systems | |
CN109032751B (zh) | 一种虚拟机部署方法及omm虚拟机 | |
CN114189525B (zh) | 服务请求方法、装置和电子设备 | |
CN108446102A (zh) | 一种开发部署应用程序的一体化***及方法 | |
CN113810230A (zh) | 对容器集群中的容器进行网络配置的方法、装置及*** | |
US20200371902A1 (en) | Systems and methods for software regression detection | |
US20200310828A1 (en) | Method, function manager and arrangement for handling function calls | |
KR20230069088A (ko) | 컨테이너 클러스터 관리 방법 및 그 시스템 | |
CN106484458B (zh) | 一种开放型软件仓库管理***及其管理方法 | |
US20220027201A1 (en) | Resource and operation management on a cloud platform | |
US10942787B2 (en) | Instance mapping engine and tools | |
CN113382077B (zh) | 微服务调度方法、装置、计算机设备和存储介质 | |
WO2021248972A1 (zh) | 默认网关管理方法、网关管理器、服务器及存储介质 | |
CN112346758B (zh) | 一种数字基建业务更新平台、更新方法及电子设备 | |
CN112256343B (zh) | 一种软件加载方法、设备及*** | |
CN114047931A (zh) | 一种脚本的上线方法及开发平台 | |
CN116382694A (zh) | 一种提升容器环境下Maven工程编译速度的方法 | |
CN114489761B (zh) | 一种基于容器集群的服务集成和应用集成方法 | |
CN114172903B (zh) | slurm调度***的节点扩容方法、装置、设备和介质 | |
CN111831402A (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 |