CN108459914B - 一种中间件命令执行方法及装置 - Google Patents
一种中间件命令执行方法及装置 Download PDFInfo
- Publication number
- CN108459914B CN108459914B CN201711437857.XA CN201711437857A CN108459914B CN 108459914 B CN108459914 B CN 108459914B CN 201711437857 A CN201711437857 A CN 201711437857A CN 108459914 B CN108459914 B CN 108459914B
- Authority
- CN
- China
- Prior art keywords
- command
- execution result
- middleware
- executing
- cache
- 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
Classifications
-
- 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/54—Interprogram communication
- G06F9/544—Buffers; Shared memory; Pipes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/547—Messaging middleware
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例提供一种中间件命令执行方法及装置。其中,该方法包括:调用中间件命令,并判断所述中间件命令的类型;若获知所述中间件命令为get命令,则查询缓存中是否存在所述中间件命令的执行结果;若是,则直接输出执行结果;若否,则执行所述get命令,并保存执行结果到缓存;若获知所述中间件命令为set命令,则执行所述set命令,并清除缓存中与所述set命令相关的get命令的执行结果,重新执行所述get命令,并保存执行结果到缓存。本发明实施例通过将中间件命令的执行结果存入缓存,实现了再次访问的快速获取,避免了每次需要获取中间件命令的执行结果时中间件命令的重复执行,提高了中间件调试和运行的速度,降低了时间成本。
Description
技术领域
本发明实施例涉及中间件技术领域,具体为一种中间件命令执行方法及装置。
背景技术
中间件作为一种起连接作用的连接操作系统、数据库等系统软件和应用软件之间的分布式软件,用于软件各部件之间的沟通,特别是针对于系统软件的集中的逻辑,中间件是一种独立的系统软件或服务程序。中间件主要提供标准接口、协议,解决分布式应用软件的互连与互操作问题,提高应用系统易移植性,帮助用户灵活、高效地开发和集成。相互连接的系统即使具有不同的接口,通过中间件可以屏蔽实现细节,实现信息的传递。
中间件不仅要将底层的技术抽象进中间层,而且需要根据业务的不同凝练出更多的业务共性。不断涌现的新业务新需求需要不断演进的应用模式和信息系统能力去支持,进而要求中间件不断地提供针对性支撑机制。近年来,这一需求趋势愈发明显,越来越多的业务和应用模式被不断地抽象进入中间件的层次,如业务流程流、业务模型、业务规则、交互应用等等,其结果是中间件凝练的共性功能越来越多,中间件的业务化和领域化的趋势非常明显,新的中间件的开发工程量也越来越大,工程时间越来越紧急。不同接口的对接,在大工程量的情况下,代码调试的时间需求越来越长。
发明内容
为解决现有技术中中间件开发及运行缓慢、工作量大的问题,本发明实施例提供一种中间件命令执行方法及装置。
第一方面,本明实施例提供一种中间件命令执行方法,该方法包括:调用中间件命令,并判断所述中间件命令的类型;若获知所述中间件命令为get命令,则处理所述get命令,包括:查询缓存中是否存在所述get命令的执行结果;若是,则直接输出所述执行结果;若否,则执行所述get命令,并保存所述get命令的执行结果到缓存;若获知所述中间件命令为set命令,则处理所述set命令,包括:执行所述set命令,并清除缓存中与所述set命令相关的get命令的执行结果,重新执行所述get命令,并保存所述get命令的执行结果到缓存。
第二方面,本发明实施例提供一种中间件命令执行装置,该装置包括:命令判断模块,具体用于:调用中间件命令,并判断所述中间件命令的类型;get命令处理模块,具体用于:若获知所述中间件命令为get命令,则处理所述get命令,包括:查询缓存中是否存在所述get命令的执行结果;若是,则直接输出所述执行结果;若否,则执行所述get命令,并保存所述get命令的执行结果到缓存;set命令处理模块,具体用于:若获知所述中间件命令为set命令,则处理所述set命令,包括:执行所述set命令,并清除缓存中与所述set命令相关的get命令的执行结果,重新执行所述get命令,并保存所述get命令的执行结果到缓存。
第三方面,本发明实施例提供一种计算机设备,包括存储器和处理器,所述处理器和所述存储器通过总线完成相互间的通信;所述存储器存储有可被所述处理器执行的程序指令,所述处理器调用所述程序指令能够执行如下方法:调用中间件命令,并判断所述中间件命令的类型;若获知所述中间件命令为get命令,则处理所述get命令,包括:查询缓存中是否存在所述get命令的执行结果;若是,则直接输出所述执行结果;若否,则执行所述get命令,并保存所述get命令的执行结果到缓存;若获知所述中间件命令为set命令,则处理所述set命令,包括:执行所述set命令,并清除缓存中与所述set命令相关的get命令的执行结果,重新执行所述get命令,并保存所述get命令的执行结果到缓存。
第四方面,本发明实施例提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如下方法:调用中间件命令,并判断所述中间件命令的类型;若获知所述中间件命令为get命令,则处理所述get命令,包括:查询缓存中是否存在所述get命令的执行结果;若是,则直接输出所述执行结果;若否,则执行所述get命令,并保存所述get命令的执行结果到缓存;若获知所述中间件命令为set命令,则处理所述set命令,包括:执行所述set命令,并清除缓存中与所述set命令相关的get命令的执行结果,重新执行所述get命令,并保存所述get命令的执行结果到缓存。
本发明实施例通过将中间件命令的执行结果存入缓存,实现了再次访问的快速获取,避免了每次需要获取中间件命令的执行结果时中间件命令的重复执行,提高了中间件调试和运行的速度,降低了时间成本。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的中间件命令执行方法流程图;
图2为本发明实施例提供的一种中间件命令执行装置结构示意图;
图3为本发明实施例提供的计算机设备的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1为本发明实施例提供的中间件命令执行方法流程图。如图1所示,所述方法包括:
步骤101、调用中间件命令,并判断所述中间件命令的类型;
某个中间件命令执行时,会触发中间件命令执行装置调用所述中间件命令,进而实现所述中间件命令的执行。中间件命令执行装置调用所述中间件命令后,首先判断所述中间件命令的类型,所述中间件命令的类型包括get命令和set命令,所述get命令为获取信息的命令,所述set命令为更新信息的命令。
步骤102、若获知所述中间件命令为get命令,则处理所述get命令,包括:查询缓存中是否存在所述get命令的执行结果;若是,则直接输出所述执行结果;若否,则执行所述get命令,并保存所述get命令的执行结果到缓存;
中间件命令执行装置若根据上述判断结果获知所述中间件命令为get命令,则处理所述get命令。首先,查询缓存中是否存在所述中间件命令的执行结果,如果所述中间件命令不是第一次执行,则缓存中会存储有所述中间件命令的执行结果,此时直接调用所述中间件在缓存中存储的所述执行结果,进行输出即可;若经查询,缓存中没有所述中间件命令的执行结果,则说明所述中间件命令是第一次执行,则此时需要执行所述中间件命令,从而获取所述中间件命令的执行结果,所述执行所述中间件命令包括将所述中间件命令的执行结果输出;执行完所述中间件命令后,还需将所述中间件命令的执行结果保存入缓存,以供下次需要获取所述中间件指令的执行结果时直接从缓存中调用所述执行结果进行输出。
步骤103、若获知所述中间件命令为set命令,则处理所述set命令,包括:执行所述set命令,并清除缓存中与所述set命令相关的get命令的执行结果,重新执行所述get命令,并保存所述get命令的执行结果到缓存。
中间件命令执行装置若根据上述判断结果获知所述中间件命令为set命令,则处理所述set命令。由于所述set命令为更新信息,则需执行所述set命令进行相关信息的更新。但是执行所述set命令时,可能会对与所述set命令相关的get命令的执行结果产生影响。也即,执行set命令后,如果再次执行与所述set命令相关的get命令,则所述与所述set命令相关的get命令的执行结果可能与之前缓存中存储的结果不同。比如,如果set命令是实现关闭某台虚拟机,则执行所述set命令后再执行获取所有虚拟机的信息的get命令时,由set命令关闭的虚拟机为关机状态;而之前缓存中存储的获取所有虚拟机的信息的get命令的执行结果中所述虚拟机为开机状态。因此,在执行完所述set命令后,需将与所述set命令相关的get命令在缓存中存储的执行结果清除,并重新执行所述get命令,并保存所述get命令的执行结果到缓存,以供下次需要获取相关get指令的执行结果时直接从缓存中调用所述执行结果进行输出。重新执行所述get命令可以不输出所述get命令的执行结果,在处理完所述set命令后可以输出更新成功与否的信息。其中,可通过配置文件查找与所述set命令相关的get命令。
本发明实施例通过将中间件命令的执行结果存入缓存,实现了再次访问的快速获取,避免了每次需要获取中间件命令的执行结果时中间件命令的重复执行,提高了中间件调试和运行的速度,降低了时间成本。
进一步地,基于上述实施例,所述执行所述get命令或重新执行所述get命令,具体为通过配置文件执行所述get命令或重新执行所述get命令,包括:
判断所述get命令的命令级别,所述命令级别包括原始命令、组合命令或拆分命令;其中,所述原始命令为可以直接执行获得执行结果的命令;所述组合命令和所述拆分命令不可以通过直接执行获得执行结果。所述组合命令可以通过成员命令的执行结果进行组合得到执行结果;当两条get命令之间,一条命令的执行结果的一个元素中完全涵盖另一条所获取的全部内容时,这两条get命令符合拆分关系,涵盖数据多的命令为父命令,另一个为子命令;所述拆分命令为子命令,可以通过上游命令(包括父命令、父命令的父命令等)的拆解获得执行结果;
若判断获知所述get命令是所述原始命令,则直接执行所述get命令;所述原始命令为可以直接执行获得执行结果的中间件命令,若判断获知所述get命令是所述原始命令,则直接执行所述get命令获得所述get命令的执行结果;
若判断获知所述get命令是所述组合命令,则获取组成所述组合命令的各个成员命令,所述成员命令为原始命令、拆分命令或组合命令;分别执行所述成员命令,最后将各个所述成员命令的执行结果根据所述组合命令的组合规则进行组合得到所述get命令的执行结果;
所述组合命令不可以通过直接执行获取执行结果,所述组合命令为通过所述成员命令的组合得到的命令。如命令A=命令B+命令C,即命令A的执行结果可以由命令B和命令C的执行结果求和得到,其中命令B和命令C为组合命令A的成员命令。如果所述get命令是所述组合命令,则获取所述组成所述组合命令的各个成员命令,比如获取命令B和命令C。所述成员命令可能为原始命令、拆分命令或组合命令;分别执行所述成员命令,如果所述成员命令为原始命令,则直接执行获得所述成员命令的执行结果;如果所述成员命令为拆分命令,则通过求得所述拆分命令的父命令的执行结果进而得到所述拆分命令的执行结果;如果所述成员命令为组合命令,则进一步求得此组合命令的各个成员命令,进而通过组合得到所述成员命令的执行结果;最后将各个所述成员命令的执行结果根据所述组合命令的组合规则进行组合得到所述get命令的执行结果;
若判断获知所述get命令是所述拆分命令,则执行所述拆分命令,进而得到所述get命令的执行结果;所述拆分命令为子命令,通过求得所述get命令的父命令的执行结果进而得到所述get命令的执行结果。
在上述实施例的基础上,本发明实施例本发明实施例通过快速实现中间件指令的嵌套组合和拆分,提高了编码效率,并且使得中间件功能的修改更为灵活。
进一步地,基于上述实施例,所述执行所述拆分命令具体包括:获取所述拆分命令的嵌套命令,所述嵌套命令包括所述拆分命令所属的原始命令以及递归到所述拆分命令的中间子命令;根据所述拆分命令所属的原始命令以及递归到所述拆分命令的中间子命令,通过递归执行及参数匹配获取所述拆分命令的执行结果。
若判断获知所述get命令是所述拆分命令、或若判断获知所述get命令是组合命令但其成员命令中包含所述拆分命令、或若判断获知所述get命令是组合命令但是其成员命令为成员命令包括拆分命令的组合命令等情况,则需要执行所述拆分命令。
所述拆分命令为子命令,不可以通过直接执行得到。所述拆分命令的执行结果可以由其父命令的执行结果间接获取。但是所述拆分命令的父命令也可能仍为子命令,不可直接执行,因此,需进一步获取所述拆分命令的父命令的父命令,直至找到可以直接执行的命令,即原始命令。原始命令可以直接执行,原始命令没有父命令。因此,执行所述拆分命令,需要获取所述拆分命令的嵌套命令,通过上述递归的方法依次获取所述拆分命令的中间子命令以及所述拆分命令所属的原始命令。通过递归执行及参数匹配获取所述拆分命令的执行结果,先执行所述原始命令,再根据原始命令的执行结果得到所述原始命令的子命令的执行结果,也即执行所述原始命令的子命令;然后再根据所述原始命令的子命令的执行结果得到所述原始命令的子命令的子命令的执行结果,也即执行所述原始命令的子命令的子命令,直至获取所述拆分命令的执行结果,在执行中间子命令及所述拆分命令时,需要进行参数匹配,以根据相应的父命令得到需要的执行结果。
在上述实施例的基础上,本发明实施例通过递归获得拆分命令所述的原始命令及中间子命令,进而从原始命令逐级顺次执行,获得拆分命令的执行结果,实现了中间件命令结果的快速间接获得。
进一步地,基于上述实施例,所述方法还包括:根据预设的命令格式规范生成xml配置文件,所述xml配置文件用来处理所述get命令或所述set命令。
所述get命令或所述set命令的处理可通过配置文件实现,具体地,可通过xml配置文件实现。首先,根据所需的业务接口需求和命令格式规范内定义的参数,编写符合需求的xml配置文档。然后,将xml文件放置在本发明实施例方案所在的文件目录下。所述xml配置文件包括中间件命令之间的关系信息,以及每个中间件命令的形式、参数信息,所述中间件命令之间的关系信息包括组合、拆分关系,以及与set命令相关的get命令的信息。在具体执行相应的中间件命令时,可通过配置文件的设置触发中间件相应命令的执行,实现中间件get命令或所述set命令的处理。
下面详细描述本发明实施例生成的所述xml配置文件的命令格式规范以及所述xml配置文件的格式。
1、xml配置文件的命令格式规范
1)命令类型
所有命令分为get类型,set类型。
get类型:get类型是单纯的查询信息,并不会对信息本身造成影响。
set类型:set类型是进行了更新某种操作,有可能会对一些信息的数据产生影响。所以在set执行完之后,需要将相关联的get命令清除,并重新再执行一遍。
2)参数类型
总体原则:方案内所有命令输出均为json格式,输入格式分为主命令串和参数列表两部分。
输入的参数类型有no类型,pair类型,seq类型。
i.no类型:命令除了固定的主命令串外,无需任何附加的变化参数。
ii.pair类型:参数列表均以参数描述和参数值成对出现的方式输入。
iii.seq类型:参数列表在主命令串后,依次按顺序传入。
输出的参数类型有array类型,dic类型,fixdic类型。
i.array类型:输出的结果为一个json数组,数组中的元素内容可以是单纯字符串、字典或者另一个数组。
ii.dic类型:输出的结果为一个json字典,数组中的元素内容可以是单纯字符串、字典或者另一个数组。
iii.fixdic类型:输出的结果为一个json字典,与dic类型不同的是,字典内第一层的各个key是固定的,而且与业务逻辑无关。目前支持的五种固定keypair字段类型分别为,value,valuenum,status,message,id,他们中的主键均可以配置为固定值。
其中,value字段:该字段中为真正的业务数据的值,其值为array类型或dic类型,这个字段主要但不限于在get命令中会被使用。
valuenum字段:该字段中为真正的业务数据的条数,也就是value字段中dic,或array中元素的个数,这个字段主要但不限于在get命令中会被使用。
status字段:该字段为bool行,表示set类型的命令是否正确。
message字段:该字段与status配合使用,表示错误的描述,或者操作的相关信息,值为字符串。
id字段:在set命令中,有些命令是异步执行的,需要在命令发送时生成id,之后用户依据id来查询命令执行状态。
2、xml配置文件的格式
xml配置文件格式详细描述如下:
第一行为文件头,为XML声明。之后为文件体,包含文件的主要内容:
cmd标签内,需要有三个定义,分别是:命令类型,关键字为type;命令名称,关键字是name;表示原始命令、组合命令或拆分命令,关键字是run,指明指令是原始命令的参数是direct,组合命令或拆分命令的参数是indirect;还可以是当信息随着时间变化而变化时,可以设置update属性,设置为async参数。
maincmd标签表明的是主命令串的值,关键字是value。
param标签定义了输入参数列表,关键字是type,之后的参数类型可以是no类型、pair类型或seq类型。
item param标签是参数列表的详细参数描述。当输入参数的类型是pair类型时,在解析命令的过程,会将参数描述写入到配置当中,作为区别命令的标志。
content标签描述出类型和信息状态,关键字有subtype,type,value,status。
output标签标明的是输出,主要有输出类型,命令来源和输出方式type,from_cmd,output_method。
compare标签通过与输入参数的比对,定义新的输出。
item标签定义输出参数的具体描述。
举一个实际的例子进行说明本发明实施例的方案。本发明实施例应用于一个超融合系统之中,该超融合系统主要提供了虚拟机管理和分布式存储的信息。以下将以一条描述虚拟机管理模块内查找某个虚拟机信息的get类型命令为例详细描述本发明实施例的方案。
1.编写xml配置文档。
本发明实施例目的是获取指定主机名称的vm的name和host信息。首先要获取all_vm_summary指令中的所有信息(所有虚拟机的信息)。指定信息类型是get,命名为"all_vm_summary",从命令vsphere vm--all_summary内获取结果。
然后在all_vm_summary内所有信息中获取出所有vm主机的name和host信息(获取所有虚拟机的名称和主机信息)。信息类型是get,命名为"all_vm_host",定义"indirect"指明此指令为拆分或组合命令。输出部分指明类型是inh继承,所以通过对指令all_vm_summary进行拆分,输出的是name和host的数组结构。
最后再获取指定名称的vm,达到目的(获取目标虚拟机的名称和主机信息)。信息类型是get,命名为"vm_host",定义"indirect"指明此指令为拆分或组合命令。此时需要有参数输入,为--vm_host。在输出时,定义结果是从all_vm_host指令中比对关键字段name后,继承输出name和host的字典结构。
2.将xml配置文件放置在超融合项目所在的本发明实施例方案生成的文件目录下。
3.当运行vsphere vm--vm_host(name参数)指令时,首先将查看缓存,因为是第一次使用,所以缓存内没有信息可以直接获取,所以需要进行后续的查询。
4.中间件命令执行装置按照xml配置文件的定义解析出此命令是子命令,其父命令为all_vm_host;然后调用vsphere vm--all_vm_host指令,此时这条指令也是需要拆解的命令,其父命令是all_vm_summary;然后调用指令vspherevm--all_summary,解析出无缓存但可直接执行。
5.执行指令vsphere vm--all_summary,生成结果保存到数组;之后执行vspherevm--all_vm_host指令,拆解出name和host字段的数组结构;最后执行vsphere vm--vm_host(name参数)指令,拆解出指定主机名称的vm的name和host字典结果。
6.执行完毕,将执行结果保存到文档,生成缓存。
7.当再次调用vsphere vm--vm_host(name参数)指令时,首先查询缓存,缓存内存在所述指令的执行结果,直接输出。
本发明实施例的方案适用于状态机随状态变化而变化的情形。
在上述实施例的基础上,本发明实施例通过编写生成规范定义的配置文件,并添加到指定的目录内,有利于快速实现中间件命令的嵌套组合和拆分,大大提高了编码效率,缩减了人力物力,使得调试时间变短,更好的适应项目时间紧急且中间件需求量大的工程。
图2为本发明实施例提供的一种中间件命令执行装置结构示意图。如图2所示,所述装置包括命令判断模块10、get命令处理模块20和set命令处理模块30,其中:
命令判断模块10具体用于:调用中间件命令,并判断所述中间件命令的类型;
某个中间件命令执行时,会触发中间件命令执行装置的命令判断模块10调用所述中间件命令,进而实现所述中间件命令的执行。命令判断模块10调用所述中间件命令后,首先判断所述中间件命令的类型,所述中间件命令的类型包括get命令和set命令,所述get命令为获取信息的命令,所述set命令为更新信息的命令。
get命令处理模块20具体用于:若获知所述中间件命令为get命令,则处理所述get命令,包括:查询缓存中是否存在所述get命令的执行结果;若是,则直接输出所述执行结果;若否,则执行所述get命令,并保存所述get命令的执行结果到缓存;
get命令处理模块20若根据上述判断结果获知所述中间件命令为get命令,则处理所述get命令。首先,查询缓存中是否存在所述中间件命令的执行结果,如果有,则直接调用所述中间件在缓存中存储的所述执行结果,进行输出即可;若经查询,缓存中没有所述中间件命令的执行结果,则说明所述中间件命令是第一次执行,则此时需要执行所述中间件命令,从而获取所述中间件命令的执行结果;执行完所述中间件命令后,还需将所述中间件命令的执行结果保存入缓存,以供下次需要获取所述中间件指令的执行结果时直接从缓存中调用所述执行结果进行输出。
set命令处理模块30具体用于:若获知所述中间件命令为set命令,则处理所述set命令,包括:执行所述set命令,并清除缓存中与所述set命令相关的get命令的执行结果,重新执行所述get命令,并保存所述get命令的执行结果到缓存。
set命令处理模块30若根据上述判断结果获知所述中间件命令为set命令,则处理所述set命令。由于所述set命令为更新信息,则需执行所述set命令进行相关信息的更新。但是执行所述set命令时,可能会对与所述set命令相关的get命令的执行结果产生影响。也即,执行set命令后,如果再次执行与所述set命令相关的get命令,则所述与所述set命令相关的get命令的执行结果可能与之前缓存中存储的结果不同。因此,在执行完所述set命令后,需将与所述set命令相关的get命令在缓存中存储的执行结果清除,并重新执行所述get命令,并保存所述get命令的执行结果到缓存,以供下次需要获取相关get指令的执行结果时直接从缓存中调用所述执行结果进行输出。可通过配置文件查找与所述set命令相关的get命令。
本发明实施例通过将中间件命令的执行结果存入缓存,实现了再次访问的快速获取,避免了每次需要获取中间件命令的执行结果时中间件命令的重复执行,提高了中间件调试和运行的速度,降低了时间成本。
进一步地,基于上述实施例,所述get命令处理模块在用于执行所述get命令时,或所述set命令处理模块在用于重新执行所述get命令时,具体用于:
判断所述get命令的命令级别,所述命令级别包括原始命令、组合命令或拆分命令;其中,所述原始命令为可以直接执行获得执行结果的命令;
get命令处理模块20或set命令处理模块30判断所述get命令的命令级别,所述命令级别包括原始命令、组合命令或拆分命令;其中,所述原始命令为可以直接执行获得执行结果的命令;所述组合命令和所述拆分命令不可以通过直接执行获得执行结果。所述组合命令可以通过成员命令的执行结果进行组合得到执行结果;当两条get命令之间,一条命令的执行结果的一个元素中完全涵盖另一条所获取的全部内容时,这两条get命令符合拆分关系,涵盖数据多的命令为父命令,另一个为子命令;所述拆分命令为子命令,可以通过上游命令的拆解获得执行结果;
get命令处理模块20或set命令处理模块30若判断获知所述get命令是所述原始命令,则直接执行所述get命令;所述原始命令为可以直接执行获得执行结果的中间件命令,若判断获知所述get命令是所述原始命令,则直接执行所述get命令获得所述get命令的执行结果;
get命令处理模块20或set命令处理模块30若判断获知所述get命令是所述组合命令,则获取组成所述组合命令的各个成员命令,所述成员命令为原始命令、拆分命令或组合命令;分别执行所述成员命令,最后将各个所述成员命令的执行结果根据所述组合命令的组合规则进行组合得到所述get命令的执行结果;
get命令处理模块20或set命令处理模块30若判断获知所述get命令是所述拆分命令,则执行所述拆分命令,进而得到所述get命令的执行结果;所述拆分命令为子命令,通过求得所述get命令的父命令的执行结果进而得到所述get命令的执行结果。
在上述实施例的基础上,本发明实施例本发明实施例通过快速实现中间件指令的嵌套组合和拆分,提高了编码效率,并且使得中间件功能的修改更为灵活。
进一步地,基于上述实施例,所述get命令处理模块或所述set命令处理模块在用于执行所述拆分命令时,具体用于:获取所述拆分命令的嵌套命令,所述嵌套命令包括所述拆分命令所属的原始命令以及递归到所述拆分命令的中间子命令;根据所述拆分命令所属的原始命令以及递归到所述拆分命令的中间子命令,通过递归执行及参数匹配获取所述拆分命令的执行结果。
因此,所述get命令处理模块或所述set命令处理模块执行所述拆分命令,需要获取所述拆分命令的嵌套命令,通过递归的方法依次获取所述拆分命令的中间子命令以及所述拆分命令所属的原始命令。通过递归执行及参数匹配获取所述拆分命令的执行结果,先执行所述原始命令,再根据原始命令的执行结果得到所述原始命令的子命令的执行结果,也即执行所述原始命令的子命令;然后再根据所述原始命令的子命令的执行结果得到所述原始命令的子命令的子命令的执行结果,也即执行所述原始命令的子命令的子命令,直至获取所述拆分命令的执行结果,在执行中间子命令及所述拆分命令时,需要进行参数匹配,以根据相应的父命令得到需要的执行结果。
在上述实施例的基础上,本发明实施例通过递归获得拆分命令所述的原始命令及中间子命令,进而从原始命令逐级顺次执行,获得拆分命令的执行结果,实现了中间件命令快速的间接获得。
进一步地,基于上述实施例,所述装置还用于:根据预设的命令格式规范生成xml配置文件,所述xml配置文件用来处理所述get命令或所述set命令。
所述get命令或所述set命令的处理可通过配置文件实现,具体地,可通过xml配置文件实现。首先,根据所需的业务接口需求和命令格式规范内定义的参数,编写符合需求的xml配置文档。然后,将xml文件放置在本发明实施例方案所在的文件目录下。所述xml配置文件包括中间件命令之间的关系信息,以及每个中间件命令的形式、参数信息,所述中间件命令之间的关系信息包括组合、拆分关系,以及与set命令相关的get命令的信息。在具体执行相应的中间件命令时,可通过配置文件的设置触发中间件相应命令的执行,实现中间件get命令或所述set命令的处理。
在上述实施例的基础上,本发明实施例通过编写生成规范定义的配置文件,并添加到指定的目录内,有利于快速实现中间件命令的嵌套组合和拆分,大大提高了编码效率,缩减了人力物力,使得调试时间变短,更好的适应项目时间紧急且中间件需求量大的工程。
本发明实施例提供的装置是用于上述方法的,具体功能可参照上述方法流程,此处不再赘述。
图3为本发明实施例提供的计算机设备的结构示意图。如图3所示,计算机设备1包括处理器301、存储器302和总线303。其中,所述处理器301和所述存储器302通过所述总线303完成相互间的通信;所述处理器301用于调用所述存储器302中的程序指令,以执行上述各方法实施例所提供的方法,例如包括:调用中间件命令,并判断所述中间件命令的类型;若获知所述中间件命令为get命令,则处理所述get命令,包括:查询缓存中是否存在所述get命令的执行结果;若是,则直接输出所述执行结果;若否,则执行所述get命令,并保存所述get命令的执行结果到缓存;若获知所述中间件命令为set命令,则处理所述set命令,包括:执行所述set命令,并清除缓存中与所述set命令相关的get命令的执行结果,重新执行所述get命令,并保存所述get命令的执行结果到缓存。
本发明实施例公开一种计算机程序产品,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,计算机能够执行上述各方法实施例所提供的方法,例如包括:调用中间件命令,并判断所述中间件命令的类型;若获知所述中间件命令为get命令,则处理所述get命令,包括:查询缓存中是否存在所述get命令的执行结果;若是,则直接输出所述执行结果;若否,则执行所述get命令,并保存所述get命令的执行结果到缓存;若获知所述中间件命令为set命令,则处理所述set命令,包括:执行所述set命令,并清除缓存中与所述set命令相关的get命令的执行结果,重新执行所述get命令,并保存所述get命令的执行结果到缓存。
本发明实施例提供一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行上述各方法实施例所提供的方法,例如包括:调用中间件命令,并判断所述中间件命令的类型;若获知所述中间件命令为get命令,则处理所述get命令,包括:查询缓存中是否存在所述get命令的执行结果;若是,则直接输出所述执行结果;若否,则执行所述get命令,并保存所述get命令的执行结果到缓存;若获知所述中间件命令为set命令,则处理所述set命令,包括:执行所述set命令,并清除缓存中与所述set命令相关的get命令的执行结果,重新执行所述get命令,并保存所述get命令的执行结果到缓存。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
以上所描述的计算机设备等实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (6)
1.一种中间件命令执行方法,其特征在于,包括:
调用中间件命令,并判断所述中间件命令的类型;
若获知所述中间件命令为get命令,则处理所述get命令,包括:查询缓存中是否存在所述get命令的执行结果;若是,则直接输出所述执行结果;若否,则执行所述get命令,并保存所述get命令的执行结果到缓存;
若获知所述中间件命令为set命令,则处理所述set命令,包括:执行所述set命令,并清除缓存中与所述set命令相关的get命令的执行结果,重新执行所述get命令,并保存所述get命令的执行结果到缓存;
所述执行所述get命令或重新执行所述get命令,具体包括:
判断所述get命令的命令级别,所述命令级别包括原始命令、组合命令或拆分命令;其中,所述原始命令为可以直接执行获得执行结果的命令;
若判断获知所述get命令是所述原始命令,则直接执行所述get命令;
若判断获知所述get命令是所述组合命令,则获取组成所述组合命令的各个成员命令,所述成员命令为原始命令、拆分命令或组合命令;分别执行所述成员命令,最后将各个所述成员命令的执行结果根据所述组合命令的组合规则进行组合得到所述get命令的执行结果;
若判断获知所述get命令是所述拆分命令,则执行所述拆分命令,进而得到所述get命令的执行结果;所述执行所述拆分命令具体包括:
获取所述拆分命令的嵌套命令,所述嵌套命令包括所述拆分命令所属的原始命令以及递归到所述拆分命令的中间子命令;根据所述拆分命令所属的原始命令以及递归到所述拆分命令的中间子命令,通过递归执行及参数匹配获取所述拆分命令的执行结果;其中,所述原始命令的执行结果完全涵盖所述拆分命令的执行结果。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
根据预设的命令格式规范生成xml配置文件,所述xml配置文件用来处理所述get命令或所述set命令。
3.一种中间件命令执行装置,其特征在于,包括:
命令判断模块,具体用于:调用中间件命令,并判断所述中间件命令的类型;
get命令处理模块,具体用于:若获知所述中间件命令为get命令,则处理所述get命令,包括:查询缓存中是否存在所述get命令的执行结果;若是,则直接输出所述执行结果;若否,则执行所述get命令,并保存所述get命令的执行结果到缓存;
set命令处理模块,具体用于:若获知所述中间件命令为set命令,则处理所述set命令,包括:执行所述set命令,并清除缓存中与所述set命令相关的get命令的执行结果,重新执行所述get命令,并保存所述get命令的执行结果到缓存;所述get命令处理模块在用于执行所述get命令时,或所述set命令处理模块在用于重新执行所述get命令时,具体用于:
判断所述get命令的命令级别,所述命令级别包括原始命令、组合命令或拆分命令;其中,所述原始命令为可以直接执行获得执行结果的命令;
若判断获知所述get命令是所述原始命令,则直接执行所述get命令;
若判断获知所述get命令是所述组合命令,则获取组成所述组合命令的各个成员命令,所述成员命令为原始命令、拆分命令或组合命令;分别执行所述成员命令,最后将各个所述成员命令的执行结果根据所述组合命令的组合规则进行组合得到所述get命令的执行结果;
若判断获知所述get命令是所述拆分命令,则执行所述拆分命令,进而得到所述get命令的执行结果;所述get命令处理模块或所述set命令处理模块在用于执行所述拆分命令时,具体用于:
获取所述拆分命令的嵌套命令,所述嵌套命令包括所述拆分命令所属的原始命令以及递归到所述拆分命令的中间子命令;根据所述拆分命令所属的原始命令以及递归到所述拆分命令的中间子命令,通过递归执行及参数匹配获取所述拆分命令的执行结果;其中,所述原始命令的执行结果完全涵盖所述拆分命令的执行结果。
4.根据权利要求3所述的装置,其特征在于,所述装置还用于:
根据预设的命令格式规范生成xml配置文件,所述xml配置文件用来处理所述get命令或所述set命令。
5.一种计算机设备,其特征在于,包括存储器和处理器,所述处理器和所述存储器通过总线完成相互间的通信;所述存储器存储有可被所述处理器执行的程序指令,所述处理器调用所述程序指令能够执行如权利要求1至2任一所述的方法。
6.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时实现如权利要求1至2任一所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711437857.XA CN108459914B (zh) | 2017-12-26 | 2017-12-26 | 一种中间件命令执行方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711437857.XA CN108459914B (zh) | 2017-12-26 | 2017-12-26 | 一种中间件命令执行方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108459914A CN108459914A (zh) | 2018-08-28 |
CN108459914B true CN108459914B (zh) | 2021-01-01 |
Family
ID=63220102
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711437857.XA Active CN108459914B (zh) | 2017-12-26 | 2017-12-26 | 一种中间件命令执行方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108459914B (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20070111225A (ko) * | 2006-05-17 | 2007-11-21 | 엘지전자 주식회사 | 디지털 방송 신호와 상기 신호를 처리하는 장치 및 방법 |
CN102307234A (zh) * | 2011-08-24 | 2012-01-04 | 北京邮电大学 | 基于移动终端的资源检索方法 |
CN102970358A (zh) * | 2012-11-08 | 2013-03-13 | 百度在线网络技术(北京)有限公司 | 网盘中移动客户端的本地缓存的控制方法和装置 |
CN105871959A (zh) * | 2015-01-22 | 2016-08-17 | 阿里巴巴集团控股有限公司 | 一种消息传递的方法、系统和装置 |
CN105989070A (zh) * | 2015-02-10 | 2016-10-05 | 阿里巴巴集团控股有限公司 | 从中间件请求数据的方法、系统及中间件客户端 |
CN106777085A (zh) * | 2016-12-13 | 2017-05-31 | 东软集团股份有限公司 | 一种数据处理方法、装置及数据查询系统 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9110807B2 (en) * | 2012-05-23 | 2015-08-18 | Sybase, Inc. | Cache conflict detection |
-
2017
- 2017-12-26 CN CN201711437857.XA patent/CN108459914B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20070111225A (ko) * | 2006-05-17 | 2007-11-21 | 엘지전자 주식회사 | 디지털 방송 신호와 상기 신호를 처리하는 장치 및 방법 |
CN102307234A (zh) * | 2011-08-24 | 2012-01-04 | 北京邮电大学 | 基于移动终端的资源检索方法 |
CN102970358A (zh) * | 2012-11-08 | 2013-03-13 | 百度在线网络技术(北京)有限公司 | 网盘中移动客户端的本地缓存的控制方法和装置 |
CN105871959A (zh) * | 2015-01-22 | 2016-08-17 | 阿里巴巴集团控股有限公司 | 一种消息传递的方法、系统和装置 |
CN105989070A (zh) * | 2015-02-10 | 2016-10-05 | 阿里巴巴集团控股有限公司 | 从中间件请求数据的方法、系统及中间件客户端 |
CN106777085A (zh) * | 2016-12-13 | 2017-05-31 | 东软集团股份有限公司 | 一种数据处理方法、装置及数据查询系统 |
Also Published As
Publication number | Publication date |
---|---|
CN108459914A (zh) | 2018-08-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10970067B1 (en) | Designing microservices for applications | |
CN113342345A (zh) | 深度学习框架的算子融合方法、装置 | |
JP2021170335A (ja) | アプリケーション構築方法、装置、電子設備、記憶媒体、及びプログラム | |
CN111324619B (zh) | 微服务系统中的对象更新方法、装置、设备和存储介质 | |
CN110162344B (zh) | 一种隔离限流的方法、装置、计算机设备及可读存储介质 | |
CN109522341A (zh) | 实现基于sql的流式数据处理引擎的方法、装置、设备 | |
CN110737425B (zh) | 一种计费平台系统的应用程序的建立方法及装置 | |
CN111198892A (zh) | 信息处理方法、装置、电子设备及存储介质 | |
CN115016784B (zh) | 低代码应用复用方法、应用解析系统、设备及存储介质 | |
CN114691658A (zh) | 一种数据回溯方法、装置、电子设备及存储介质 | |
US20210157630A1 (en) | Executing a Pipeline Command Sequence Designed For Execution on a Single Node across a Fleet of Nodes | |
CN111404755A (zh) | 一种网络配置方法、装置及存储介质 | |
CN116932147A (zh) | 流式作业处理方法、装置、电子设备及介质 | |
CN110018831B (zh) | 程序处理方法、装置及计算机可读存储介质 | |
CN108459914B (zh) | 一种中间件命令执行方法及装置 | |
CN116775613A (zh) | 一种数据迁移方法、装置、电子设备及计算机可读介质 | |
CN114756211B (zh) | 模型训练方法、装置、电子设备和存储介质 | |
CN107451050B (zh) | 函数获取方法和装置、服务器 | |
US20220391388A1 (en) | Automatic replacement of command parameters during command history searching | |
CN114996246A (zh) | 一种基于NiFi组件的表多个字段校验的数据清洗方法 | |
US20220050669A1 (en) | Representing asynchronous state machine in intermediate code | |
CN108874625B (zh) | 信息处理方法及装置、电子设备、存储介质 | |
CN112988778A (zh) | 一种处理数据库查询脚本的方法和装置 | |
CN112241505A (zh) | 页面更新方法、页面更新装置、介质及电子设备 | |
CN117093638B (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 | ||
TR01 | Transfer of patent right |
Effective date of registration: 20220321 Address after: No. 407, floor 4, No. 9, No. 9, shangdijiu street, Haidian District, Beijing 100085 Patentee after: Shenzhou Yunke (Beijing) Technology Co.,Ltd. Address before: 518131 F3, 11th floor, No. 8 Kefa Road, Yuehai Street, Nanshan District, Shenzhen City, Guangdong Province Patentee before: Shenzhen science and Technology Co.,Ltd. digital cloud data |
|
TR01 | Transfer of patent right |