CN107193543B - 一种批量操作执行方法及装置 - Google Patents

一种批量操作执行方法及装置 Download PDF

Info

Publication number
CN107193543B
CN107193543B CN201710210787.8A CN201710210787A CN107193543B CN 107193543 B CN107193543 B CN 107193543B CN 201710210787 A CN201710210787 A CN 201710210787A CN 107193543 B CN107193543 B CN 107193543B
Authority
CN
China
Prior art keywords
execution
command
target
information
parameter
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
Application number
CN201710210787.8A
Other languages
English (en)
Other versions
CN107193543A (zh
Inventor
郑浩南
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing QIYI Century Science and Technology Co Ltd
Original Assignee
Beijing QIYI Century Science and Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing QIYI Century Science and Technology Co Ltd filed Critical Beijing QIYI Century Science and Technology Co Ltd
Priority to CN201710210787.8A priority Critical patent/CN107193543B/zh
Publication of CN107193543A publication Critical patent/CN107193543A/zh
Application granted granted Critical
Publication of CN107193543B publication Critical patent/CN107193543B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/31Programming languages or programming paradigms
    • G06F8/313Logic programming, e.g. PROLOG programming language

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

本发明实施例提供了一种批量操作执行方法及装置。该方法包括:接收批量操作执行命令;解析该批量操作执行命令,包括:根据该批量操作执行命令中的执行机集合标识,确定目标执行机;根据该批量操作执行命令中的每种参数元素类型信息和每种参数元素的参数集合标识,获得待操作的所有目标参数元素;根据该批量操作执行命令中的关于执行机集合、各种参数元素集合间的运算关系,确定目标执行机与各个目标参数元素之间的关系;每个目标执行机与目标参数元素之间的关系,对应一个批量执行的命令实例;其中,命令实例包含目标操作信息;并发执行各个命令实例。通过本发明实施例提供的批量操作执行方法,能够提高运维效率。

Description

一种批量操作执行方法及装置
技术领域
本发明涉及互联网技术领域,特别是涉及一种批量操作执行方法及装置。
背景技术
在各类IT(Information Technology,信息技术)相关工作中,命令行批量执行的场景非常普遍,尤其是在运维相关的工作中,运维人员往往需要对成百上千的机器结点、数据表、用户或其他资源对象进行操作。
为了能够快速的完成工作,人们通常会借助一些运维工具,如ansible、puppet、fabric等,这些工具能够针对定义的host(主机)列表执行批量操作,其中,host列表定义了一系列机器结点,作为执行机,举例而言,假设要在host列表hostgroupA中定义的每一机器节点上并发执行访问数据表tableA的操作,便可以利用ansible,通过命令行:ansiblehostgroupA-m shell-a“scan tableA”来实现,其中,hostgroupA可以看作是该命令行的一个host列表类型的参数集合。
但现有的这些运维工具一般无法对除host列表之外的其他类型参数集合执行批量操作,如上述示例中,若要在hostgroupA中定义的每一机器节点上并发执行访问数据表集合Table1中的每一数据表的操作,便需要对该批量操作执行的逻辑进行封装,其中包括定义参数集合、写若干循环来完成批量执行过程,同时还要在代码中实现对并发执行、执行顺序的控制;且在后期维护过程中,当需要执行相似逻辑的批量操作时,由于没有通用的封装,便会进行大量重复的开发,此外,在对额外的信息与执行逻辑进行处理及实现过程中,通常易出现bug(漏洞),需要反复调试,导致运维效率低。
发明内容
本发明实施例的目的在于提供一种批量操作执行方法及装置,以提高运维效率。具体技术方案如下:
第一方面,本发明实施例提供了一种批量操作执行方法,所述方法包括:
接收批量操作执行命令;其中,所述批量操作执行命令至少包括:目标操作信息、每种参数元素类型信息、执行机集合标识、每种参数元素的参数集合标识,及关于执行机集合、各种参数元素集合间的运算关系;
解析所述批量操作执行命令,包括:
根据所述批量操作执行命令中的执行机集合标识,确定目标执行机;
根据所述批量操作执行命令中的每种参数元素类型信息和每种参数元素的参数集合标识,获得待操作的所有目标参数元素;
根据所述批量操作执行命令中的关于执行机集合、各种参数元素集合间的运算关系,确定所述目标执行机与各个目标参数元素之间的关系;每个所述目标执行机与目标参数元素之间的关系,对应一个批量执行的命令实例;其中,所述命令实例包含所述目标操作信息;
并发执行各个命令实例。
可选地,所述方法还包括:预先针对每个批量操作执行命令,生成配置文件;所述配置文件中,包括:所述每种参数元素类型信息、执行机集合标识、每种参数元素的参数集合标识、每种参数元素类型对应的参数元素或参数元素路径信息;
所述根据所述批量操作执行命令中的执行机集合标识,确定目标执行机的步骤,包括:
根据所述配置文件中、所述批量操作执行命令中的执行机集合标识对应的执行机集合中的各个执行机,确定目标执行机;
所述根据所述批量操作执行命令中的每种参数元素类型信息和每种参数元素的参数集合标识,获得待操作的所有目标参数元素,包括:
针对所述批量操作执行命令中的每种参数元素,根据该种参数元素的类型信息和参数集合标识,从所述配置文件中,获得该种参数元素对应的待操作目标参数元素;或根据该种参数元素的类型信息和参数集合标识,确定该种参数元素对应的目标路径,并基于所述目标路径,调用配置管理数据库CMDB,获得该种参数元素对应的待操作目标参数元素。
可选地,所述批量操作执行命令满足jinjia模板引擎的语法规则。
可选地,所述批量操作执行命令为:
pexec“第一操作信息$User$Table”{{第一执行机集合标识}}={{第一User集合标识}}×{{Table集合标识}}
其中,所述第一操作信息为所述目标操作信息,“=”为自然连接运算符,“×”为笛卡尔积运算符。
可选地,所述批量操作执行命令还包括:并发执行分组信息;
所述并发执行各个命令实例的步骤,包括:
根据所述并发执行分组信息,对各个命令实例进行分组,得到至少一个命令实例组;并发执行各个命令实例组。
可选地,所述批量操作执行命令为:
pexec“第二操作信息$Region$RegionServer”{{第二执行机集合标识}}×{{Region集合标识}}f=(L.0%R.size,R.0){{Regionserver集合标识}}
其中,所述第二操作信息为所述目标操作信息;“×”为笛卡尔积运算符;f为并发执行符号,f和f的位置为所述并发执行分组信息,表示以“×”运算后的关系分组来并发执行;“=(L.0%R.size,R.0)”为等值连接运算符,“%”为求余运算符,R.size为右侧集合中的元素个数。
可选地,所述批量操作执行命令还包括:并发度信息;
所述并发执行各个命令实例的步骤,包括:
根据所述并发执行分组信息,对各个命令实例进行分组,得到至少一个命令实例组;并发执行各个命令实例组,并针对每一命令实例组,基于所述并发度信息并发执行该命令实例组包含的命令实例。
可选地,所述批量操作执行命令为:
pexec“第三操作信息Error_$Pid/预设文件夹名/$User”{{第三执行机集合标识|union(第四执行机集合标识)}}×{{Pid集合标识}}f*{{第三User集合标识|func(L.n)}}–f预设并发度
其中,所述第三操作信息为所述目标操作信息,“union”为去重合并运算符;“×”为笛卡尔积运算符;f为并发执行符号,f和f的位置为所述并发执行分组信息,表示以“×”运算后的关系分组来并发执行;“*”为带入扩展运算符,表示将“*”左侧关系中元素的第n列值分别带入右侧user集合的过滤函数func(L.n)后,将每一左侧关系的元素与对应的带入后的右侧集合元素作笛卡尔积运算,再将笛卡尔积运算后的每一个集合作并集运算;n为大于0的自然数;“-f预设并发度”为所述并发度执行信息。
第二方面,本发明实施例提供了一种批量操作执行装置,所述装置包括:
接收模块,用于接收批量操作执行命令;其中,所述批量操作执行命令至少包括:目标操作信息、每种参数元素类型信息、执行机集合标识、每种参数元素的参数集合标识,及关于执行机集合、各种参数元素集合间的运算关系;
解析模块,用于解析所述批量操作执行命令,包括;
第一确定子模块,用于根据所述批量操作执行命令中的执行机集合标识,确定目标执行机;
获得子模块,用于根据所述批量操作执行命令中的每种参数元素类型信息和每种参数元素的参数集合标识,获得待操作的所有目标参数元素;
第二确定子模块,用于根据所述批量操作执行命令中的关于执行机集合、各种参数元素集合间的运算关系,确定所述目标执行机与各个目标参数元素之间的关系;每个所述目标执行机与目标参数元素之间的关系,对应一个批量执行的命令实例;其中,所述命令实例包含所述目标操作信息;
执行模块,用于并发执行各个命令实例。
可选地,所述装置还包括:
生成模块,用于预先针对每个批量操作执行命令,生成配置文件;所述配置文件中,包括:所述每种参数元素类型信息、执行机集合标识、每种参数元素的参数集合标识、每种参数元素类型对应的参数元素或参数元素路径信息;
所述第一确定子模块,具体用于:
根据所述配置文件中、所述批量操作执行命令中的执行机集合标识对应的执行机集合中的各个执行机,确定目标执行机;
所述获得子模块,具体用于:
针对所述批量操作执行命令中的每种参数元素,根据该种参数元素的类型信息和参数集合标识,从所述配置文件中,获得该种参数元素对应的待操作目标参数元素;或根据该种参数元素的类型信息和参数集合标识,确定该种参数元素对应的目标路径,并基于所述目标路径,调用配置管理数据库CMDB,获得该种参数元素对应的待操作目标参数元素。
可选地,所述批量操作执行命令满足jinjia模板引擎的语法规则。
可选地,所述批量操作执行命令为:
pexec“第一操作信息$User$Table”{{第一执行机集合标识}}={{第一User集合标识}}×{{Table集合标识}}
其中,所述第一操作信息为所述目标操作信息,“=”为自然连接运算符,“×”为笛卡尔积运算符。
可选地,所述批量操作执行命令还包括:并发执行分组信息;
所述执行模块,具体用于:
根据所述并发执行分组信息,对各个命令实例进行分组,得到至少一个命令实例组;并发执行各个命令实例组。
可选地,所述批量操作执行命令为:
pexec“第二操作信息$Region$RegionServer”{{第二执行机集合标识}}×{{Region集合标识}}f=(L.0%R.size,R.0){{Regionserver集合标识}}
其中,所述第二操作信息为所述目标操作信息;“×”为笛卡尔积运算符;f为并发执行符号,f和f的位置为所述并发执行分组信息,表示以“×”运算后的关系分组来并发执行;“=(L.0%R.size,R.0)”为等值连接运算符,“%”为求余运算符,R.size为右侧集合中的元素个数。
可选地,所述批量操作执行命令还包括:并发度信息;
所述执行模块,具体用于:
根据所述并发执行分组信息,对各个命令实例进行分组,得到至少一个命令实例组;并发执行各个命令实例组,并针对每一命令实例组,基于所述并发度信息并发执行该命令实例组包含的命令实例。
可选地,所述批量操作执行命令为:
pexec“第三操作信息Error_$Pid/预设文件夹名/$User”{{第三执行机集合标识|union(第四执行机集合标识)}}×{{Pid集合标识}}f*{{第三User集合标识|func(L.n)}}–f预设并发度
其中,所述第三操作信息为所述目标操作信息,“union”为去重合并运算符;“×”为笛卡尔积运算符;f为并发执行符号,f和f的位置为所述并发执行分组信息,表示以“×”运算后的关系分组来并发执行;“*”为带入扩展运算符,表示将“*”左侧关系中元素的第n列值分别带入右侧user集合的过滤函数func(L.n)后,将每一左侧关系的元素与对应的带入后的右侧集合元素作笛卡尔积运算,再将笛卡尔积运算后的每一个集合作并集运算;n为大于0的自然数;“-f预设并发度”为所述并发度执行信息。
本发明实施例提供的一种批量操作执行方法及装置方法中,可以接收批量操作执行命令;然后根据该批量操作执行命令中的执行机集合标识,确定目标执行机;根据该批量操作执行命令中的每种参数元素类型信息和每种参数元素的参数集合标识,获得待操作的所有目标参数元素;再根据该批量操作执行命令中的关于执行机集合、各种参数元素集合间的运算关系,确定目标执行机与各个目标参数元素之间的关系;每个目标执行机与目标参数元素之间的关系,对应一个批量执行的命令实例;并发执行各个命令实例。其中,该批量操作执行命令至少包括:目标操作信息、每种参数元素类型信息、执行机集合标识、每种参数元素的参数集合标识,及关于执行机集合、各种参数元素集合间的运算关系;命令实例包含目标操作信息;
可以看出,应用本发明实施例提供的批量操作执行方法,除host列表类型参数集合,即执行机集合外,还可以针对其他类型的参数元素,根据执行机集合、各种参数元素集合间的运算关系,将接收的批量操作执行命令进行解析,然后根据解析得到的命令实例,执行相关的批处理操作,而不需要提前进行逻辑封装,而且,本方案具有通用性,既避免了重复开发,又防止了在额外的信息与执行逻辑的实现过程中bug的产生,从而提高了运维效率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种批量操作执行方法的流程示意图;
图2为本发明实施例提供的一种批量操作执行装置的结构示意图;
图3为本发明实施例提供的一种批量操作执行装置的整体架构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
为提高运维效率,本发明实施例提供了一种批量操作执行方法及装置。
下面将首先对本发明实施例所提供的一种批量操作执行方法进行介绍。
参见图1所示,本发明实施例提供的一种批量操作执行方法,包括如下几个步骤:
S101,接收批量操作执行命令。
实际应用中,接收的批量操作执行命令一般是由用户输入的。
其中,批量操作执行命令至少包括:目标操作信息、每种参数元素类型信息、执行机集合标识、每种参数元素的参数集合标识,及关于执行机集合、各种参数元素集合间的运算关系。
需要说明的是,批量操作执行命令为按照预先定义的基于集合关系运算的命令行语法进行书写的,其中该语法定义了包括批量操作执行命令名称、不同运算关系的运算等,能够描述批量操作执行场景下,参数集合元素的关系,对复杂的批量操作进行表达,以便后续根据该语法,正确地将批量操作执行命令解析成各个命令实例。
举例而言,可以定义批量操作执行命令的名称为pexec,当然也可以是其他合理的名称;还可以定义“=”为集合的自然连接运算符等。
可以理解的是,在接收到批量操作执行命令后,可以根据预先定义好的命令行语法,对该批量操作执行命令进行解析,获得命令实例,具体地,包括S102、S103和S104,下面将对这三个步骤进行详细说明。
S102,根据该批量操作执行命令中的执行机集合标识,确定目标执行机。
其中,要对接收的批量操作执行命令进行解析,可以先根据该批量操作执行命令中的执行机集合标识,确定目标执行机。
可以理解的是,批量操作执行命令解析所得到的每一个命令实例对应一个执行机,而一个执行机可以对应多个命令实例。执行机集合标识可以为一个,也可以为多个,在此不作限定;其中,当执行机集合标识为一个时,可以直接根据该执行机集合标识确定目标执行机,而当执行机集合标识为多个时,可以根据执行机集合间的运算关系,最终确定目标执行机。
举例而言,该批量操作执行命令中,执行机集合标识为JY、SH,JY对应的执行机集合包含的执行机分别为:jy1、jy2;SH对应的执行机集合包含的执行机为:sh1;而JY和SH间的运算关系为:JY|union(SH),即求并运算,那么,目标执行机便为:jy1、jy2和sh1。
S103,根据该批量操作执行命令中的每种参数元素类型信息和每种参数元素的参数集合标识,获得待操作的所有目标参数元素。
需要说明的是,针对每一种参数元素,还可以根据预先定义的筛选语法,对参数集合中包含的参数元素再进行过滤,以更灵活地进行批量操作执行。
具体地,可以根据预先定义的关系运算进行参数元素过滤。举例而言,针对表格集合Table1,可以根据预先定义的集合选择运算,过滤出属于用户user1的表格,具体地,可以为:Table1|User=user1。
在本发明实施例的一种具体实现方式中,当要执行的批量操作执行命令中包含的参数集合未进行相关定义时,在接收该批量操作执行命令,进行批量操作之前,还需对这些参数集合进行定义,具体地,本发明实施例提供的一种批量操作执行方法,还可以包括:
预先针对每个批量操作执行命令,生成配置文件。
其中,配置文件中,可以包括:每种参数元素类型信息、执行机集合标识、每种参数元素的参数集合标识、每种参数元素类型对应的参数元素或参数元素路径信息。
需要说明的是,针对任一种参数集合,可以直接在配置文件中,定义静态集合列表,即该参数集合包含的参数元素,例如,针对Table1标识的集合,可以直接在配置文件中定义该集合为:table[1:20];也可以在配置文件中给出该参数集合对应的参数元素路径信息,根据该参数元素路径信息,来定义动态集合列表。
相应地,S102,根据该批量操作执行命令中的执行机集合标识,确定目标执行机,可以包括:
根据配置文件中、该批量操作执行命令中的执行机集合标识对应的执行机集合中的各个执行机,确定目标执行机。
相应地,S103,根据该批量操作执行命令中的每种参数元素类型信息和每种参数元素的参数集合标识,获得待操作的所有目标参数元素,可以包括:
针对该批量操作执行命令中的每种参数元素,根据该种参数元素的类型信息和参数集合标识,从配置文件中,获得该种参数元素对应的待操作目标参数元素;或根据该种参数元素的类型信息和参数集合标识,确定该种参数元素对应的目标路径,并基于目标路径,调用配置管理数据库CMDB,获得该种参数元素对应的待操作目标参数元素。
其中,CMDB(Configuration Management Database,配置管理数据库)用以存储与管理企业IT架构中设备的各种配置信息,它与所有服务支持和服务交付流程都紧密相联,支持这些流程的运转、发挥配置信息的价值,同时依赖于相关流程保证数据的准确性。而本发明实施例中涉及到的参数元素通常都是企业***维护的资源对象,因此,可以通过适配CMDB来定义动态集合列表。具体地,由于CMDB一般多采用RESTful(简称REST,Representational StateTransfer,表述性状态转移)API(Application ProgrammingInterface,应用程序编程接口),在配置文件中,将不同的RESTful调用命名为某个参数集合,并定义元素的类型,从而将对参数集合元素的读取,转化为对CMDB的请求,来返回所需的参数列表元素。其中,RESTful API是目前比较成熟的一套互联网应用程序的API设计理论,为现有技术,此处不再赘述。
举例而言,假设Users参数元素类型包含两个子集合:UserGroupA和UserGroupB,其中,可以基于路径https://restfulapi/usersold,调用CMDB,并将该restful调用命名为UserGroupB,返回的列表元素即为UserGroupB集合对应的参数元素,具体地,可以在配置文件中作出以下定义:
[Users]
[UserGroupA]
[UserGroupB]cmdb=https://restfulapi/usersold
[UserGroupA]
Usera[1:100]
需要强调的是,在本发明实施例中,还可以按照其他合理的方式来定义参数集合,并不限于以上方式。
S104,根据该批量操作执行命令中的关于执行机集合、各种参数元素集合间的运算关系,确定目标执行机与各个目标参数元素之间的关系;每个目标执行机与目标参数元素之间的关系,对应一个批量执行的命令实例。
其中,可以基于预先定义的命令行语法,根据该批量操作执行命令中的执行机集合间的运算关系、执行机集合与参数元素集合间的运算关系以及各种参数元素集合间的运算关系,进行解析,确定出目标执行机与各个目标参数元素之间的关系,所确定出的每个目标执行机与目标参数元素之间的关系,对应一个批量执行的命令实例。可以理解的是,每一个命令实例都包含对应的目标操作信息。为清楚起见,后续将通过具体实施例进行介绍,此处不再赘述。
需要说明的是,在对该批量操作执行命令进行解析的过程中,还可以根据实际需求,去获取各参数元素的基本信息,如执行机的ip、操作***版本,表格或者数据库对应的版本信息等,用于实现一些条件判断的逻辑。
S105,并发执行各个命令实例。
需要说明的是,针对由S102至S104解析出的每一个命令实例,可以通过ssh(Secure Shell,安全外壳协议)远程登录对应的执行机执行目标操作。其中,为保证命令顺利执行,还可以预先为目标执行机进行执行环境变量等影响命令执行的因素的配置。
在本发明实施例的一种具体实现方式中,考虑到实用性,批量操作执行命令可以是在jinja模板引擎的语法规则的扩展基础上进行编写的,即预先定义的基于集合关系运算的命令行语法可以是基于jinja模板引擎的语法规则进行的扩展。相应地,接收到的批量操作执行命令满足jinjia模板引擎的语法规则。关于jinjia模板引擎为现有技术,此处不再赘述。
可以理解的是,jinja模板引擎的语法规则定义了几种简单的关系运算,如{{list1|union(list2)}},表示对关系list1和list2作求并集运算;{{list1|intersect(list2)}},表示对关系list1和list2作求交集运算;{{list1|difference(list2)}},表示对关系list1和list2作求差运算;{{list1|a=b}},表示对关系list1作选择运算。
需要说明的是,为灵活简洁地描述复杂的批量操作执行场景,还可以在jinja模板引擎的语法规则上,扩展加入以下几种关系运算:
{{list1}}×{{list2}},表示对list1和list2求笛卡儿积;
{{list1}}={{list2}},为自然连接运算,表示将list2自然连接到list1上;
{{list1}}=(L.b,R.c){{list2}},表示基于list1的第b列元素和list2的第c列元素,将list1和list2进行等值连接运算,具体地,如何等值连接为现有技术,此处不再赘述;其中,b、c为大于0的整数;
{{list1}}*{{list2|func(L.n)}},带入扩展运算,表示将list1中元素的第n列值分别带入list2的过滤函数func(L.n)后,将list1的每一元素与对应的带入后的list2元素作笛卡尔积运算,再将笛卡尔积运算后的每一个集合作并集运算;举例而言,假设list1为{A,B},其中,A=(d,e),B=(f,g)那么,{{list1}}*{{list2|func(L.1)}}为A×{{list2|func(d)}}与B×{{list2|func(f)}}的并集。
需要强调的是,本发明实施例中,关系运算还可以为根据实际需求,进行定义的,并不限于上述几种。
具体地,批量操作执行命令可以为:
pexec“第一操作信息$User$Table”{{第一执行机集合标识}}={{第一User集合标识}}×{{Table集合标识}}
其中,pexec为预先定义的批量操作执行命令名称,当然,批量操作执行命令名称也可以取作其他合理的名称,在此不作限定;第一操作信息为目标操作信息,“=”为自然连接运算符,“×”为笛卡尔积运算符。
举例而言,假设Operator标识了一个执行机集合,包括执行机10.121.1.4和10.121.1.87;UserGroupB标识了一个User类型的参数集合,包括用户userb1和userb2;Tables标识了一个Table类型的参数集合,其中属于用户usera1的表为table1和table2。如果要在执行机10.121.1.4和10.121.1.87上,分别以userb1和userb2的身份对table1和table2进行随机读测试,批量操作执行命令可以为:
pexec"test$User$Table"{{Operator}}={{UserGroupB}}×{{Tables|User=usera1}}
针对该具体命令实例进行解析,在确定出目标执行机和目标参数元素后,经过自然连接运算得到关系:(10.121.1.4,userb1)、(10.121.1.87,userb2);再求笛卡尔积得到最终的关系:(10.121.1.4,userb1,table1)、(10.121.1.4,userb1,table2)、(10.121.1.87,userb2,table1)和(10.121.1.87,userb2,table2),以上4个关系分别对应在具体的批量操作执行时的4个命令实例:
ssh [email protected]“test userb1table1”
ssh [email protected]“test userb1table2”
ssh [email protected]“test userb2table1”
ssh [email protected]“test userb2table2”
并发执行上述4个命令实例,即实现了在执行机10.121.1.4和10.121.1.87上,分别以userb1和userb2的身份对table1和table2进行随机读测试的批量操作。其中,test为现有技术中的随机读测试命令,此处不再赘述。
可以看出,用户只需从实际需求出发,按照预先定义的基于集合关系运算的命令行语法,输入正确的批量操作执行命令,便可很方便地实现对应的批量操作。
实际应用中,批量操作执行命令还可以包括:并发执行分组信息;以实现分组并发。
相应地,S105,并发执行各个命令实例的步骤,可以包括:
根据并发执行分组信息,对各个命令实例进行分组,得到至少一个命令实例组;并发执行各个命令实例组。
举例而言,假设批量操作执行命令解析得到10个命令实例,根据并发执行分组信息,可以将这10个命令实例分成两个命令实例组,即同时执行这两个命令实例组包含的实例。
具体地,批量操作执行命令可以为:
pexec“第二操作信息$Region$RegionServer”{{第二执行机集合标识}}×{{Region集合标识}}f=(L.0%R.size,R.0){{Regionserver集合标识}}
其中,第二操作信息为目标操作信息;“×”为笛卡尔积运算符;f为并发执行符号,f和f的位置为并发执行分组信息,表示以“×”运算后的关系分组来并发执行;“=(L.0%R.size,R.0)”为等值连接运算符,“%”为求余运算符,R.size为右侧集合中的元素个数,L.0和R.0分别为左侧和右侧集合元素序号,从0开始,“=(L.0%R.size,R.0)”表示,先将左侧集合元素序号对右侧集合元素个数作求余运算,将等值的运算结果与右侧集合元素序号分别对应的元素作自然连接,例如,左侧集合包含4个元素,分别为(m1,m2,m3,m4),对应序号为(0,1,2,3);右侧集合包含2个元素,分别为(p,q),对应序号为(0,1);首先分别将左侧序号对右侧集合包含的元素个数进行求余,即分别将(0,1,2,3)对2求余,得到(0,1,0,1),再将运算结果中0对应的左侧元素与右侧序号为0的元素作自然连接,运算结果中1对应的左侧元素与右侧序号为1的元素作自然连接,得到最终结果为:(m1,p)、(m2,q)、(m3,p)、(m4,q)。
举例而言,假设JYOperator标识了一个执行机集合,包括一个执行机op;Regions标识了一个分区集合,其中表t1的分区为:regiona、regionb、regionc和regiond;RegionServers标识了一个分区服务器集合,其中集群b对应的分区服务器为rsa和rsb。如果要在执行机op上,并发执行将表t1的分区分发到集群c1的命令,那么批量操作执行命令可以为:
pexec"move$Region$RegionServer"{{JYOperator}}×{{Regions|Table=t1}}f=(L.0%R.size,R.0){{RegionServers|Cluster=c1}}
针对该具体命令实例进行解析,在确定出目标执行机和目标参数元素后,求笛卡尔积得到关系:(op,regiona)、(op,regionb)、(op,regionc)、(op,regiond);再经过等值连接运算,得到最终的关系:(op,regiona,rsa)、(op,regionb,rsb)、(op,regionc,rsa)、(op,regiond,rsb),以上4个关系分别为在具体的批量操作执行时的4个命令实例:
ssh root@op“move regiona rsa”
ssh root@op“move regionb rsb”
ssh root@op“move regionc rsa”
ssh root@op“move regiond rsb”
其中,f在关系运算符“×”后,表示以“×”运算后的关系分组来并发执行,即并发执行以上4个命令实例,如此,便可以实现在执行机op上,并发执行将表t1的分区分发到集群c1的批量操作。其中,move为现有技术中的移动命令,此处不再赘述。
进一步地,批量操作执行命令还可以包括:并发度信息,来描述每一分组内的并发执行情况。
相应地,并发执行各个命令实例的步骤,可以包括:
根据并发执行分组信息,对各个命令实例进行分组,得到至少一个命令实例组;并发执行各个命令实例组,并针对每一命令实例组,基于并发度信息并发执行该命令实例组包含的命令实例。
本发明实施例的一种具体实现方式中,为更清晰地描述批量操作的并发情况,还可以根据每一命令实例组对应的可用资源,比如说线程,利用并发度信息,来设置每一命令实例组内的并发数,以防止由于每一命令实例组内包含的命令实例过多,而大量占用资源,从而影响其他业务的现象发生。
具体地,批量操作执行命令可以为:
pexec“第三操作信息Error_$Pid/预设文件夹名/$User”{{第三执行机集合标识|union(第四执行机集合标识)}}×{{Pid集合标识}}f*{{第三User集合标识|func(L.n)}}–f预设并发度
其中,第三操作信息为目标操作信息,“union”为去重合并运算符;“×”为笛卡尔积运算符;f为并发执行符号,f和f的位置为并发执行分组信息,表示以“×”运算后的关系分组来并发执行;“*”为带入扩展运算符,表示将“*”左侧关系中元素的第n列值分别带入右侧user集合的过滤函数func(L.n)后,将每一左侧关系的元素与对应的带入后的右侧集合元素作笛卡尔积运算,再将笛卡尔积运算后的每一个集合作并集运算;n为大于0的自然数;“-f预设并发度”为并发度执行信息。
举例而言,假设ServicePid标识了一个进程集合,其中属于访客v1的进程标识分别:pid_01;Users标识了一个User类型的参数集合;JY标识了一个执行机集合,包括执行机:jy1和jy2;SH标识了另一个执行机集合,包括执行机:sh1。如果要在JY和SH标识的所有执行机上,查找存在用户目录下,某个访客v1的出错进程日志,且设定并发度为10,那么批量操作执行命令可以为:
pexec"grep–r Error_$Pid/home/$User"{{JY|union(SH)}}×{{ServicePid|Guest=v1}}f*{{Users|Host=L.1}}-f 10
针对该具体命令实例进行解析,在确定出目标执行机和目标参数元素后,然后求笛卡尔积得到关系:(jy1,pid_01)、(jy2,pid_01)、(sh1,pid_01);再经过带入扩展运算,假设得到的最终关系为:(jy1,pid_01,user1)、(jy1,pid_01,user2)、(jy2,pid_01,user1)、(jy2,pid_01,user1)、(sh1,pid_01,user1)、(sh2,pid_01,user2),根据以上6个关系及f的位置,得到6个命令实例:
命令实例组1:
ssh root@jy1“grep–r Error_pid_01/home/user1”
ssh root@jy1“grep–r Error_pid_01/home/user2”
命令实例组2:
ssh root@jy2“grep–r Error_pid_01/home/user1”
ssh root@jy2“grep–r Error_pid_01/home/user2”
命令实例组3:
ssh root@sh1“grep–r Error_pid_01/home/user1”
ssh root@sh1“grep–r Error_pid_01/home/user2”
按照上述分组,并列执行各个实例组,便可实现在JY和SH标识的所有执行机上,查找存在用户目录下,某个访客v1的出错进程日志的批量操作。
实际应用中,如果要收集集群c2中,若干服务的日志到特定结点,并命名,那么批量操作执行命令可以为:
pexec"scp/data/${Service}.log${Host}:/tmp/${Host}-${Service}.log"{{JY}}*{{Services|Host=L.1}}f×{{LogHost[1]}}*{{L.3}}*{{L.2}}-f 100
其中,JY标识了一个执行机集合,为集群c2中的结点;Service标识了一个服务集合;LogHost定义了一个Host类型参数元素集合。
针对该具体命令实例进行解析,首先确定目标执行机,假设为:node1和node2;然后作带入扩展运算,假设得到关系:(node1,DN)、(node1,RS)、(node2,DN)、(node2,RS);假设LogHost[1]为loghost,那么求笛卡尔积后,得到关系:(node1,DN,loghost)、(node1,RS,loghost)、(node2,DN,loghost)、(node2,RS,loghost);再经过一次带入扩展运算,得到关系:(node1,DN,loghost,loghost)、(node1,RS,loghost,loghost)、(node2,DN,loghost,loghost)、(node2,RS,loghost,loghost);最后经过一次带入扩展运算后,得到最终关系:(node1,DN,loghost,loghost,DN)、(node1,RS,loghost,loghost,RS)、(node2,DN,loghost,loghost,DN)、(node2,RS,loghost,loghost,RS),根据以上4个关系及f的位置,得到4个命令实例:
命令实例组A
ssh root@node1“scp/data/DN.log loghost:/tmp/loghost-DN.log”
ssh root@node1“scp/data/RS.log loghost:/tmp/loghost-RS.log”
命令实例组B
ssh root@node2“scp/data/DN.log loghost:/tmp/loghost-DN.log”
ssh root@node2“scp/data/RS.log loghost:/tmp/loghost-RS.log”
按照上述分组,并列执行各个实例组,便可实现收集集群c2中,若干服务的日志到特定结点,并命名的批量操作。其中,scp是基于ssh登陆进行安全的远程文件拷贝的命令,为现有技术,此处不再赘述。
可以看出,应用图1所示发明实施例提供的批量操作执行方法,除host列表类型参数集合,即执行机集合外,还可以针对其他类型的参数元素,根据执行机集合、各种参数元素集合间的运算关系,将接收的批量操作执行命令进行解析,然后根据解析得到的命令实例,执行相关的批处理操作,而不需要提前进行逻辑封装,而且,本方案具有通用性,既避免了重复开发,又防止了在额外的信息与执行逻辑的实现过程中bug的产生,从而提高了运维效率。
与上述方法流程相对应,本发明实施例提供了一种批量操作执行装置,如图2所示,所述装置包括:
接收模块201,用于接收批量操作执行命令;其中,所述批量操作执行命令至少包括:目标操作信息、每种参数元素类型信息、执行机集合标识、每种参数元素的参数集合标识,及关于执行机集合、各种参数元素集合间的运算关系;
解析模块202,用于解析所述批量操作执行命令,包括:
第一确定子模块2021,用于根据所述批量操作执行命令中的执行机集合标识,确定目标执行机;
获得子模块2022,用于根据所述批量操作执行命令中的每种参数元素类型信息和每种参数元素的参数集合标识,获得待操作的所有目标参数元素;
第二确定子模块2023,用于根据所述批量操作执行命令中的关于执行机集合、各种参数元素集合间的运算关系,确定所述目标执行机与各个目标参数元素之间的关系;每个所述目标执行机与目标参数元素之间的关系,对应一个批量执行的命令实例;其中,所述命令实例包含所述目标操作信息;
执行模块203,用于并发执行各个命令实例。
应用图2所示发明实施例提供的批量操作执行装置,除host列表类型参数集合,即执行机集合外,还可以针对其他类型的参数元素,根据执行机集合、各种参数元素集合间的运算关系,将接收的批量操作执行命令进行解析,然后根据解析得到的命令实例,执行相关的批处理操作,而不需要提前进行逻辑封装,而且,本方案具有通用性,既避免了重复开发,又防止了在额外的信息与执行逻辑的实现过程中bug的产生,从而提高了运维效率。
可选地,所述装置还可以包括:
生成模块(图中未示出),用于预先针对每个批量操作执行命令,生成配置文件;所述配置文件中,包括:所述每种参数元素类型信息、执行机集合标识、每种参数元素的参数集合标识、每种参数元素类型对应的参数元素或参数元素路径信息;
所述第一确定子模块2021,具体可以用于:
根据所述配置文件中、所述批量操作执行命令中的执行机集合标识对应的执行机集合中的各个执行机,确定目标执行机;
所述获得子模块2022,具体可以用于:
针对所述批量操作执行命令中的每种参数元素,根据该种参数元素的类型信息和参数集合标识,从所述配置文件中,获得该种参数元素对应的待操作目标参数元素;或根据该种参数元素的类型信息和参数集合标识,确定该种参数元素对应的目标路径,并基于所述目标路径,调用配置管理数据库CMDB,获得该种参数元素对应的待操作目标参数元素。
需要说明的是,在本发明实施例的一种具体实现方式中,批量操作执行装置的一种整体架构示意图可以如图3所示,包括:命令行接口,对应接收模块201;集合定义器,对应生成模块;命令解释器,对应解析模块202;命令执行器,对应执行模块203。其中,命令行接口,用于接收批量操作执行命令,然后,由命令解释器来解析批量操作执行命令,得到命令实例;在解析过程中,命令解释器可以根据需要从集合定义器,获得各个参数集合,更具体地,从配置文件直接获得,或者调用CMDB获得;最后由命令执行器远程登陆执行机,执行各个实例对应的操作;其中,集合定义器用于在配置文件中进行相关参数集合的定义。当然,图3所示批量操作执行装置,仅为本发明实施例的一具体示例,不具有限定作用。
可选地,所述批量操作执行命令满足jinjia模板引擎的语法规则。
可选地,所述批量操作执行命令可以为:
pexec“第一操作信息$User$Table”{{第一执行机集合标识}}={{第一User集合标识}}×{{Table集合标识}}
其中,所述第一操作信息为所述目标操作信息,“=”为自然连接运算符,“×”为笛卡尔积运算符。
可选地,所述批量操作执行命令还可以包括:并发执行分组信息;
所述执行模块203,具体可以用于:
根据所述并发执行分组信息,对各个命令实例进行分组,得到至少一个命令实例组;并发执行各个命令实例组。
可选地,所述批量操作执行命令可以为:
pexec“第二操作信息$Region$RegionServer”{{第二执行机集合标识}}×{{Region集合标识}}f=(L.0%R.size,R.0){{Regionserver集合标识}}
其中,所述第二操作信息为所述目标操作信息;“×”为笛卡尔积运算符;f为并发执行符号,f和f的位置为所述并发执行分组信息,表示以“×”运算后的关系分组来并发执行;“=(L.0%R.size,R.0)”为等值连接运算符,“%”为求余运算符,R.size为右侧集合中的元素个数。
可选地,所述批量操作执行命令还可以包括:并发度信息;
所述执行模块203,具体可以用于:
根据所述并发执行分组信息,对各个命令实例进行分组,得到至少一个命令实例组;并发执行各个命令实例组,并针对每一命令实例组,基于所述并发度信息并发执行该命令实例组包含的命令实例。
可选地,所述批量操作执行命令可以为:
pexec“第三操作信息Error_$Pid/home/$User”{{第三执行机集合标识|union(第四执行机集合标识)}}×{{Pid集合标识}}f*{{第三User集合标识|func(L.n)}}–f预设并发度
其中,所述第三操作信息为所述目标操作信息,“union”为去重合并运算符;“×”为笛卡尔积运算符;f为并发执行符号,f和f的位置为所述并发执行分组信息,表示以“×”运算后的关系分组来并发执行;“*”为带入扩展运算符,表示将“*”左侧关系中元素的第n列值分别带入右侧user集合的过滤函数func(L.n)后,将每一左侧关系的元素与对应的带入后的右侧集合元素作笛卡尔积运算,再将笛卡尔积运算后的每一个集合作并集运算;n为大于0的自然数;“-f预设并发度”为所述并发度执行信息。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于***实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。

Claims (16)

1.一种批量操作执行方法,其特征在于,所述方法包括:
接收批量操作执行命令;其中,所述批量操作执行命令至少包括:目标操作信息、每种参数元素类型信息、执行机集合标识、每种参数元素的参数集合标识,及关于执行机集合、各种参数元素集合间的运算关系;
解析所述批量操作执行命令,包括:
根据所述批量操作执行命令中的执行机集合标识,确定目标执行机;
根据所述批量操作执行命令中的每种参数元素类型信息和每种参数元素的参数集合标识,获得待操作的所有目标参数元素;
根据所述批量操作执行命令中的关于执行机集合、各种参数元素集合间的运算关系,确定所述目标执行机与各个目标参数元素之间的关系;每个所述目标执行机与目标参数元素之间的关系,对应一个批量执行的命令实例;其中,所述命令实例包含所述目标操作信息;
并发执行各个命令实例。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:预先针对每个批量操作执行命令,生成配置文件;所述配置文件中,包括:所述每种参数元素类型信息、执行机集合标识、每种参数元素的参数集合标识、每种参数元素类型对应的参数元素或参数元素路径信息;
所述根据所述批量操作执行命令中的执行机集合标识,确定目标执行机的步骤,包括:
根据所述配置文件中、所述批量操作执行命令中的执行机集合标识对应的执行机集合中的各个执行机,确定目标执行机;
所述根据所述批量操作执行命令中的每种参数元素类型信息和每种参数元素的参数集合标识,获得待操作的所有目标参数元素,包括:
针对所述批量操作执行命令中的每种参数元素,根据该种参数元素的类型信息和参数集合标识,从所述配置文件中,获得该种参数元素对应的待操作目标参数元素;或根据该种参数元素的类型信息和参数集合标识,确定该种参数元素对应的目标路径,并基于所述目标路径,调用配置管理数据库CMDB,获得该种参数元素对应的待操作目标参数元素。
3.根据权利要求1所述的方法,其特征在于,所述批量操作执行命令满足jinjia模板引擎的语法规则。
4.根据权利要求3所述的方法,其特征在于,所述批量操作执行命令为:
pexec“第一操作信息$User$Table”{{第一执行机集合标识}}={{第一User集合标识}}×{{Table集合标识}}
其中,所述第一操作信息为所述目标操作信息,“=”为自然连接运算符,“×”为笛卡尔积运算符,User表示用户,Table表示数据表,$用于申明变量。
5.根据权利要求3所述的方法,其特征在于,所述批量操作执行命令还包括:并发执行分组信息;
所述并发执行各个命令实例的步骤,包括:
根据所述并发执行分组信息,对各个命令实例进行分组,得到至少一个命令实例组;并发执行各个命令实例组。
6.根据权利要求5所述的方法,其特征在于,所述批量操作执行命令为:
pexec“第二操作信息$Region$RegionServer”{{第二执行机集合标识}}×{{Region集合标识}}f=(L.0%R.size,R.0){{Regionserver集合标识}}
其中,所述第二操作信息为所述目标操作信息;“×”为笛卡尔积运算符;f为并发执行符号,f和f的位置为所述并发执行分组信息,表示以“×”运算后的关系分组来并发执行;“=(L.0%R.size,R.0)”为等值连接运算符,“%”为求余运算符,R.size为右侧集合中的元素个数,Region表示数据表的分区,RegionServer表示分区服务器,L.0和R.0分别表示左侧和右侧集合元素序号,$用于申明变量。
7.根据权利要求3所述的方法,其特征在于,所述批量操作执行命令还包括:并发度信息;
所述并发执行各个命令实例的步骤,包括:
根据所述并发执行分组信息,对各个命令实例进行分组,得到至少一个命令实例组;并发执行各个命令实例组,并针对每一命令实例组,基于所述并发度信息并发执行该命令实例组包含的命令实例。
8.根据权利要求7所述的方法,其特征在于,所述批量操作执行命令为:
pexec“第三操作信息Error_$Pid/预设文件夹名/$User”{{第三执行机集合标识|union(第四执行机集合标识)}}×{{Pid集合标识}}f*{{第三User集合标识|func(L.n)}}–f预设并发度
其中,所述第三操作信息为所述目标操作信息,“union”为去重合并运算符;“×”为笛卡尔积运算符;f为并发执行符号,f和f的位置为所述并发执行分组信息,表示以“×”运算后的关系分组来并发执行;“*”为带入扩展运算符,表示将“*”左侧关系中元素的第n列值分别带入右侧user集合的过滤函数func(L.n)后,将每一左侧关系的元素与对应的带入后的右侧集合元素作笛卡尔积运算,再将笛卡尔积运算后的每一个集合作并集运算;n为大于0的自然数;“-f预设并发度”为所述并发度执行信息,Error_表示用户目录的前缀,Pid表示进程,User表示用户,L.n表示左侧关系中元素的第n列值,$用于申明变量。
9.一种批量操作执行装置,其特征在于,所述装置包括:
接收模块,用于接收批量操作执行命令;其中,所述批量操作执行命令至少包括:目标操作信息、每种参数元素类型信息、执行机集合标识、每种参数元素的参数集合标识,及关于执行机集合、各种参数元素集合间的运算关系;
解析模块,用于解析所述批量操作执行命令,包括:
第一确定子模块,用于根据所述批量操作执行命令中的执行机集合标识,确定目标执行机;
获得子模块,用于根据所述批量操作执行命令中的每种参数元素类型信息和每种参数元素的参数集合标识,获得待操作的所有目标参数元素;
第二确定子模块,用于根据所述批量操作执行命令中的关于执行机集合、各种参数元素集合间的运算关系,确定所述目标执行机与各个目标参数元素之间的关系;每个所述目标执行机与目标参数元素之间的关系,对应一个批量执行的命令实例;其中,所述命令实例包含所述目标操作信息;
执行模块,用于并发执行各个命令实例。
10.根据权利要求9所述的装置,其特征在于,所述装置还包括:
生成模块,用于预先针对每个批量操作执行命令,生成配置文件;所述配置文件中,包括:所述每种参数元素类型信息、执行机集合标识、每种参数元素的参数集合标识、每种参数元素类型对应的参数元素或参数元素路径信息;
所述第一确定子模块,具体用于:
根据所述配置文件中、所述批量操作执行命令中的执行机集合标识对应的执行机集合中的各个执行机,确定目标执行机;
所述获得子模块,具体用于:
针对所述批量操作执行命令中的每种参数元素,根据该种参数元素的类型信息和参数集合标识,从所述配置文件中,获得该种参数元素对应的待操作目标参数元素;或根据该种参数元素的类型信息和参数集合标识,确定该种参数元素对应的目标路径,并基于所述目标路径,调用配置管理数据库CMDB,获得该种参数元素对应的待操作目标参数元素。
11.根据权利要求9所述的装置,其特征在于,所述批量操作执行命令满足jinjia模板引擎的语法规则。
12.根据权利要求11所述的装置,其特征在于,所述批量操作执行命令为:
pexec“第一操作信息$User$Table”{{第一执行机集合标识}}={{第一User集合标识}}×{{Table集合标识}}
其中,所述第一操作信息为所述目标操作信息,“=”为自然连接运算符,“×”为笛卡尔积运算符,User表示用户,Table表示数据表,$用于申明变量。
13.根据权利要求11所述的装置,其特征在于,所述批量操作执行命令还包括:并发执行分组信息;
所述执行模块,具体用于:
根据所述并发执行分组信息,对各个命令实例进行分组,得到至少一个命令实例组;并发执行各个命令实例组。
14.根据权利要求13所述的装置,其特征在于,所述批量操作执行命令为:
pexec“第二操作信息$Region$RegionServer”{{第二执行机集合标识}}×{{Region集合标识}}f=(L.0%R.size,R.0){{Regionserver集合标识}}
其中,所述第二操作信息为所述目标操作信息;“×”为笛卡尔积运算符;f为并发执行符号,f和f的位置为所述并发执行分组信息,表示以“×”运算后的关系分组来并发执行;“=(L.0%R.size,R.0)”为等值连接运算符,“%”为求余运算符,R.size为右侧集合中的元素个数,Region表示数据表的分区,RegionServer表示分区服务器,L.0和R.0分别表示左侧和右侧集合元素序号,$用于申明变量。
15.根据权利要求11所述的装置,其特征在于,所述批量操作执行命令还包括:并发度信息;
所述执行模块,具体用于:
根据所述并发执行分组信息,对各个命令实例进行分组,得到至少一个命令实例组;并发执行各个命令实例组,并针对每一命令实例组,基于所述并发度信息并发执行该命令实例组包含的命令实例。
16.根据权利要求15所述的装置,其特征在于,所述批量操作执行命令为:
pexec“第三操作信息Error_$Pid/预设文件夹名/$User”{{第三执行机集合标识|union(第四执行机集合标识)}}×{{Pid集合标识}}f*{{第三User集合标识|func(L.n)}}–f预设并发度
其中,所述第三操作信息为所述目标操作信息,“union”为去重合并运算符;“×”为笛卡尔积运算符;f为并发执行符号,f和f的位置为所述并发执行分组信息,表示以“×”运算后的关系分组来并发执行;“*”为带入扩展运算符,表示将“*”左侧关系中元素的第n列值分别带入右侧user集合的过滤函数func(L.n)后,将每一左侧关系的元素与对应的带入后的右侧集合元素作笛卡尔积运算,再将笛卡尔积运算后的每一个集合作并集运算;n为大于0的自然数;“-f预设并发度”为所述并发度执行信息,Error_表示用户目录的前缀,Pid表示进程,User表示用户,L.n表示左侧关系中元素的第n列值,$用于申明变量。
CN201710210787.8A 2017-03-31 2017-03-31 一种批量操作执行方法及装置 Active CN107193543B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710210787.8A CN107193543B (zh) 2017-03-31 2017-03-31 一种批量操作执行方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710210787.8A CN107193543B (zh) 2017-03-31 2017-03-31 一种批量操作执行方法及装置

Publications (2)

Publication Number Publication Date
CN107193543A CN107193543A (zh) 2017-09-22
CN107193543B true CN107193543B (zh) 2020-05-22

Family

ID=59871384

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710210787.8A Active CN107193543B (zh) 2017-03-31 2017-03-31 一种批量操作执行方法及装置

Country Status (1)

Country Link
CN (1) CN107193543B (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109120453B (zh) * 2018-08-31 2021-04-23 上海新炬网络信息技术股份有限公司 一种全局展现cmdb中it基础架构数据的方法
CN110412953A (zh) * 2019-07-03 2019-11-05 北京云迹科技有限公司 工控机批量管理方法及***
CN112882752B (zh) * 2021-01-26 2022-10-28 苏州达家迎信息技术有限公司 微服务的批量处理方法、装置、计算机设备及存储介质
CN113094185A (zh) * 2021-04-13 2021-07-09 中国工商银行股份有限公司 数据库批量程序并行数据处理异常检测方法及装置
CN114553660A (zh) * 2022-01-10 2022-05-27 北京思特奇信息技术股份有限公司 一种高效运维的分布式***以及运维方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5504888A (en) * 1992-10-23 1996-04-02 Hitachi, Ltd. File updating system employing the temporary connection and disconnection of buffer storage to extended storage
CN103646111A (zh) * 2013-12-25 2014-03-19 普元信息技术股份有限公司 大数据环境下实现实时数据关联的***及方法
CN105426238A (zh) * 2016-01-17 2016-03-23 浙江维融电子科技股份有限公司 一种基于内存的设备后台指令管理***的控制方法
CN105808418A (zh) * 2014-12-29 2016-07-27 平安科技(深圳)有限公司 测试机注册方法、装置及***

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI289759B (en) * 2005-10-07 2007-11-11 Via Tech Inc Controller and operation method thereof of a disk array
US20080201290A1 (en) * 2007-02-16 2008-08-21 International Business Machines Corporation Computer-implemented methods, systems, and computer program products for enhanced batch mode processing of a relational database
JP2013097623A (ja) * 2011-11-01 2013-05-20 Fujitsu Ltd 排他制御プログラム、排他制御装置および排他制御方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5504888A (en) * 1992-10-23 1996-04-02 Hitachi, Ltd. File updating system employing the temporary connection and disconnection of buffer storage to extended storage
CN103646111A (zh) * 2013-12-25 2014-03-19 普元信息技术股份有限公司 大数据环境下实现实时数据关联的***及方法
CN105808418A (zh) * 2014-12-29 2016-07-27 平安科技(深圳)有限公司 测试机注册方法、装置及***
CN105426238A (zh) * 2016-01-17 2016-03-23 浙江维融电子科技股份有限公司 一种基于内存的设备后台指令管理***的控制方法

Also Published As

Publication number Publication date
CN107193543A (zh) 2017-09-22

Similar Documents

Publication Publication Date Title
CN107193543B (zh) 一种批量操作执行方法及装置
CN107368503B (zh) 基于Kettle的数据同步方法和***
US9338061B2 (en) Open station as a stream analysis operator container
US11231912B2 (en) Post-deployment modification of information-technology application using lifecycle blueprint
CN105045832A (zh) 一种数据采集方法及装置
CN110968509B (zh) 一种批量化自定义变量的方法和***
CN115309566B (zh) 一种服务接口的动态管理方法及***
CA3049671C (en) Systems and methods for comparing computer scripts
JP7108039B2 (ja) システム全体の制御とデータ探索の自動化を可能にするための視覚的および実行テンプレートの推奨
Jain Mastering apache storm: Real-time big data streaming using kafka, hbase and redis
CN113298503A (zh) 一种面向政务的工作流管理***及其分库分表方法
US11461288B2 (en) Systems and methods for database management system (DBMS) discovery
CN105320589A (zh) 云测试环境中测试脚本自动解析***及其实现方法
CN113037891B (zh) 边缘计算***中有状态应用的访问方法、装置及电子设备
CN111104304A (zh) 多任务场景性能测试方法、存储介质、电子设备及***
CN112162915A (zh) 一种测试数据生成方法、装置、设备及存储介质
Vanhove et al. Tengu: An experimentation platform for big data applications
EP3567804B1 (en) Advanced insights explorer
CN111435329A (zh) 一种自动化测试方法和装置
US10819557B1 (en) Systems and methods for selective discovery of services
US10379849B1 (en) Methods and apparatus for visualization of contextual code execution
US20210311843A1 (en) System verification program generation device, system verification program generation method, and recording medium storing system verification program generation program
US11100077B2 (en) Event table management using type-dependent portions
CN102707956A (zh) 用于处理触发器返回结果不确定性的方法
CN106899427B (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