CN109766124A - 业务开发方法、装置、计算机设备和存储介质 - Google Patents
业务开发方法、装置、计算机设备和存储介质 Download PDFInfo
- Publication number
- CN109766124A CN109766124A CN201811600020.7A CN201811600020A CN109766124A CN 109766124 A CN109766124 A CN 109766124A CN 201811600020 A CN201811600020 A CN 201811600020A CN 109766124 A CN109766124 A CN 109766124A
- Authority
- CN
- China
- Prior art keywords
- script
- script file
- engine
- file
- version identifier
- 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
Links
Landscapes
- Stored Programmes (AREA)
Abstract
本申请涉及一种业务开发方法、装置、计算机设备和存储介质。该方法包括:接收终端发送的所选择的版本标识,根据版本标识从版本数据库中获取对应的脚本文件,确定脚本文件中脚本内容的业务逻辑,通过脚本引擎按照业务逻辑执行脚本内容,得到业务数据,并将业务数据返回给终端。采用本方法能够避免在开发业务时系统在一段时间内无法提供服务的情况,从而能够快速响应用户的需求。
Description
技术领域
本申请涉及计算机技术领域,特别是涉及一种业务开发方法、装置、计算机设备和存储介质。
背景技术
随着计算机技术的发展,出现了各种业务开发平台。这类平台一般可以是通过将新增的业务做成插件,然后根据调用插件来执行对应的业务逻辑。但是这种通过插件实现业务的开发或新功能的扩展,需要重新编译,打包,以及重新部署,导致系统在一定时间内无法提供服务。
发明内容
基于此,有必要针对上述技术问题,提供一种能够快速响应的业务开发方法、装置、计算机设备和存储介质。
一种业务开发方法,所述方法包括:
接收终端发送的所选择的版本标识;
根据所述版本标识从版本数据库中获取对应的脚本文件;
确定所述脚本文件中脚本内容的业务逻辑;
通过脚本引擎按照所述业务逻辑执行所述脚本内容,得到业务数据;
将所述业务数据返回给所述终端。
在其中一个实施例中,所述确定所述脚本文件中脚本内容的业务逻辑,包括:
对所述脚本文件进行解析,确定所述脚本文件中脚本内容的业务逻辑为同步调用方式或异步调用方式。
在其中一个实施例中,所述脚本引擎包括生产者组、消息队列、消费者组、预编译缓存、脚本编译器和脚本执行引擎;所述通过脚本引擎按照所述业务逻辑执行所述脚本内容,得到业务数据,包括:
通过脚本引擎的生产者组接收所述脚本文件,并将所述脚本文件放置到消息队列中;
通过消费者组从所述消息队列中获取所述脚本文件,并将所述脚本文件与预编译缓存中的脚本文件进行匹配;
当匹配成功时,获取所述预编译缓存中的脚本文件对应的机器代码;
通过脚本执行引擎按照所述业务逻辑执行所述机器代码,并将执行结果返回给所述生产者组;
通过所述生产者组根据所述执行结果生成业务数据。
在其中一个实施例中,所述将所述脚本文件与预编译缓存中的脚本文件进行匹配,还包括:
当匹配失败时,通过脚本编译器编译所述脚本文件中的脚本内容,得到机器代码;
将所述脚本文件和所述机器代码对应存储在所述预编译缓存中;
通过脚本执行引擎按照所述业务逻辑执行所述机器代码,并将执行结果返回给所述生产者组;
通过所述生产者组根据所述执行结果生成业务数据。
在其中一个实施例中,所述方法还包括:
监测所述脚本引擎执行所述脚本文件的时间;
当所述脚本引擎执行所述脚本文件的时间超过指定时长时,停止所述脚本引擎对所述脚本文件的执行操作;
获取停止执行的所述脚本文件的前一版本的历史脚本文件;
执行所述前一版本的历史脚本文件。
在其中一个实施例中,在所述接收终端发送的所选择的版本标识之前,还包括:
接收业务请求,获取最新版本标识对应的历史脚本文件;
根据所述业务请求对所述历史脚本文件进行开发,得到开发后的脚本文件;
根据所述历史脚本文件的版本标识,创建所述开发后的脚本文件的版本标识;
将所述开发后的脚本文件和所述脚本文件的版本标识对应存储在版本数据库中。
在其中一个实施例中,所述方法还包括:
所述脚本引擎用于执行javascript脚本或groovy脚本。
一种业务开发装置,所述装置包括:
接收模块,用于接收终端发送的所选择的版本标识;
获取模块,用于根据所述版本标识从版本数据库中获取对应的脚本文件;
确定模块,用于确定所述脚本文件中脚本内容的业务逻辑;
执行模块,用于通过脚本引擎按照所述业务逻辑执行所述脚本内容,得到业务数据;
返回模块,用于将所述业务数据返回给所述终端。
一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现上述方法的步骤。
一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述方法的步骤。
上述业务开发方法、装置、计算机设备和存储介质,通过接收终端发送的所选择的版本标识,根据版本标识可以快速地从版本数据库中获取对应的脚本文件,再对脚本文件进行分析以确定脚本文件中脚本内容的业务逻辑,然后通过脚本引擎按照业务逻辑执行脚本内容,得到执行后产生的业务数据,并将业务数据返回给终端。采用该方法开发业务时无需停机,避免系统在一段时间内无法提供服务的情况,从而能够快速响应用户的需求。
附图说明
图1为一个实施例中业务开发方法的应用环境图;
图2为一个实施例中业务开发方法的流程示意图;
图3为一个实施例中脚本引擎执行脚本文件的步骤的流程示意图;
图4为另一个实施例中脚本引擎执行脚本文件的步骤的流程示意图;
图5为一个实施例中脚本引擎的架构图;
图6为另一个实施例中监测脚本引擎执行的步骤的流程示意图;
图7为一个实施例中开发新脚本文件的步骤的流程示意图;
图8为一个实施例中完成终端的业务请求的响应步骤的流程示意图;
图9为一个实施例中业务开发装置的结构框图;
图10为一个实施例中计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
本申请实施例提供的业务开发方法,可以应用于如图1所示的应用环境中。其中,终端102通过网络与服务器104进行通信。其中,终端102可以但不限于是各种个人计算机、笔记本电脑、智能手机、平板电脑和便携式可穿戴设备等,服务器104可以用独立的服务器或者是多个服务器组成的服务器集群来实现。
在一个实施例中,如图2所示,提供了一种业务开发方法,以该方法应用于图1中的服务器为例进行说明,包括以下步骤:
步骤202,接收终端发送的所选择的版本标识。
其中,版本标识是指脚本文件的版本的唯一标识,每个版本的脚本文件都有一个唯一的版本标识。该版本标识可以但不限于是按照一些规则生成的随机字符串、地址标识或者用户自定义的名称等。
具体地,终端接收用户的触发操作,根据用户的触发操作确定用户的需求,然后终端从服务器的版本数据库中查找实现该用户的需求的脚本文件,并获取该脚本文件的版本标识,然后终端将该脚本文件的版本标识发送给服务器。
步骤204,根据版本标识从版本数据库中获取对应的脚本文件。
具体地,服务器接收终端发送的脚本文件的版本标识,将该版本标识与版本数据库中的版本标识进行匹配,将该版本标识与该版本数据库中的版本标识一一对比,当在版本数据库中查找到相同的版本标识时,判定匹配成功。则服务器从该版本数据库中获取该相同版本标识对应的脚本文件。
步骤206,确定脚本文件中脚本内容的业务逻辑。
步骤208,通过脚本引擎按照业务逻辑执行脚本内容,得到业务数据。
其中,业务逻辑是指实现具体功能的流程。脚本引擎就是一个计算机编程语言的解释器,如用于建网站的php(Hypertext Preprocessor,超级文本预处理语言)等。脚本引擎的功能是解释执行用户的程序文本,将用户的程序文本译成计算机能执行的机器代码,以完成一系列的功能。例如,脚本引擎可以是nashorn脚本引擎,nashorn是java的嵌入式javascript引擎,它可以在javascript中调用java类以实现一系列功能。
具体地,脚本文件中包括业务逻辑和脚本内容。脚本内容为实现具体功能的程序文本。服务器获取到该脚本文件后,通过脚本引擎解析脚本文件,确定脚本文件中的脚本内容的业务逻辑。然后服务器再通过脚本引擎按照业务逻辑执行该脚本文件中的脚本内容,以实现该脚本文件的具体功能。
步骤210,将业务数据返回给终端。
具体地,服务器通过脚本引擎完成脚本内容的执行后,得到产生的业务数据。服务器将该产生的业务数据返回给终端,以结束本次业务请求的响应操作。
上述业务开发方法中,通过接收终端发送的所选择的版本标识,根据版本标识可以快速地从版本数据库中获取对应的脚本文件,再对脚本文件进行分析以确定脚本文件中脚本内容的业务逻辑,然后通过脚本引擎按照业务逻辑执行脚本内容,以得到执行后产生的业务数据,并将业务数据返回给终端以完成响应。采用该方法开发业务时无需停机,避免系统在一段时间内无法提供服务的情况,从而能够快速响应用户的需求。
在一个实施例中,确定脚本文件中脚本内容的业务逻辑,包括:对脚本文件进行解析,确定脚本文件中脚本内容的业务逻辑为同步调用方式或异步调用方式。
其中,同步调用主要用在生产者需要获取脚本的执行结果时,如果需要同步的调用,生产者需要在脚本对象中设置一个消息管道,待消费者执行脚本完成后会将结果通过该管道发送给生产者。异步调用主要体现在生产者不关心脚本的执行结果,异步调用简单一些,生产者只需要将脚本对象放入消息队列中,生产者即可返回,执行结果被消费者丢弃。
具体地,服务器对获取的脚本文件进行解析,将脚本文件解析为业务逻辑和脚本内容两部分。然后服务器继续解析该业务逻辑,确定该业务逻辑为同步调用或异步调用。当该业务逻辑为同步调用方式时,按照同步调用的方式执行该脚本内容。当该业务逻辑为异步调用方式时,按照异步调用的方式执行该脚本内容。通过解析脚本文件以脚本内容为同步调用或异步调用中的一种,使得可以按照特定的调用方式执行脚本内容,从而确保脚本文件被脚本引擎执行时的有序性,从而提高执行的效率。
在本实施例中,当存在第一脚本文件和第二脚本文件,并且第二脚本文件依赖于第一脚本文件时,脚本引擎只能使用同步调用方式执行。具体地,当脚本引擎需要执行多个脚本文件,并且后一个脚本文件的实现依赖与前一个脚本文件时,只能使用同步调用方式执行。例如,第二脚本文件可以实现的功能是在第一脚本文件的功能的基础上实现的,则脚本引擎只能先执行第一个脚本文件,直到脚本引擎中的生产者组接收到消费者组返回的执行完成的结果后,才开始执行第二脚本文件。当多个脚本文件之间相互独立时,脚本引擎可同时执行多个脚本文件,从而能够快速响应请求。
在一个实施例中,如图3所示,该脚本引擎包括生产者组、消息队列、消费者组、预编译缓存、脚本编译器和脚本执行引擎;通过脚本引擎按照业务逻辑执行脚本内容,得到业务数据,包括:
步骤302,通过脚本引擎的生产者组接收脚本文件,并将脚本文件放置到消息队列中。
步骤304,通过消费者组从消息队列中获取脚本文件,并将脚本文件与预编译缓存中的脚本文件进行匹配。
具体地,服务器从版本数据库中获取脚本文件后,调用脚本引擎中的生产者组接收该脚本文件,并将该脚本文件放置在消息队列中。然后服务器继续调用脚本引擎中的消费者接收该脚本文件,然后获取脚本引擎中的预编译缓存模块中存储的脚本文件,将两者进行匹配。进一步地,服务器可以通过脚本文件的版本标识和预编译缓存模块中存储的脚本文件的版本标识对比,如预编译缓存模块中存在相同的脚本文件的版本标识,则判定匹配成功。若预编译缓存模块中不存在与接收的脚本文件的版本标识相同的版本标识时,判定匹配失败。
步骤306,当匹配成功时,获取预编译缓存中的脚本文件对应的机器代码。
其中,机器代码是指经过预编译的代码。开发者编写的源代码并不能被机器直接执行,需要经过编译器或汇编器进行处理后才能被机器识别和执行。机器代码可以但不限于是二进制、八进制或十六进制的代码等。
具体地,预编译缓存模块中存储着脚本文件和对脚本内容进行编译后得到的机器代码。还可以存储脚本文件的其它信息,例如:脚本文件的版本标识。当脚本文件与预编译缓存模块中的脚本文件匹配成功时,表示该脚本文件之前已被脚本引擎执行过,并且在预编译缓存模块中存储有该脚本文件的脚本内容对应的机器代码,则服务器从预编译缓存模块中获取该脚本内容对应的机器代码。
步骤308,通过脚本执行引擎按照业务逻辑执行机器代码,并将执行结果返回给生产者组。
步骤310,通过生产者组根据执行结果生成业务数据。
具体地,服务器通过脚本引擎的消费者组将获取的机器代码传递给脚本执行引擎,通过脚本执行引擎按照业务逻辑执行该机器代码。执行完成后,消费者组生成一个执行结果,并将该执行结果返回给生产者组。生产者组接收该执行结果信息,并根据该执行结果生成业务数据。该业务数据是指脚本引擎在执行脚本过程中产生的用于完成终端请求的数据。
上述业务开发方法,通过脚本引擎的生产者组接收脚本文件,并将脚本文件放置到消息队列中,再通过消费者组将脚本文件与预编译缓存中的脚本文件进行匹配,以获取该脚本文件对应的机器代码。接着通过脚本执行引擎执行该机器代码,执行完成后生成业务数据。通过细化脚本引擎中的各个部分的分工,保证脚本引擎执行过程的有序性,从而提高执行的速度,并且在执行异常时,可以准确检测出存在问题的部分。
在其中一个实施例中,如图4所示,将脚本文件与预编译缓存中的脚本文件进行匹配,还包括:
步骤402,当匹配失败时,通过脚本编译器编译脚本文件中的脚本内容,得到机器代码。
步骤404,将脚本文件和机器代码对应存储在预编译缓存中。
具体地,当脚本文件与预编译缓存模块中的脚本文件匹配失败时,表示在预编译缓存模块中未存储有该脚本文件的脚本内容对应的机器代码,则服务器通过脚本引擎的脚本编译器将脚本内容进行编译,得到对应的机器代码。然后将脚本文件和机器代码一起存储在预缓存编译模块中,以便下次再次执行该脚本文件时可直接调用。
步骤406,通过脚本执行引擎按照业务逻辑执行机器代码,并将执行结果返回给生产者组。
步骤408,通过生产者组根据执行结果生成业务数据。
具体地,服务器通过脚本引擎的消费者组将编译得到的机器代码传递给脚本执行引擎,通过脚本执行引擎按照业务逻辑执行该机器代码。执行完成后,消费者组生成一个执行结果,并将该执行结果返回给生产者组。生产者组接收该执行结果信息,并根据该执行结果生成业务数据。通过将需要执行的脚本文件与脚本引擎中存储的历史脚本文件进行匹配,确定脚本引擎中是否已存在该脚本文件,当不存在时,先将脚本文件经过预编译得到机器代码,并将脚本文件和机器代码存储,再按照业务逻辑执行该机器代码,方便下次执行该相同的脚本文件时,无需再次进行预编译就可直接调用,节省了预编译的时间,从而加快了脚本引擎的执行速度。
如图5所示,为一个实施例中脚本引擎执行脚本文件的具体实现过程。
该脚本引擎包括生产者组、消息队列、消费者组、预编译缓存、脚本编译器和脚本执行引擎。服务器将获取的脚本文件分配给脚本引擎执行。脚本引擎中的生产者组接收该脚本文件,并将该脚本文件放置在消息队列中,然后脚本引擎中的消费者接收该脚本文件,并从预编译缓存模块中获取存储的脚本文件,将两者进行匹配。当匹配成功时,获取预编译缓存中的脚本文件对应的机器代码,通过脚本执行引擎按照业务逻辑执行该机器代码。执行完成后,消费者组生成一个执行结果,并将该执行结果返回给生产者组。生产者组接收该执行结果信息,并根据该执行结果生成业务数据。当该脚本文件为新开发的业务的具体实现内容时,脚本引擎第一次执行该脚本文件,则会匹配失败。匹配失败时,消费者组通过脚本编译器编译脚本文件中的脚本内容,得到机器代码,然后将脚本文件和机器代码一起存储在预缓存编译模块中。同样地,执行完成后,消费者组生成一个执行结果,并将该执行结果返回给生产者组。生产者组接收该执行结果信息,并根据该执行结果生成业务数据。
在其中一个实施例中,如图6所示,该业务开发方法还包括:
步骤602,监测脚本引擎执行脚本文件的时间。
步骤604,当脚本引擎执行脚本文件的时间超过指定时长时,停止脚本引擎对脚本文件的执行操作。
具体地,服务器预先设置脚本引擎执行每个脚本文件的时间,当脚本引擎开始执行脚本文件时,检测执行的时间。如果脚本引擎在指定时间内完成对脚本文件执行,则判定执行成功。如果脚本引擎执行脚本文件的时间超过指定时长,则可能脚本引擎在执行过程中出现了异常,无法完成脚本文件的执行。为了不影响系统的正常运行,则服务器在到达指定时长时,可直接停止脚本引擎对该脚本文件的执行。
步骤606,获取停止执行的脚本文件的前一版本的历史脚本文件。
步骤608,执行前一版本的历史脚本文件。
停止脚本引擎对该脚本文件的执行后,服务器可以获取到上一版本的历史脚本文件,然后通过脚本引擎执行该历史脚本文件。例如,当前的脚本文件为实现一个新业务功能的脚本文件,版本号为4.0,在通过脚本引擎执行该脚本文件时,服务器实时监测脚本引擎的执行时间,预先设置的脚本执行时间为5分钟。当检测到脚本引擎的执行4.0版本的脚本文件的时间超过了5分钟时,服务器强制停止脚本文件的执行。然后服务器根据当前的脚本文件的4.0版本标识可确定前一本版标识为3.0,并从预缓存编译中获取该版本标识为3.0的脚本文件对应的机器代码,然后通过脚本执行引擎执行该机器代码。最后服务器将脚本引擎执行结束后产生的业务数据返回给终端,同时将该脚本文件对应的版本信息返回给终端,以提示终端该版本并非最新版本。通过设置脚本引擎的执行时间,并做超时检测,当执行超时时可强制停止脚本引擎对当前脚本文件的执行,并回滚到上一版本的脚本文件,以避免脚本引擎执行异常而导致无法完成响应的情况。
在一个实施例中,如图7所示,在接收终端发送的所选择的版本标识之前,还包括:
步骤702,接收业务请求,获取最新版本标识对应的历史脚本文件。
步骤704,根据业务请求对历史脚本文件进行开发,得到开发后的脚本文件。
步骤706,根据历史脚本文件的版本标识,创建开发后的脚本文件的版本标识。
步骤708,将开发后的脚本文件和脚本文件的版本标识对应存储在版本数据库中。
具体地,服务器接收终端发送的业务请求,然后从版本数据库中获取最新版本的历史脚本文件。服务器分析该业务请求,根据该业务请求对该脚本文件中的脚本内容进行修改,并确定新的脚本内容的业务逻辑。服务器可通过WebIDE从版本数据库中迁出最新版本的代码,再根据业务请求对该代码进行修改,得到能够实现该业务请求的新代码,并根据该新代码确定其业务逻辑,将该新代码和业务逻辑作为脚本文件。并根据该最新版本的历史脚本文件的版本标识,创建该开发后的脚本文件的版本标识,然后将该脚本文件和该脚本文件的版本标识对应存储在版本数据库中。根据业务请求在最新版本的历史脚本文件上进行开发,得到能够实现该业务请求的新的脚本文件,并创建新脚本文件的版本标识,从而能够直接在不影响其它业务的情况下开发新的业务。并且,通过版本化的数据库存储多版本的脚本文件,支持增量的容灾备份。
在一个实施例中,该业务开发方法还包括:脚本引擎用于执行javascript脚本或groovy脚本。
其中,脚本script是使用一种特定的描述性语言,依据一定的格式编写的可执行文件,又称作宏或批处理文件。脚本通常可以由应用程序临时调用并执行。JavaScript一种直译式脚本语言,是一种动态类型、弱类型、基于原型的语言,内置支持类型。groovy是一种基于JVM(Java虚拟机)的动态语言,它结合了Python、Ruby和Smalltalk的许多强大的特性,groovy代码能够与Java代码很好地结合,也能用于扩展现有代码。当运行groovy脚本时它会先被编译成Java类字节码,然后通过JVM虚拟机执行这个Java字节码类。
具体地,脚本引擎可支持多种动态脚本语言,例如javascript和groovy等,可以执行javascript脚本或groovy脚本等多种脚本文件,从而能够提供更全面的功能。
如图8所示,为一个实施例中服务器根据终端的业务请求完成响应的过程。
首先,终端接收到用户的操作,根据用户的操作确定能响应该用户的脚本文件。然后访问服务器的版本数据库,从版本数据库中获取能响应用户操作的脚本文件的版本标识,并将该脚本文件的版本标识发送给服务器。服务器接收到来自终端的版本标识,从版本数据库中提取该版本标识对应的脚本文件,并通过脚本引擎执行该脚本文件。服务器的脚本引擎接收到该脚本文件,对该脚本文件进行解析以确定该脚本文件中的脚本内容的业务逻辑,接着按照业务逻辑执行该脚本内容。执行结束后生成业务数据,服务器将该业务数据和该脚本文件的版本标识返回给终端。
在一个实施例中,该业务开发方法包括:
服务器接收业务请求,获取最新版本标识对应的历史脚本文件。
接着,服务器根据业务请求对历史脚本文件进行开发,得到开发后的脚本文件。
可选地,服务器根据历史脚本文件的版本标识,创建开发后的脚本文件的版本标识。
接着,服务器将开发后的脚本文件和脚本文件的版本标识对应存储在版本数据库中。
可选地,服务器接收终端发送的所选择的版本标识,根据版本标识从版本数据库中获取对应的脚本文件。
接着,服务器通过脚本引擎确定脚本文件中脚本内容的业务逻辑,并通过脚本引擎的生产者组接收脚本文件,并将脚本文件放置到消息队列中;脚本引擎包括生产者组、消息队列、消费者组、预编译缓存、脚本编译器和脚本执行引擎。
进一步地,服务器通过脚本引擎的消费者组从消息队列中获取脚本文件,并将脚本文件与预编译缓存中的脚本文件进行匹配。
接着,当匹配成功时,服务器通过脚本引擎的消费者组获取预编译缓存中的脚本文件对应的机器代码。
进一步地,服务器通过脚本引擎中的脚本执行引擎按照业务逻辑执行机器代码,并将执行结果返回给生产者组。
可选地,当匹配失败时,服务器通过脚本引擎的脚本编译器编译脚本文件中的脚本内容,得到机器代码。
接着,服务器将脚本文件和机器代码对应存储在脚本引擎的预编译缓存中;
进一步地,服务器通过脚本引擎的脚本执行引擎按照业务逻辑执行机器代码,并将执行结果返回给生产者组。
接着,服务器通过脚本引擎的生产者组根据执行结果生成业务数据。
可选地,服务器监测脚本引擎执行脚本文件的时间。
接着,当脚本引擎执行脚本文件的时间超过指定时长时,服务器停止脚本引擎对脚本文件的执行操作。
可选地,服务器获取停止执行的脚本文件的前一版本的历史脚本文件。
接着,服务器通过脚本引擎执行前一版本的历史脚本文件。
接着,服务器将脚本引擎执行后产生的业务数据返回给终端。
上述业务开发方法,根据业务请求在最新版本的历史脚本文件上进行开发,得到能够实现该业务请求的新的脚本文件,并创建新脚本文件的版本标识,从而能够直接在不影响其它业务的情况下开发新的业务。并且,通过版本化的数据库存储多版本的脚本文件,支持增量的容灾备份。接着,通过脚本引擎的生产者组接收脚本文件,并将脚本文件放置到消息队列中,再通过消费者组将脚本文件与预编译缓存中的脚本文件进行匹配,以获取该脚本文件对应的机器代码。接着通过脚本执行引擎执行该机器代码,执行完成后生成业务数据。从而细化脚本引擎中的各个部分的分工,保证脚本引擎执行过程的有序性,进而提高执行的速度,并且在执行异常时,可以准确检测出存在问题的部分。当匹配失败时,先将脚本文件经过预编译得到机器代码,并将脚本文件和机器代码存储,再按照业务逻辑执行该机器代码,方便下次执行该相同的脚本文件时,无需再次进行预编译就可直接调用,节省了预编译的时间,从而加快了脚本引擎的执行速度。最后通过设置脚本引擎的执行时间,并做超时检测,当执行超时时可强制停止脚本引擎对当前脚本文件的执行,并回滚到上一版本的脚本文件,以避免脚本引擎执行异常而导致无法完成响应的情况。采用该方法开发业务时无需停机,避免系统在一段时间内无法提供服务的情况,从而能够快速响应用户的需求。
应该理解的是,虽然图1-8流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图1-8中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
在一个实施例中,如图9所示,提供了一种业务开发装置,包括:接收模块、获取模块、确定模块、执行模块和返回模块,其中:
接收模块902,用于接收终端发送的所选择的版本标识。
获取模块904,用于根据版本标识从版本数据库中获取对应的脚本文件。
确定模块906,用于确定脚本文件中脚本内容的业务逻辑。
执行模块908,用于通过脚本引擎按照业务逻辑执行脚本内容,得到业务数据。
返回模块910,用于将业务数据返回给终端。
上述业务开发装置中,通过接收终端发送的所选择的版本标识,根据版本标识可以快速地从版本数据库中获取对应的脚本文件,再对脚本文件进行分析以确定脚本文件中脚本内容的业务逻辑,然后通过脚本引擎按照业务逻辑执行脚本内容,以得到执行后产生的业务数据,并将业务数据返回给终端以完成响应。采用该方法开发业务时无需停机,避免系统在一段时间内无法提供服务的情况,从而能够快速响应用户的需求。
在一个实施例中,确定模块906还用于:对脚本文件进行解析,确定脚本文件中脚本内容的业务逻辑为同步调用方式或异步调用方式。通过解析脚本文件以脚本内容为同步调用或异步调用中的一种,使得可以按照特定的调用方式执行脚本内容,从而确保脚本文件被脚本引擎执行时的有序性,从而提高执行的效率。
在一个实施例中,执行模块908还用于:通过脚本引擎的生产者组接收脚本文件,并将脚本文件放置到消息队列中;通过消费者组从消息队列中获取脚本文件,并将脚本文件与预编译缓存中的脚本文件进行匹配;当匹配成功时,获取预编译缓存中的脚本文件对应的机器代码;通过脚本执行引擎按照业务逻辑执行机器代码,并将执行结果返回给生产者组;通过生产者组根据执行结果生成业务数据。
上述业务开发装置,通过脚本引擎的生产者组接收脚本文件,并将脚本文件放置到消息队列中,再通过消费者组将脚本文件与预编译缓存中的脚本文件进行匹配,以获取该脚本文件对应的机器代码。接着通过脚本执行引擎执行该机器代码,执行完成后生成业务数据。通过细化脚本引擎中的各个部分的分工,保证脚本引擎执行过程的有序性,从而提高执行的速度,并且在执行异常时,可以准确检测出存在问题的部分。
在一个实施例中,执行模块908还用于:当匹配失败时,通过脚本编译器编译脚本文件中的脚本内容,得到机器代码;将脚本文件和机器代码对应存储在预编译缓存中;通过脚本执行引擎按照业务逻辑执行机器代码,并将执行结果返回给生产者组;通过生产者组根据执行结果生成业务数据。。通过将需要执行的脚本文件与脚本引擎中存储的历史脚本文件进行匹配,确定脚本引擎中是否已存在该脚本文件,当不存在时,先将脚本文件经过预编译得到机器代码,并将脚本文件和机器代码存储,再按照业务逻辑执行该机器代码,方便下次执行该相同的脚本文件时,无需再次进行预编译就可直接调用,节省了预编译的时间,从而加快了脚本引擎的执行速度。
在一个实施例中,该业务开发装置还包括:检测模块。检测模块用于监测脚本引擎执行脚本文件的时间;当脚本引擎执行脚本文件的时间超过指定时长时,停止脚本引擎对脚本文件的执行操作;获取停止执行的脚本文件的前一版本的历史脚本文件;执行前一版本的历史脚本文件。通过设置脚本引擎的执行时间,并做超时检测,当执行超时时可强制停止脚本引擎对当前脚本文件的执行,并回滚到上一版本的脚本文件,以避免脚本引擎执行异常而导致无法完成响应的情况。
在一个实施例中,该业务开发装置还包括:开发模块。开发模块用于接收业务请求,获取最新版本标识对应的历史脚本文件;根据业务请求对历史脚本文件进行开发,得到开发后的脚本文件;根据历史脚本文件的版本标识,创建开发后的脚本文件的版本标识;将开发后的脚本文件和脚本文件的版本标识对应存储在版本数据库中。根据业务请求在最新版本的历史脚本文件上进行开发,得到能够实现该业务请求的新的脚本文件,并创建新脚本文件的版本标识,从而能够直接在不影响其它业务的情况下开发新的业务。并且,通过版本化的数据库存储多版本的脚本文件,支持增量的容灾备份。
关于业务开发装置的具体限定可以参见上文中对于业务开发方法的限定,在此不再赘述。上述业务开发装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图10所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口和数据库。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储业务开发的数据。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种业务开发方法。
本领域技术人员可以理解,图10中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现上述业务开发方法的步骤。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现上述业务开发方法的步骤。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(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)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。
Claims (10)
1.一种业务开发方法,所述方法包括:
接收终端发送的所选择的版本标识;
根据所述版本标识从版本数据库中获取对应的脚本文件;
确定所述脚本文件中脚本内容的业务逻辑;
通过脚本引擎按照所述业务逻辑执行所述脚本内容,得到业务数据;
将所述业务数据返回给所述终端。
2.根据权利要求1所述的方法,其特征在于,所述确定所述脚本文件中脚本内容的业务逻辑,包括:
对所述脚本文件进行解析,确定所述脚本文件中脚本内容的业务逻辑为同步调用方式或异步调用方式。
3.根据权利要求1所述的方法,其特征在于,所述脚本引擎包括生产者组、消息队列、消费者组、预编译缓存、脚本编译器和脚本执行引擎;所述通过脚本引擎按照所述业务逻辑执行所述脚本内容,得到业务数据,包括:
通过脚本引擎的生产者组接收所述脚本文件,并将所述脚本文件放置到消息队列中;
通过消费者组从所述消息队列中获取所述脚本文件,并将所述脚本文件与预编译缓存中的脚本文件进行匹配;
当匹配成功时,获取所述预编译缓存中的脚本文件对应的机器代码;
通过脚本执行引擎按照所述业务逻辑执行所述机器代码,并将执行结果返回给所述生产者组;
通过所述生产者组根据所述执行结果生成业务数据。
4.根据权利要求3所述的方法,其特征在于,所述将所述脚本文件与预编译缓存中的脚本文件进行匹配,还包括:
当匹配失败时,通过脚本编译器编译所述脚本文件中的脚本内容,得到机器代码;
将所述脚本文件和所述机器代码对应存储在所述预编译缓存中;
通过脚本执行引擎按照所述业务逻辑执行所述机器代码,并将执行结果返回给所述生产者组;
通过所述生产者组根据所述执行结果生成业务数据。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:
监测所述脚本引擎执行所述脚本文件的时间;
当所述脚本引擎执行所述脚本文件的时间超过指定时长时,停止所述脚本引擎对所述脚本文件的执行操作;
获取停止执行的所述脚本文件的前一版本的历史脚本文件;
执行所述前一版本的历史脚本文件。
6.根据权利要求1所述的方法,其特征在于,在所述接收终端发送的所选择的版本标识之前,还包括:
接收业务请求,获取最新版本标识对应的历史脚本文件;
根据所述业务请求对所述历史脚本文件进行开发,得到开发后的脚本文件;
根据所述历史脚本文件的版本标识,创建所述开发后的脚本文件的版本标识;
将所述开发后的脚本文件和所述脚本文件的版本标识对应存储在版本数据库中。
7.根据权利要求1至6任意一项所述的方法,其特征在于,
所述脚本引擎用于执行javascript脚本或groovy脚本。
8.一种业务开发装置,其特征在于,所述装置包括:
接收模块,用于接收终端发送的所选择的版本标识;
获取模块,用于根据所述版本标识从版本数据库中获取对应的脚本文件;
确定模块,用于确定所述脚本文件中脚本内容的业务逻辑;
执行模块,用于通过脚本引擎按照所述业务逻辑执行所述脚本内容,得到业务数据;
返回模块,用于将所述业务数据返回给所述终端。
9.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至7中任一项所述方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至7中任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811600020.7A CN109766124B (zh) | 2018-12-26 | 2018-12-26 | 业务开发方法、装置、计算机设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811600020.7A CN109766124B (zh) | 2018-12-26 | 2018-12-26 | 业务开发方法、装置、计算机设备和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109766124A true CN109766124A (zh) | 2019-05-17 |
CN109766124B CN109766124B (zh) | 2022-05-03 |
Family
ID=66451981
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811600020.7A Active CN109766124B (zh) | 2018-12-26 | 2018-12-26 | 业务开发方法、装置、计算机设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109766124B (zh) |
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110413428A (zh) * | 2019-08-06 | 2019-11-05 | 中国联合网络通信集团有限公司 | 对账数据的处理方法、电子设备及存储介质 |
CN110502483A (zh) * | 2019-07-09 | 2019-11-26 | 招联消费金融有限公司 | 数据处理方法、装置、计算机设备和存储介质 |
CN110851159A (zh) * | 2019-10-31 | 2020-02-28 | 浙江大搜车软件技术有限公司 | 业务规则更新方法、装置、计算机设备和存储介质 |
CN110955410A (zh) * | 2019-10-23 | 2020-04-03 | 山东中创软件工程股份有限公司 | 一种代码自动生成方法、装置、设备及介质 |
CN111168668A (zh) * | 2019-12-26 | 2020-05-19 | 深圳市优必选科技股份有限公司 | 一种机器人的控制方法及机器人 |
CN111240728A (zh) * | 2020-01-16 | 2020-06-05 | 中国建设银行股份有限公司 | 应用程序更新方法、装置、设备和存储介质 |
CN111381830A (zh) * | 2020-03-10 | 2020-07-07 | 腾讯科技(深圳)有限公司 | 程序中的数据请求处理方法、装置和计算机设备 |
CN111538483A (zh) * | 2020-03-25 | 2020-08-14 | 平安科技(深圳)有限公司 | 一种数据处理方法、设备、服务器及可读存储介质 |
CN112256341A (zh) * | 2020-09-15 | 2021-01-22 | 深圳追一科技有限公司 | 业务处理方法、装置、计算机设备和存储介质 |
CN112784029A (zh) * | 2021-01-28 | 2021-05-11 | 深圳追一科技有限公司 | 基于自然语言处理的业务处理方法、装置和计算机设备 |
CN112800741A (zh) * | 2021-01-29 | 2021-05-14 | 远光软件股份有限公司 | 任务执行方法、电子设备及存储介质 |
CN113177021A (zh) * | 2021-04-28 | 2021-07-27 | 中国工商银行股份有限公司 | 一种不同数据源的数据导出方法及装置 |
CN113377752A (zh) * | 2021-06-04 | 2021-09-10 | 深圳力维智联技术有限公司 | 数据的清洗方法、装置、系统及计算机可读存储介质 |
CN113656291A (zh) * | 2021-08-04 | 2021-11-16 | 成都中科合迅科技有限公司 | 软件脚本引擎动态调用方法 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060262915A1 (en) * | 2005-05-19 | 2006-11-23 | Metreos Corporation | Proxy for application server |
CN101446955A (zh) * | 2008-12-11 | 2009-06-03 | 深圳市茁壮网络技术有限公司 | 一种浏览器的实现方法、装置和系统 |
CN106605397A (zh) * | 2014-10-26 | 2017-04-26 | 迈克菲股份有限公司 | 安全编排框架 |
CN106775978A (zh) * | 2016-12-12 | 2017-05-31 | 北京匡恩网络科技有限责任公司 | 脚本调用方法及指令调试装置 |
CN107688531A (zh) * | 2017-06-20 | 2018-02-13 | 平安科技(深圳)有限公司 | 数据库集成测试方法、装置、计算机设备及存储介质 |
CN108667919A (zh) * | 2018-04-25 | 2018-10-16 | 金蝶软件(中国)有限公司 | 数据处理方法、装置、计算机设备和存储介质 |
-
2018
- 2018-12-26 CN CN201811600020.7A patent/CN109766124B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060262915A1 (en) * | 2005-05-19 | 2006-11-23 | Metreos Corporation | Proxy for application server |
CN101446955A (zh) * | 2008-12-11 | 2009-06-03 | 深圳市茁壮网络技术有限公司 | 一种浏览器的实现方法、装置和系统 |
CN106605397A (zh) * | 2014-10-26 | 2017-04-26 | 迈克菲股份有限公司 | 安全编排框架 |
CN106775978A (zh) * | 2016-12-12 | 2017-05-31 | 北京匡恩网络科技有限责任公司 | 脚本调用方法及指令调试装置 |
CN107688531A (zh) * | 2017-06-20 | 2018-02-13 | 平安科技(深圳)有限公司 | 数据库集成测试方法、装置、计算机设备及存储介质 |
CN108667919A (zh) * | 2018-04-25 | 2018-10-16 | 金蝶软件(中国)有限公司 | 数据处理方法、装置、计算机设备和存储介质 |
Non-Patent Citations (1)
Title |
---|
梁超捷: "基于脚本、队列状态机的测试系统构架的设计与实现", 《 中国优秀硕士论文电子期刊网 信息科技辑》 * |
Cited By (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110502483A (zh) * | 2019-07-09 | 2019-11-26 | 招联消费金融有限公司 | 数据处理方法、装置、计算机设备和存储介质 |
CN110413428A (zh) * | 2019-08-06 | 2019-11-05 | 中国联合网络通信集团有限公司 | 对账数据的处理方法、电子设备及存储介质 |
CN110955410A (zh) * | 2019-10-23 | 2020-04-03 | 山东中创软件工程股份有限公司 | 一种代码自动生成方法、装置、设备及介质 |
CN110955410B (zh) * | 2019-10-23 | 2023-06-27 | 山东中创软件工程股份有限公司 | 一种代码自动生成方法、装置、设备及介质 |
CN110851159A (zh) * | 2019-10-31 | 2020-02-28 | 浙江大搜车软件技术有限公司 | 业务规则更新方法、装置、计算机设备和存储介质 |
CN110851159B (zh) * | 2019-10-31 | 2023-01-10 | 浙江大搜车软件技术有限公司 | 业务规则更新方法、装置、计算机设备和存储介质 |
CN111168668A (zh) * | 2019-12-26 | 2020-05-19 | 深圳市优必选科技股份有限公司 | 一种机器人的控制方法及机器人 |
CN111240728A (zh) * | 2020-01-16 | 2020-06-05 | 中国建设银行股份有限公司 | 应用程序更新方法、装置、设备和存储介质 |
CN111381830A (zh) * | 2020-03-10 | 2020-07-07 | 腾讯科技(深圳)有限公司 | 程序中的数据请求处理方法、装置和计算机设备 |
CN111538483B (zh) * | 2020-03-25 | 2024-05-28 | 平安科技(深圳)有限公司 | 一种数据处理方法、设备、服务器及可读存储介质 |
CN111538483A (zh) * | 2020-03-25 | 2020-08-14 | 平安科技(深圳)有限公司 | 一种数据处理方法、设备、服务器及可读存储介质 |
CN112256341A (zh) * | 2020-09-15 | 2021-01-22 | 深圳追一科技有限公司 | 业务处理方法、装置、计算机设备和存储介质 |
CN112256341B (zh) * | 2020-09-15 | 2024-03-19 | 深圳追一科技有限公司 | 业务处理方法、装置、计算机设备和存储介质 |
CN112784029A (zh) * | 2021-01-28 | 2021-05-11 | 深圳追一科技有限公司 | 基于自然语言处理的业务处理方法、装置和计算机设备 |
CN112800741A (zh) * | 2021-01-29 | 2021-05-14 | 远光软件股份有限公司 | 任务执行方法、电子设备及存储介质 |
CN113177021B (zh) * | 2021-04-28 | 2024-05-10 | 中国工商银行股份有限公司 | 一种不同数据源的数据导出方法及装置 |
CN113177021A (zh) * | 2021-04-28 | 2021-07-27 | 中国工商银行股份有限公司 | 一种不同数据源的数据导出方法及装置 |
CN113377752B (zh) * | 2021-06-04 | 2023-03-14 | 深圳力维智联技术有限公司 | 数据的清洗方法、装置、系统及计算机可读存储介质 |
CN113377752A (zh) * | 2021-06-04 | 2021-09-10 | 深圳力维智联技术有限公司 | 数据的清洗方法、装置、系统及计算机可读存储介质 |
CN113656291A (zh) * | 2021-08-04 | 2021-11-16 | 成都中科合迅科技有限公司 | 软件脚本引擎动态调用方法 |
Also Published As
Publication number | Publication date |
---|---|
CN109766124B (zh) | 2022-05-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109766124A (zh) | 业务开发方法、装置、计算机设备和存储介质 | |
CN110941528B (zh) | 一种基于故障的日志埋点设置方法、装置及系统 | |
CN108595329B (zh) | 一种应用测试方法、装置及计算机存储介质 | |
CN111124906B (zh) | 基于动态埋点的跟踪方法、编译方法、装置和电子设备 | |
CN107291480B (zh) | 一种函数调用方法及装置 | |
CN110866198B (zh) | 静态资源缓存方法、系统、装置、计算机设备和存储介质 | |
CN109032631B (zh) | 应用程序补丁包获取方法、装置、计算机设备及存储介质 | |
CN101290581B (zh) | 编译系统及方法 | |
CN101482845B (zh) | 一种调用即时调试器的方法和系统 | |
CN110166543A (zh) | 应用程序处理方法、装置和计算机设备 | |
CN112099880B (zh) | 场景驱动的应用程序约减方法和系统 | |
CN114115904A (zh) | 信息处理方法、装置、服务器及存储介质 | |
CN112445706A (zh) | 程序异常代码获取方法、装置、电子设备以及存储介质 | |
CN115292201B (zh) | 函数调用栈解析和回溯方法与装置 | |
CN111240728A (zh) | 应用程序更新方法、装置、设备和存储介质 | |
CN114090434B (zh) | 一种代码调试方法、装置、计算机设备和存储介质 | |
CN114489698A (zh) | 应用程序安装方法和装置 | |
CN114968198A (zh) | 一种网站开发方法、系统及其存储介质 | |
CN111381830A (zh) | 程序中的数据请求处理方法、装置和计算机设备 | |
CN113342431A (zh) | 函数调用栈回溯、程序异常处理方法、装置、设备及介质 | |
CN112148318A (zh) | 应用包发布方法、应用方法、装置、介质、服务器及设备 | |
CN110928779A (zh) | 文件处理方法、应用程序运行故障定位方法和设备 | |
CN116774988B (zh) | 解除框架包模式符号依赖的方法及装置 | |
CN116303067B (zh) | 一种基于云测试平台的测试方法、装置、设备以及介质 | |
CN109426601B (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 |