CN111654542A - 代理服务器、执行服务器、接收设备以及任务执行方法 - Google Patents

代理服务器、执行服务器、接收设备以及任务执行方法 Download PDF

Info

Publication number
CN111654542A
CN111654542A CN202010492617.5A CN202010492617A CN111654542A CN 111654542 A CN111654542 A CN 111654542A CN 202010492617 A CN202010492617 A CN 202010492617A CN 111654542 A CN111654542 A CN 111654542A
Authority
CN
China
Prior art keywords
task
execution
server
request
template
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
Application number
CN202010492617.5A
Other languages
English (en)
Other versions
CN111654542B (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.)
Sasi Digital Technology (Beijing) Co.,Ltd.
Original Assignee
Alipay Hangzhou Information 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 Alipay Hangzhou Information Technology Co Ltd filed Critical Alipay Hangzhou Information Technology Co Ltd
Priority to CN202010492617.5A priority Critical patent/CN111654542B/zh
Priority to CN202310259376.3A priority patent/CN116389490A/zh
Publication of CN111654542A publication Critical patent/CN111654542A/zh
Application granted granted Critical
Publication of CN111654542B publication Critical patent/CN111654542B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/10015Access to distributed or replicated servers, e.g. using brokers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/242Query formulation
    • G06F16/2433Query languages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2458Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
    • G06F16/2471Distributed queries
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Abstract

本申请提供一种代理服务器、一种由所述代理服务器执行的任务执行方法、一种执行服务器、一种由所述执行服务器执行的任务执行方法、一种接收设备以及一种由所述接收设备执行的任务执行方法。本申请所述由所述代理服务器执行的任务执行方法包括以下步骤:接收来自客户端的任务请求,所述任务请求包括目标任务模板;生成关于所述目标任务模板的代理端标识;将所述任务请求发送给执行服务器;从所述执行服务器接收第一响应,所述第一响应中包含所述任务的执行端标识;将所述第一响应中的所述执行端标识替换为所述代理端标识,生成第二响应;以及将所述第二响应发送给所述客户端。

Description

代理服务器、执行服务器、接收设备以及任务执行方法
技术领域
本申请涉及信息技术领域,特别涉及代理服务器、执行服务器、接收设备以及任务执行方法。
背景技术
数据库(Database,DB)是一个长期存储在计算机内的、有组织的、可共享的以及可统一管理的数据集合。可以将数据库看作是一个″按照数据结构来组织、存储和管理数据的仓库″。数据库管理系统(Database Management System,DBMS)是位于用户和操作系统之间的数据管理软件。数据库由数据库管理系统建立。数据库管理系统还可以对数据库进行管理和控制。数据库系统(Database System,DBS)是指带有数据库并利用数据库技术对计算机中的数据进行管理的计算机系统。在不引起混淆的情况下,数据库系统也简称数据库。
分布式任务执行系统通常使用较小的计算机系统。所述计算机系统中的每台计算机可以单独放在一个地方。所述每台计算机中都可能有DBMS的一份完整拷贝副本或者部分拷贝副本。所述每台计算机具有自己局部的数据库(DB)。位于不同地点的许多计算机通过网络互相连接,并共同组成一个完整的、全局的逻辑上集中、物理上分布的大型数据库。
在数据库系统中,常采用结构化查询语言(Structured Query Language,SQL)存储数据以及查询、更新和管理DBMS。数据库系统同客户端的通信依据通信协议。
在普通文本协议下,数据库接收到的客户端的每一个请求都是一条完整的SQL语句。并且,所述每一条SQL语句都是以文本串的方式发送到数据库数据库。数据库在收到文本串形式的SQL语句后需要做一系列的文本解析/编译工作才能开始执行客户端的请求。比如,对该SQL语句的编译过程可以是:解析SQL语句;检查SQL语句的语法、语义和生成代码。编译完成后,数据库再执行该SQL语句。对每一条SQL语句,数据库都需要先解析SQL然后再执行。这样会导致数据库系统的整体效率很低。
发明内容
为了提高数据库系统的效率,本申请公开了一种用于任务执行系统的任务执行方法,包括:接收来自客户端的任务请求,所述任务请求包括目标任务模板;生成所述目标任务模板的代理端标识;将所述任务请求发送给执行服务器;从所述执行服务器接收第一响应,所述第一响应中包含所述目标任务模板的执行端标识;将所述第一响应中的所述执行端标识替换为所述代理端标识,生成第二响应;以及,将所述第二响应发送给所述客户端。
在一些实施例中,其中,所述任务包括Prepared Statement;所述目标任务模板包括所述Prepared Statement的Prepare;以及所述任务请求为所述Prepare的SQL文本。
在一些实施例中,所述任务执行方法进一步包括:接收关于所述任务的第一执行请求,所述第一执行请求包括所述目标任务模板的代理端标识和不包括所述目标任务模板的任务参数;根据所述代理端标识检索到所述执行端标识;将所述第一执行请求中的代理端标识替换成所述执行端标识,生成第二执行请求;以及将所述第二执行请求发送给所述执行服务器。
在一些实施例中,其中,所述执行服务器为分布式数据库系统,包括多个分布式连接的子服务器,所述代理服务器为所述分布式数据库系统的代理服务器;以及所述将所述第二执行请求发送给所述执行服务器进一步包括:基于所述目标任务模板和所述不包括所述目标任务模板的任务参数,从所述多个子服务器中选择至少一个目标子服务器;以及将所述第二执行请求发送给所述目标子服务器。
在一些实施例中,其中,所述第一执行请求包括所述目标任务模板的第一校验数据;所述任务执行方法还包括,通过所述代理服务器,在接收到所述第一执行请求之后:基于所述代理端标识检索到代理端候选任务模板;获取所述代理端候选任务模板的第二校验数据;以及确认所述第二校验数据同所述第一校验数据吻合。
本申请还公开了一种代理服务器,包括:至少一个存储器,包括至少一组指令集;以及至少一个处理器,同所述至少一个存储器通讯连接,当所述至少一个处理器运行所述至少一组指令集时,所述至少一个处理器执行本申请所述的任务执行方法。
本申请还公开了一种用于任务执行系统的任务执行方法,包括:接收来自代理服务器的任务请求,所述任务请求包括目标任务模板;生成所述目标任务模板的执行端标识和关于所述任务请求的第一响应,所述第一响应包括所述执行端标识;以及将所述第一响应发送给所述代理服务器。
在一些实施例中,其中:所述任务包括Prepared Statement;所述目标任务模板包括所述Prepared Statement的Prepare;以及所述任务请求为所述Prepare的SQL文本。
在一些实施例中,所述任务执行方法还包括:生成所述目标任务模板的执行计划;接收来自所述代理服务器的第二执行请求,所述第二执行请求包括所述目标任务模板的代理端标识和不包括所述目标任务模板的任务参数;以及基于所述目标任务模板和所述任务参数执行所述执行计划。
在一些实施例中,其中,所述第二执行请求包括第一校验数据;所述任务执行方法还包括:在接收到所述第二执行请求之后,所述执行服务器:基于所述执行端标识检索到执行端候选任务模板;获取所述执行端候选任务模板的第三校验数据;以及确认所述第三校验数据同所述第一校验数据吻合。
在一些实施例中,其中,所述执行服务器为分布式数据库系统,包括多个分布式连接的子服务器,所述代理服务器为所述分布式数据库系统的代理服务器。
本申请还公开了一种执行服务器,包括:至少一个存储器,包括至少一组指令集;以及至少一个处理器,同所述至少一个存储器通讯连接,当所述至少一个处理器运行所述至少一组指令集时,所述至少一个处理器执行本申请所述的任务执行方法。
本申请还公开了一种任务执行方法,其中,所述任务包括任务模板和不包含所述任务模板的任务参数,所述任务执行方法包括:接收来自请求设备的所述任务的执行请求,所述执行请求包括关于所述任务模板的第一校验数据和所述任务模板的任务标识;根据所述任务标识检索到候选任务模板;获取关于所述候选任务模板的第二校验数据,其中,所述第二校验数据基于所述候选任务模板生成;以及确定所述第二校验数据同所述第一校验数据吻合。
在一些实施例中,其中:所述任务包括Prepared Statement;所述任务参数包括所述Prepared Statement的Execute;以及所述执行请求为所述Execute的SQL文本。
本申请还公开了一种接收设备,包括:至少一个存储器,包括至少一组指令集;以及至少一个处理器,同所述至少一个存储器通讯连接,当所述至少一个处理器运行所述至少一组指令集时,所述至少一个处理器执行本申请所述的任务执行方法。
本申请所述任务执行方法600和任务执行方法700,在Prepare阶段,代理服务器将接收到的来自客户端的封装有任务模板的Prepare请求包转发给执行服务器。之后,在接收到来自执行服务器的Prepare响应包之后,代理服务器将所述Prepare响应包中的server_stmt_id替换成client_stmt_id并转发给客户端。客户端可以从接收到的Prepare响应包中获取准确的信息。本申请所述任务执行方法600和任务执行方法700,通过在代理服务器和执行服务器之间增加一层Prepare,将任务模板同时存储在代理服务器和执行服务器内。这样,在接收到来自客户端的execute请求之后,代理服务器只需要将不含任务模板的二进制的任务参数发送给执行服务器。执行服务器便可以调用已经生成的执行计划执行任务。这样,就减小了execute阶段代理服务器同执行服务器之间的数据传输量,提高了数据传输的准确性和数据传输的效率。本申请所述任务执行方法800,通过在客户端发送的execute请求包中增加关于任务模板的校验数据,在代理服务器和执行服务器端增加关于所述任务模板的校验,提高了数据传输的准确性。
附图说明
图1示出了根据本申请实施例提供的一种任务执行系统的应用场景示意图;
图2示出了根据本申请实施例提供的一种代理服务器的硬件结构示意图;
图3示出了根据本申请实施例提供的一种任务执行系统的任务处理过程;
图4示出了根据本申请实施例提供的一种任务执行方法的流程图;
图5示出了根据本申请实施例提供的一种任务执行方法的流程图;
图6示出了根据本申请实施例提供的一种任务执行方法的流程图;以及
图7示出了MySQL原生协议里Execute请求包的格式。
具体实施方式
以下描述提供了本申请的特定应用场景和要求,目的是使本领域技术人员能够制造和使用本申请中的内容。对于本领域技术人员来说,对所公开的实施例的各种局部修改是显而易见的,并且在不脱离本申请的精神和范围的情况下,可以将这里定义的一般原理应用于其他实施例和应用。因此,本申请不限于所示的实施例,而是与权利要求一致的最宽范围。
这里使用的术语仅用于描述特定示例实施例的目的,而不是限制性的。
考虑到以下描述,本申请的这些特征和其他特征、以及结构的相关元件的操作和功能、以及部件的组合和制造的经济性可以得到明显提高。参考附图,所有这些形成本申请的一部分。然而,应该清楚地理解,附图仅用于说明和描述的目的,并不旨在限制本申请的范围。
以下描述可以显著改进本申请的这些和其他特征,以及结构的相关元件的操作和功能,以及组件的组合和制造的经济效率。所有这些都参考附图形成本申请的一部分。然而,应该清楚地理解,附图仅用于说明和描述的目的,并不旨在限制本申请的范围。还应理解,附图未按比例绘制。
Prepare Statement是一种数据传输协议。在Prepare Statement协议(以下简称PS协议)下,客户端会将需要发送给数据库的任务请求分成任务模板和任务参数。对于任务模板相同的同一类型的任务,客户端同数据库系统之间的数据传输分为Prepare和Execute两个阶段。在Prepare阶段,客户端会向DBMS发送该类型任务的任务模板——即对完整任务请求中的参数进行了占位符替换的不带参数的SQL文本。DBMS接收到所述任务模板后解析所述不带参数的SQL文本,保存解析结果,生成关于任务模板的标识StmtId并返回给客户端。在Execute阶段,客户端只向DBMS发送包含了被占位符替换的二进制的SQL参数和关于任务模板的标识StmtId的Execute请求。数据库可以根据所述StmtId直接获取同所述StmtId对应的任务模板,根据所述任务模板和任务参数便可以执行计划。PS协议允许一次Prepare,多次Execute。在PS协议下,客户端与数据库只需要传送代表语句的StmtId和参数就可以完成交互,可以有效降低数据库端的CPU开销、节省网络带宽、减少网络抖动对系统的影响,提升执行效率。
虽然PS协议效率更高,但相比文本协议,增加了可靠性风险。由于PS协议每次只需要传送StmtId而不是完整SQL文本,如果在整个传输过程中,StmtId发生了错误,则可能导致数据库执行的并不是客户端想要执行的SQL语句,就会引发数据正确性问题。特别是分布式数据库,链路长,涉及组件多,过程中还会涉及StmtId的替换,更容易出错。
图1示出了根据本申请的一些实施例所示的任务执行系统300的应用场景。所述应用场景可以包括用户110、终端设备120、网络130、客户端140以及任务执行系统300。
用户110是终端设备120的使用者。用户110可以是一个人,也可以是多个人。终端设备120上可以安装有一个或多个目标应用。所述目标应用能够为用户110提供通过网络130同外界交互的能力以及界面。所述目标应用可以是任何运行在终端设备120上的应用程序。比如,所述目标应用可以是某金融服务机构具有数据统计功能的应用程序,某电商平台的APP,某金融机构的管理系统(比如银行的OA系统),某web浏览器,等等。在一些实施例中,终端设备120可以包括移动设备120-1、平板电脑120-2、笔记本电脑120-3、机动车辆120-4的内置设备或类似内容,或其任意组合。用户110可以通过终端设备120上的所述目标应用输入自己的请求。终端设备120可以将用户110的请求通过网络130提交给客户端140。例如,如果用户110请求一个按字母顺序列出的产品表,则终端设备120通过网络130提交该请求给客户端140。
网络130可以促进信息和/或数据的交换。如图1所示,终端设备120、客户端140、任务执行系统300可以同网络130连接,并且通过网络130互相传输信息和/或数据。例如,客户端140可以通过网络120获得从终端设备120传送的用户110的请求,也可以向终端设备120传送所述请求的处理结果。在一些实施例中,网络130可以是任何类型的有线或无线网络,也可以是其组合。例如,网络130可以包括电缆网络,有线网络、光纤网络、电信通信网络、内联网、互联网、局域网(LAN)、广域网(WAN)、无线局域网(WLAN)、大都市市区网(MAN)、广域网(WAN)、公用电话交换网(PSTN)、蓝牙网络、ZigBee网络、近场通信(NFC)网络或类似网络。在一些实施例中,网络130可以包括一个或多个网络接入点。例如,网络130可以包括有线或无线网络接入点,如基站和/或互联网交换点120-1、120-2,...,通过该接入点,终端设备120、客户端140、任务执行系统300的一个或多个组件可以连接到网络130以交换数据和/或信息。
客户端140指的是载有客户机软件的电子设备。所述客户机软件可以将客户端140接收到的用户110的任务请求依据通信协议发送给任务执行系统300。当用户110通过终端设备120上的某电商aPP输入一个任务请求时,客户端140可以是该电商的服务器。所述服务器上载有所述客户机软件。所述客户机软件可以将该任务请求依据PS协议发送给任务执行系统300。
任务执行系统300可以接收来自客户端140的请求。任务执行系统300可以对所述请求进行处理并将处理结果返回客户端140。例如,如果用户110请求一个按字母顺序列出的产品表,终端设备120通过网络130提交该请求给客户端140;客户端140再将该请求提交给任务执行系统300。任务执行系统300处理这个请求;然后把结果送回客户端140。
任务执行系统300可以包括代理服务器200和执行服务器400。
执行服务器400可以是分布式数据库系统。所述分布式数据库系统可以包括多个分布式连接的子服务器。所述多个子服务器可以相互通讯交流数据和信息。比如,所述多个子服务器可以通过网络130联系在一起。所述多个子服务器可以共享一个共同的任务,所述多个子服务器中的每个子服务器完成所述任务中的一个或者多个子任务,并且把所述子任务的运行结果传递给其他需要这个子任务的服务器(例如代理服务器200)。
执行服务器400负责所有数据的访问和处理。关于数据查找、添加、删除和数据更新的所有请求都由执行服务器400完成。这些请求或者更改可以来自于客户端140。例如,如果用户110请求一个按字母顺序列出的产品表,终端设备120通过网络130提交该请求给客户端140;客户端140再将该请求提交给执行服务器400。执行服务器400处理这个请求,根据需要过滤、丢弃和排序数据;然后把结果送回客户端140。
代理服务器200可以是所述分布式任务执行系统的代理服务器。代理服务器200可以拦截客户端140发送给执行服务器400的请求。代理服务器200可以对所述被拦截的请求进行处理然后发送给执行服务器400。
图2示出了根据本申请实施例中的一种代理服务器200的硬件结构示意图。代理服务器200可以包括至少一个存储器230和至少一个处理器220。在一些实施例中,代理服务器200还可以包括通信端口250和内部通信总线210。同时,代理服务器200还可以包括I/O组件260。
内部通信总线210可以连接不同的系统组件,包括存储器230和处理器220。
I/O组件260支持代理服务器200和其他组件之间的输入/输出。
通信端口250用于代理服务器200同外界的数据通讯。比如,代理服务器200可以通过通信端口250连接网络130,进而接收客户端140发来的用户110的请求。代理服务器200也可以通过通信端口250连接网络130,进而通过网络130向数据处理装置400发送请求或者接收数据管理装置400返回的结果。
至少一个处理器220同至少一个存储器230通过内部通信总线210进行通讯。所述至少一个存储器包括至少一个指令集,当至少一个处理器220执行上述至少一个指令集时,代理服务器200实施本申请提供的任务执行的方法。处理器220可以执行所述任务执行方法包含的部分或所有步骤。处理器220可以是一个或多个处理器的形式,在一些实施例中,处理器220可以包括一个或多个硬件处理器,例如微控制器,微处理器,精简指令集计算机(RISC),专用集成电路(ASIC),特定于应用的指令集处理器(ASIP),中央处理单元(CPU),图形处理单元(GPU),物理处理单元(PPU),微控制器单元,数字信号处理器(DSP),现场可编程门阵列(FPGA),高级RISC机器(ARM),可编程逻辑器件(PLD),能够执行一个或多个功能的任何电路或处理器等,或其任何组合。仅仅为了说明问题,在本申请中代理服务器200中仅描述了一个处理器220。然而,应当注意,本申请中代理服务器200还可以包括多个处理器,因此,本申请中披露的操作和/或方法步骤可以如本申请所述的由一个处理器执行,也可以由多个处理器联合执行。例如,如果在本申请中代理服务器200的处理器220执行步骤A和步骤B,则应该理解,步骤A和步骤B也可以由两个不同处理器220联合或分开执行(例如,第一处理器执行步骤A,第二处理器执行步骤B,或者第一和第二处理器共同执行步骤A和B)。
存储器230可以包括数据存储装置。所述数据存储装置可以是非暂时性存储介质,也可以是暂时性存储介质。比如,所述数据存储装置可以包括磁盘232、只读存储器(ROM)234或随机存取存储器(RAM)236中的一种或多种。存储器230还包括存储在所述数据存储装置中的至少一个指令集。所述至少一个指令集是计算机程序代码,所述计算机程序代码可以包括执行本申请提供的任务执行方法的程序、例程、对象、组件、数据结构、过程、模块等等。
需要说明的是,代理服务器200的个数可以是一个或者多个。代理服务器200和执行服务器400可以是相互独立的计算机。代理服务器200也可以和执行服务器400中的一个或者多个子服务器共用一个计算机。不管代理服务器200和执行服务器400在不在相同的计算机上,为进行所有数据交互,代理服务器200都要与执行服务器400进行通信。
图3示出了根据本申请实施例提供的一种任务执行系统300在接收到来自客户端140的任务请求后的任务处理过程。为了清楚方便的说明本发明的具体内容,图3以客户端140和任务执行系统300之间依据PS协议进行通信为例。本领域技术人员可以很容易地理解,客户端140和任务执行系统300之间也可以依据其他协议进行通信而不背离本申请中所述发明的核心精神。
在PS协议下,客户端140会将需要发送给任务执行系统300的任务拆分成任务模板和任务参数。所述任务模板可以是将所述任务中的参数用占位符替换得到。所述任务参数指的是被所述占位符替换的参数。例如,若用户110请求一个user的列表,那么,所述任务可以是″select*from user where user_id=阿奇″;所述任务模板可以是″select*fromuser where user_id=?″;所述任务参数可以是″阿奇″。
对于任务模板相同的同一类型的任务,客户端140同任务执行系统300之间的数据传输分为Prepare和Execute两个阶段。在Prepare阶段,客户端140会向代理服务器200发送该类型任务的任务模板。客户端140将所述任务模板封装成Prepare请求包并发送给代理服务器200。代理服务器200在接收到所述Prepare请求包后解析所述Prepare请求包获取被封装的任务模板。代理服务器200基于所述任务模板生成关于所述任务模板的标识StmtId,并建立所述StmtId同所述任务模板的映射。之后,代理服务器200会伪造一个对所述Prepare请求包的Prepare响应包返回给客户端140。其中,所述Prepare响应包封装有所述StmtId。
之后,客户端140将Execute请求包发送给代理服务器200。所述Execute请求包中封装有目标任务的任务参数和关于该类任务的任务模板的标识StmtId。代理服务器200在接收到所述Execute请求包之后对所述Execute请求包进行解析,获取被封装的关于目标任务的任务参数和关于该类任务的任务模板的标识StmtId。代理服务器200首先根据所述StmtId查找到关于该类任务的任务模板;然后将所述任务模板中的占位符替换为目标任务的任务参数。这样,代理服务器200就获得了完整的客户端140需要执行的目标任务。该目标任务是一条包含有任务模板和任务参数的完整的SQL文本。
之后,代理服务器200解析该SQL文本获得需要执行目标任务的执行服务器400中的目标子服务器的节点信息。代理服务器200将该SQL文本发送给目标子服务器410。由于代理服务器200发送给目标子服务器的执行请求是包含有任务参数和任务模板的完整的SQL文本,因此,可以认为,代理服务器200和目标子服务器之间采用的是普通文本协议。目标子服务器接收到该SQL文本后解析该SQL文本、执行目标任务并返回执行结果。代理服务器200合并目标子服务器的响应生成Execute响应包返回给客户端140。
上述过程,首先,在Prepare阶段,代理服务器200并没有真正将任务发送给执行服务器400,而是伪造了一个Prepare响应包返回给客户端140。因此,客户端140接收到的响应包中的信息并不准确。然而有些时候,一些客户端140希望从接收到的响应包中获取执行服务器400的某些信息。
其次,在Execute阶段,代理服务器200发送给目标子服务器的是完整的包含有目标任务模板和目标任务参数的SQL文本;目标子服务器在每一次执行请求中也都需要执行所述完整的SQL文本。即,代理服务器200与目标子服务器之间依然用的是普通文本协议,无法提升代理服务器200与目标子服务器之间的网络传输效率以及目标子服务器的CPU效率。
再次,对于代理服务器200来说,在Execute阶段,无法有效检验通过客户端发送的StmtId查找到的目标任务模板是否同Prepare阶段接收并存储的目标任务模板相同。如果代理服务器200对PS协议的实现有问题,比如不同种类的任务请求使用了相同的任务模板StmtId,可能会导致数据正确性问题。
为了提高任务执行系统300的网络传输效率、CPU效率以及任务执行的准确率,本申请提供一种由代理服务器200执行的任务执行方法、一种由执行服务器400执行的任务执行方法以及一种用于提高数据传输准确性的任务执行方法。
图4示出了根据本申请一些实施例提供的任务执行方法600的流程图。流程600可以作为至少一个指令集存储在代理服务器200中的非临时性存储介质(比如存储器230)中。至少一个处理器220同所述至少一个非临时性存储介质通讯连接,其中当代理服务器200运行时,所述至少一个处理器220读取所述至少一个指令集,并且根据所述至少一个指令集的指示执行流程600中的步骤。
以下呈现的所示流程600的操作,旨在是说明性的而非限制性的。在一些实施例中,流程600在实现时可以添加一个或多个未描述的额外操作,和/或删减一个或多个此处所描述的操作。此外,图4中所示的和下文描述的操作的顺序并不对此加以限制。
S610,接收客户端的任务请求,所述任务请求包括目标任务模板。
客户端140可以向任务执行系统300发送任务请求。所述任务请求可以包括目标任务模板和不包括所述目标任务模板的任务参数。作为示例,所述目标任务模板可以将所述任务请求的参数进行占位符替换得到;所述任务参数可以是所述任务请求中被所述占位符替换的参数。比如,若某任务请求是″select*from user where user_id=阿奇″;那么,该任务请求的目标任务模板可以是″select*from user where user_id=?″;该任务请求的任务参数可以是″阿奇″。
所述任务请求可以包括任务模板同所述目标任务模板相同的所有的任务请求。比如,若所述目标任务模板是″select*from user where user_id=?″,那么,所述任务请求可以包括任务模板同所述目标任务模板相同的所有的任务请求,包括,但不限于,″select*from user where user_id=阿奇″,″select*from user where user_id=汪汪″,″select*from user where user_id=小丽″,等等。
在一些实施例中,所述任务请求包括Prepared Statement。也就是,客户端140同任务执行系统300的通信依据PS协议。
在PS协议下,当客户端140第一次向任务执行系统300发送所述任务请求时,任务执行系统300会先对所述任务请求进行一次Prepare,将所述目标任务模板发送给任务执行系统300。比如,客户端140可以将所述目标任务模板封装成Prepare请求包并发送给代理服务器200。任务执行系统300在接收到所述目标任务模板之后依据所述目标任务模板生成执行计划。由于所述执行计划是基于不包含任务参数的所述目标任务模板生成的;因此,对于目标任务模板相同、任务参数不同的所有的任务请求,所述执行计划是相同的。
之后,对于所述目标任务模板相同的所有的其他的任务请求,客户端140不再向任务执行系统300发送完整的任务请求。对于所述目标任务模板相同的所有的其他的任务请求,客户端140只向任务执行系统300发送″包含有该任务请求的任务参数且不包含所述目标任务模板″的执行请求。比如,客户端140可以将不包含目标任务模板的任务参数封装成Execute请求包并发送给代理服务器200。任务执行系统300接收到所述执行请求后根据所述执行请求中的任务参数执行所述执行计划。
S620,生成所述目标任务模板的代理端标识。
接收到客户端140发送的Prepare请求包后,代理服务器200依据PS协议解析所述Prepare请求包,从解析结果中提取出被封装的所述目标任务模板,并将所述目标任务模板存储至代理服务器200的所述至少一个存储器(例如存储器230)内。代理服务器200生成所述目标任务模板的代理端标识,并建立所述代理端标识同所述任务模板的映射,即″所述代理端标识→所述任务模板″。
例如,所述目标任务模板是″select*from user where user_id=?″。接收到客户端140发送的Prepare请求包后,代理服务器200依据PS协议解析所述Prepare请求包,从解析结果中提取出被封装的所述目标任务模板,并将所述目标任务模板存储至代理服务器200的所述至少一个存储器(例如存储器230)内。代理服务器200生成所述目标任务模板的代理端标识client_stmt_id,并建立client_stmt_id同所述目标任务模板的映射,即″client_stmt_id→目标任务模板″。
这样,当代理服务器200再次接收到所述代理端标识时,便可以从代理服务器200的所述至少一个存储器中查找到同所述代理端标识对应的所述目标任务模板。
S630,将所述任务请求发送给执行服务器。
之后,代理服务器200可以将所述Prepare请求包转发给任务执行系统300的执行服务器400。代理服务器200可以通过有线或者无线的方式将所述Prepare请求包转发给执行服务器400。作为示例,代理服务器200可以通过网络130将所述Prepare请求包转发给执行服务器400。
S640,从所述执行服务器接收第一响应,所述第一响应中包含所述目标任务模板的执行端标识。
接收到代理服务器200发送的所述Prepare请求包后,执行服务器400依据PS协议解析所述Prepare请求包,从解析结果中提取出被封装的所述目标任务模板并将所述目标任务模板存储至执行服务器400的至少一个存储器内。在一些实施例中,执行服务器400还会生成关于所述任务模板的执行计划。执行服务器400生成所述目标任务模板的执行端标识,并建立所述执行端标识同所述目标任务模板的映射,即″所述执行端标识→所述任务模板″。例如,所述目标任务模板是″select*from user where user_id=?″。执行服务器400可以生成所述目标任务模板的执行端标识server_stmt_id,并建立server_stmt_id同所述目标任务模板的映射,即″server_stmt_id→目标任务模板″。之后,执行服务器400生成关于所述Prepare请求的第一响应并返回给代理服务器200。所述第一响应中包含有所述执行端标识。
这样,当执行服务器400再次接收到所述执行端标识时,便可以从执行服务器400的所述至少一个存储器中查找到同所述执行端标识对应的所述目标任务模板。由于所述执行服务器400已经将所述目标任务模板存储到了所述至少一个存储器内;因此,当代理服务器200再次接收到来自客户端140的相同任务模板的新任务请求时,就可以不用再进行″将新任务的任务模板封装成Prepare请求包并发送给执行服务器400″的操作,只需要将所述新任务的任务参数(比如说二进制的参数)封装成新的Execute请求包并发送给执行服务器400即可。
上述任务执行方法,相较于图3所示的任务执行方法,在Execute阶段无需传输完整的包含有任务模板和任务参数的SQL文本,减小了Execute阶段的数据传输量和错误率,提高了代理服务器200的CPU效率、代理服务器200同执行服务器400之间的传输效率以及传输准确率。
其次,对于一个新任务,在Execute阶段,执行服务器400也只需要调用已经存储在其存储器内的目标任务模板。所述目标任务模板的执行计划也在Prepare阶段已经生成,减少了执行服务器400的文本解析过程,有效提升了执行服务器400的CPU效率。
再次,代理服务器200将Prepare请求包发送给了执行服务器400。如果客户端140希望获得执行服务器400的准确信息,可以通过执行服务器400针对所述Prepare请求包生成的第一响应来传递所述信息。
在一些实施例中,执行服务器400为分布式数据库系统。执行服务器400可以包括多个分布式连接的子服务器。比如,Server1,Server2,Server3,Server4,Server5,Server6,......,等等。代理服务器200为所述分布式数据库系统的代理服务器。当代理服务器400是分布式数据库系统时,代理服务器200可以从所述数据库系统的所有子服务器中随机选择一个子服务器(比如Server1)作为执行服务器,并将所述Prepare请求包发送给所述被选择的子服务器。
需要说明的是,当代理服务器200接收到的来自客户端140的新任务请求的目标子服务器(比如Server2)不是Prepare阶段被代理服务器200选择的子服务器(Server1)时,代理服务器200需要重新执行步骤S630和S640的操作,将所述目标任务模板再向所述目标子服务器(Server2)发送一遍。
S650,将所述第一响应中的所述执行端标识替换为所述代理端标识,生成第二响应。
S660,将所述第二响应发送给所述客户端。
代理服务器200接收到执行服务器400发送的所述第一响应后,将所述第一响应中的所述执行端标识替换为所述代理端标识,生成第二响应,并将所述第二响应作为对来自客户端140的Prepare请求的Prepare响应返回给客户端140。
这里,代理服务器200返回给客户端140的所述第二响应并不是伪造的Prepare响应,而是将执行服务器400生成的″针对Prepare请求的真实的Prepare响应(即第一响应)″进行修改后返回给客户端140。其中,所述修改只有将第一响应中的执行端标识替换为代理端标识,其余信息不变。因此,客户端140可以从接收到的所述第二响应中获取准确的信息。
当执行服务器400是分布式数据库系统时,在接收到来自被选择的子服务器(Server1)的第一响应后,代理服务器200还会从所述第一响应中获取Server1的节点信息,并建立Server1的节点信息同执行端标识和/或代理端标识的映射,比如,server1→(client_stmt_id,server_stmt_id)。
当再次接收到新的执行请求并获得所述新的执行请求的目标子服务器的节点信息之后,代理服务器200首先会识别目标子服务器的节点信息是否存在于所述映射关系中;如果存在,代理服务器200会认为目标子服务器已经进行过了Prepare;如果不存在,代理服务器200则会认为目标子服务器没有进行过Prepare,并会重新执行步骤S630和S640的操作,将所述目标任务模板再向所述目标子服务器发送一遍。
例如,在Prepare阶段代理服务器200随机选择的子服务器为Server1,在Execute阶段的目标子服务器是Server2。那么在Execute阶段,代理服务器200会重新执行步骤S630和S640的操作,将封装有所述目标任务模板的Prepare请求包再向Server2发送一遍。之后,在接收到Server2的第一响应之后,代理服务器200会从所述第一响应中获得Server2的节点信息,并建立Server2的节点信息同代理端标识和/或执行端标识的映射,比如,server2→(client_stmt_id,server_stmt_id)。这样,当再次接收到目标子服务器包括Server2的执行请求时,代理服务器200就可以从所述映射中识别到Server2的节点信息,这样,就可以直接将所述执行请求发送给Server2了。
之后,在接收到代理服务器200返回的针对Prepare请求的Prepare响应后,客户端140可以从中获取来自代理服务器200的关于所述目标任务模板的代理端标识。客户端140可以建立所述目标任务模板同所述代理端标识的映射,即″所述目标任务模板→所述代理端标识″。
例如,所述目标任务模板是″select*from user where user_id=?″。接收到代理服务器200返回的Prepare响应包并获取其中的代理端标识后,客户端140可以建立所述目标任务模板同client_stmt_id的映射,即″目标任务模板→Client_stmt_id″。
这样,当客户端140需要再次发送新的任务请求时,便可以从所述映射关系中寻找同新任务的任务模板对应的代理端标识。如果新任务的任务模板不在所述映射关系中,那么,客户端140会重新发送新任务的任务模板至代理服务器,代理服务器重新执行本申请所述的执行方法600。否则客户端140可以从所述映射关系中找到同新任务模板对应的代理端标识,并将所述代理端标识作为新任务的标识封装在新任务的执行请求中发送给任务执行系统300。
在一些实施例中,流程600还可以包括步骤S670、S680、S690以及S691。步骤S670、S680、S690以及S691可以是代理服务器200对来自客户端140的不包含目标模板的任务参数的Execute。
S670,接收关于所述任务的第一执行请求,所述第一执行请求包括所述目标任务模板的代理端标识和不包括所述目标任务模板的任务参数。
所述任务可以包括任务模板同目标任务模板相同的所有的任务。比如,所述目标任务模板是″select*from user where user_id=?″;那么,所述任务可以包括,″select*from user where user_id=汪汪″,″select*from user where user_id=小丽″,等等。
依据PS协议,客户端140会基于所述任务的任务参数生成执行请求并将所述执行请求发送给代理服务器200。所述执行请求可以是客户端140第一次发送该类任务时的Execute请求,也可以是后续第二次、第三次、......发送该类任务时的Execute请求。为了区分,以第一执行请求表示客户端140基于所述任务的任务参数生成的执行请求。
根据前面的描述,我们知道,客户端140在接收到代理服务器200返回的Prepare响应包后,会建立″任务模板→代理端标识″的映射表。因此,当需要向任务执行系统300发送一个新的任务时,客户端140首先会从已存储的″任务模板→代理端标识″的映射关系中查找到同新的任务模板对应的代理端标识。客户端140会将该代理端标识作为新任务的任务模板的标识。之后,客户端140可以基于所述代理端标识和所述任务的任务参数生成第一执行请求并发送给代理服务器200。作为示例,客户端140可以将所述代理端标识和所述任务参数封装成Execute请求包发送代理服务器200。为了区分,我们将客户端140从所述映射关系中查找到的代理端标识为″stmt_id″。
在一些实施例中,所述第一执行请求中还可以包括第一校验数据。所述第一校验数据可以由客户端140基于所述任务的任务模板生成的。当然,若所述第一执行请求就是第一次发送的该类任务的执行请求,第一校验数据也可以由代理服务器200或执行服务器400生成,然后由代理服务器200通过所述第二响应返回给客户端140。
S680,根据所述代理端标识检索到所述执行端标识。
S690,将所述第一执行请求中的代理端标识替换成所述执行端标识,生成第二执行请求。
S691,将所述第二执行请求发送给所述执行服务器。
代理服务器200在接收到客户端140发送的所述Execute请求包之后,依据PS协议解析所述Execute请求包,从解析结果中提取被封装的任务参数(″小丽″)和stmt_id。
在一些实施例中,代理服务器200将stmt_id带入代理服务器200在Prepare阶段建立的映射(client_stmt_id→server_stmt_id)中并检索到存储在代理服务器200内的同所述stmt_id对应的server_stmt_id。之后,代理服务器200可以将所述Execute请求包中的stmt_id替换为server_stmt_id并将进行修改后Execute请求包,即第二执行请求,发送给执行服务器400。
在一些实施例中,代理服务器200可以将stmt_id带入代理服务器200在Prepare阶段建立的映射(client_stmt_id→任务模板)中并检索到同存储在代理服务器200内的同所述stmt_id对应的代理端候选任务模板。之后,基于所述代理端候选任务模板生成第二校验数据。代理服务器200基于代理端候选任务模板生成所述第二校验数据的方法和客户端140基于新任务的任务模板生成所述第一校验数据的方法可以相同。
之后,代理服务器200可以确认所述第二校验数据同接收到的客户端140发送的所述第一校验数据是否吻合。如果确认所述第二校验数据和所述第一校验数据吻合,就能够确认根据stmt_id在代理服务器200内找到的代理端候选任务模板是客户端140需要的任务模板。同时,也能够确认代理服务器200建立的映射(client_stmt_id→任务模板)和客户端140建立的映射(任务模板←→stmt_id)是正确的,解决了客户端140将模板标识发送错误或者代理服务器200的映射关系错误造成的数据错误,提高了数据传输的准确性。
之后,代理服务器200根据所述client_stmt_id检索到同所述client_stmt_id对应的所述server_stmt_id。代理服务器200将stmt_id带入代理服务器200在Prepare阶段建立的映射(client_stmt_id→server_stmt_id)中并检索到存储在代理服务器200内的同所述stmt_id对应的server_stmt_id。之后,代理服务器200可以将所述Execute请求包中的stmt_id替换为server_stmt_id并将进行修改后Execute请求包,即第二执行请求,发送给执行服务器400。
在一些实施例中,执行服务器400为分布式数据库系统。执行服务器400可以包括多个分布式连接的子服务器。比如,Server1,Server2,Server3,Server4,Server5,Server6,......,等等。代理服务器200为所述分布式数据库系统的代理服务器。当执行服务器400是分布式数据库系统时,代理服务器200可以基于通过stmt_id查找到的代理端候选任务模板和从接收到的来自客户端140的所述Execute请求包(即第一执行请求)中获得的任务参数生成完整地目标任务,也就是客户端140想要执行的任务。代理服务器200解析所述目标任务,获得需要执行任务的目标子服务器的节点(比如Server1,Server2和Server3)。所述目标子服务器的个数可以是一个或者多个。
根据前面的描述,在Prepare阶段,代理服务器200还会建立子服务器的节点信息同执行端标识和/或代理端标识的映射,比如,server1→(client_stmt_id,server_stmt_id)。之后,代理服务器200将所述第二执行请求发送给所述目标子服务器。
需要说明的是,当所述目标子服务器中包含没有进行过Prepare的子服务器时,代理服务器200需要重新执行步骤S630和S640的操作,将所述目标任务模板再向所述目标子服务器发送一遍。对于代理服务器200如何确认目标子服务器是否进行过Prepare,在前面的描述中已介绍,这里不再赘述。当确认目标子服务器已经进行过Prepare之后,代理服务器200将所述第二执行请求发送给所述目标子服务器。
根据前面的描述,客户端140将新的不包含任务模板的任务参数和通过新任务模板查找到的stmt_id封装为Execute请求包(即第一执行请求)并发送给代理服务器200。代理服务器200将所述第一请求中的stmt_id替换为server_stmt_id并将修改后的Execute请求包(即第二执行请求)发送给执行服务器400。
接收到来自代理服务器200的第二执行请求之后,执行服务器400解析所述第二执行请求,从解析结果中提取所述任务参数和server_stmt_id。之后,执行服务器400可以通过所述server_stmt_id和Prepare阶段建立的映射(server_stmt_id→任务模板)检索到同所述server_stmt_id对应的存储在执行服务器400内的执行端候选任务模板。之后,执行服务器400可以根据所述任务参数和所述执行端候选任务模板执行执行服务器400在Prepare阶段就已经生成的执行计划。这样,代理服务器200只需向执行服务器400传输任务参数,无需再次传输包含任务模板和任务参数的完整的SQL文本,可以减低网络负载,以及后端执行服务器400的文本解析过程,有效提升与后端执行服务器400间的网络传输效率以及后端执行服务器400的CPU效率。
在一些实施例中,所述第二执行请求中可以包括所述第一校验数据。所述第一校验数据由客户端140基于同所述任务参数对应的任务模板生成的。所述第一校验数据可以用于校验执行服务器400通过所述server_stmt_id查找到的执行端候选任务模板是否是客户端140需要的任务模板。
执行服务器400根据所述server_stmt_id检索到执行服务器400内存储的执行端候选任务模板。根据所述执行端候选任务模板获得第三校验数据。所述第三校验数据是基于所述执行端候选任务模板生成的。
在一些实施例中,执行服务器400可以在获得所述执行端候选任务模板后基于所述执行端候选任务模板生成第三校验数据。在一些实施例中,所述第三校验数据也可以由执行服务器400在Prepare阶段基于所述目标任务模板生成并存储在所述第三数据的列表内。在一些实施例中,所述第三校验数据可以由代理服务器200在Prepare阶段基于目标任务模板生成并通过请求包发送给执行服务器400。第三校验数据何时生成以及由谁生成不对本公开造成限制。
执行服务器400确认所述第三校验数据同所述第一校验数据吻合。这样,就能够确认在执行服务器400内找到的执行端候选任务模板同客户端140发送的任务参数对应的任务模板相同,也就是,所述执行端候选任务模板是客户端140需要的任务模板。同时,也能够确认执行服务器400建立的映射(server_stmt_id→任务模板)是正确的。此外,也能再一次地确认客户端140建立的映射(任务模板→stmt_id)是正确的。解决了客户端140将模板标识发送错误、代理服务器200的映射关系错误或执行服务器400的映射关系错误造成的数据错误,提高了数据传输的准确性。之后,执行服务器400可以根据所述任务参数和所述执行端候选任务模板执行执行服务器400在Prepare阶段就已经生成的执行计划,有效提升代理服务器200与后端子服务器间的网络传输效率以及后端子服务器的CPU效率。
执行服务器400执行所述执行计划后,生成关于所述第二执行请求的Execute响应并返回给代理服务器200。代理服务器200再将该Execute响应返回给客户端140。当所述执行服务器是分布式数据库系统的目标子服务器时,代理服务器200可以整合接收到的所有目标子服务器的响应并将整合后的响应返回给客户端140。
对应地,在任务执行的过程中,执行服务器400端的处理过程可以是:
S710,接收来自代理服务器的任务请求,所述任务请求包括目标任务模板。
S720,生成所述目标任务模板的执行端标识和关于所述任务请求的第一响应,所述第一响应包括所述执行端标识。
S730,将所述第一响应发送给所述代理服务器。
在一些实施例中,执行服务器400还可以进行以下处理过程:
S740,生成所述目标任务模板的执行计划。
S750,接收来自所述代理服务器的第二执行请求,所述第二执行请求包括所述目标任务模板的代理端标识和不包括所述目标任务模板的任务参数。
S760,基于所述表任务模板和所述任务参数执行所述执行计划。
图5示出了根据本申请一些实施例提供的任务执行方法700的流程图。图5所示为从执行服务器400的处理过程来描述任务执行的过程。
上述任务执行方法700可以作为至少一个指令集存储在执行服务器400中的非临时性存储介质中。至少一个处理器同所述至少一个非临时性存储介质通信连接,其中当执行服务器400运行时,所述至少一个处理器读取所述至少一个指令集,并且根据所述至少一个指令集的指示执行任务执行方法700。具体的任务执行方法的过程前文已经介绍过,此处不再赘述。
本申请还提供一种任务执行方法。所述任务执行方法可以用于请求设备同接收设备之间的交互。比如,所述任务执行方法可以用于客户端140同代理服务器200之间的交互,所述请求设备可以是客户端140,所述接收设备可以是代理服务器200。又比如,所述任务执行方法可以用于代理服务器200同执行服务器400之间的交互,所述请求设备可以是代理服务器200,所述接收设备可以是执行服务器400。
图6示出了根据本申请一些实施例提供的任务执行方法800的流程图。图6所示为从所述接收设备的处理过程来描述任务执行的过程。
具体地,任务执行方法800可以包括:
S810,接收来自请求设备的所述任务的第一执行请求,所述第一执行请求包括关于所述任务模板的第一校验数据和所述任务模板的任务标识。
S820,根据所述任务标识检索到候选任务模板。
S830,获取关于所述候选任务模板的第二校验数据,其中,所述第二校验数据基于所述候选任务模板生成。
840,确定所述第二校验数据同所述第一校验数据吻合。
具体的任务执行方法的过程前文已经介绍过,此处不再赘述。
在一些实施例中,所述任务包括Prepared Statement;所述任务参数包括所述Prepared Statement的Execute;以及所述第一执行请求为所述Execute的SQL文本。
任务执行方法800可以应用在基于PS协议的Execute请求中。比如任务执行方法800可以应用在客户端140向代理服务器200发送Execute请求的过程中,此时,所述接收设备是代理服务器200,所述请求设备是客户端140,所述第一执行请求是客户端140向代理服务器200发送的Execute请求。再比如,任务执行方法800可以应用在代理服务器200向执行服务器400发送Execute请求的过程中,此时,所述接收设备是执行服务器400,所述请求设备是代理服务器200,所述第一执行请求是代理服务器200向执行服务器400发送的Execute请求。
在一些实施例中,所述第二校验数据可以由所述接收设备基于所述候选任务模板生成。在一些实施例中,所述接收设备可以在根据所述任务标识检索到候选任务模板之后基于所述候选任务模板生成所述第二校验数据。在一些实施例中,所述接收设备可以在Prepare阶段基于所述候选任务模板生成所述第二校验数据。在一些实施例中,还可以由其他服务器(比如子服务器)基于所述候选任务模板生成所述第二校验数据,之后再由其他设备将所述第二校验数据传输给所述接收设备。所述第二校验数据由谁生成以及在何时生成不对本申请进行限制。
在一些实施例中,所述第一校验数据可以基于所述任务模板生成。
在一些实施例中,所述第一校验数据可以是对所述任务模板进行CRC生码获得的CRC码。作为示例,所述CRC码可以是CRC32码。对应地,所述第二校验数据可以是对所述候选任务模板进行CRC生码获得的CRC码。当然,也可以采用其他算法基于所述任务模板生成所述第一校验数据、基于所述候选任务模板生成所述第二校验数据。需要指出的是,生成所述第一校验数据采用的算法可以同生成所述第二校验数据采用的算法相同。比如,如果所述第一校验数据是所述任务模板的CRC32码,那么,所述第二校验数据也是所述候选任务的CRC32码。
所述第一校验数据可以耦合在所述第一执行请求的请求包中。例如,所述请求设备可以将所述第一校验数据耦合在Execute请求包的包头中发送给所述接收设备。
比如,可以对MySQL原生协议里Execute请求包的格式进行扩展。图6示出了MySQL原生协议里Execute请求包的格式。在MySQL原生协议里,iterationg-count字段的始终为″1″。因此,所述请求设备可以将关于所述任务模板的第一校验数据写入iterationg-count字段,利用iterationg-count字段来传输所述第一校验数据。所述接收设备接收到所述Execute请求包之后,对所述execute请求包进行解析,提取iterationg-count字段的内容。如果iterationg-count字段的内容为″1″,表明没有对iterationg-count字段的内容进行修改,所述接收设备可以按照MySQL原生协议处理所述Execute请求包。如果iterationg-count字段的内容为不是″1″表明对iterationg-count字段的内容进行了修改,提取iterationg-count字段的内容作为所述第一校验数据。这样,就解决了如何传输第一校验数据的问题。
综上,本申请提供一种任务执行方法600、一种任务执行方法700、一种任务执行方法800、一种代理服务器200、一种执行服务器400以及一种接收设备。
本申请所述任务执行方法600和任务执行方法700,在Prepare阶段,代理服务器200将接收到的来自客户端140的封装有任务模板的Prepare请求包转发给执行服务器400。之后,在接收到来自执行服务器400的Prepare响应包之后,代理服务器200将所述Prepare响应包中的server_stmt_id替换成client_stmt_id并转发给客户端140。客户端140可以从接收到的Prepare响应包中获取准确的信息。本申请所述任务执行方法600,通过在代理服务器和执行服务器之间增加一层Prepare,将任务模板同时存储在代理服务器200和执行服务器400内。这样,在接收到来自客户端的execute请求之后,代理服务器200只需要将不含任务模板的二进制的任务参数发送给执行服务器400。执行服务器便可以调用已经生成的执行计划执行任务。这样,就减小了execute阶段代理服务器200同执行服务器400之间的数据传输量,提高了数据传输的准确性。
本申请所述任务执行方法800,通过在客户端140发送的execute请求包中增加关于任务模板的校验数据,在代理服务器200和执行服务器400端增加关于所述任务模板的校验,提高了数据传输的准确性。
综上所述,在阅读本详细公开内容之后,本领域技术人员可以明白,前述详细公开内容可以仅以示例的方式呈现,并且可以不是限制性的。尽管这里没有明确说明,本领域技术人员可以理解本申请意图囊括对实施例的各种合理改变,改进和修改。这些改变,改进和修改旨在由本申请提出,并且在本申请的示例性实施例的精神和范围内。
此外,本申请中的某些术语已被用于描述本申请的实施例。例如,″一个实施例″,″实施例″和/或″一些实施例″意味着结合该实施例描述的特定特征,结构或特性可以包括在本申请的至少一个实施例中。因此,可以强调并且应当理解,在本说明书的各个部分中对″实施例″或″一个实施例″或″替代实施例″的两个或更多个引用不一定都指代相同的实施例。此外,特定特征,结构或特性可以在本申请的一个或多个实施例中适当地组合。
应当理解,在本申请的实施例的前述描述中,为了帮助理解一个特征,出于简化本申请的目的,本申请有时将各种特征组合在单个实施例、附图或其描述中。或者,本申请又是将各种特征分散在多个本申请的实施例中。然而,这并不是说这些特征的组合是必须的,本领域技术人员在阅读本申请的时候完全有可能将其中一部分特征提取出来作为单独的实施例来理解。也就是说,本申请中的实施例也可以理解为多个次级实施例的整合。而每个次级实施例的内容在于少于单个前述公开实施例的所有特征的时候也是成立的。
在一些实施方案中,表达用于描述和要求保护本申请的某些实施方案的数量或性质的数字应理解为在某些情况下通过术语″约″,″近似″或″基本上″修饰。例如,除非另有说明,否则″约″,″近似″或″基本上″可表示其描述的值的±20%变化。因此,在一些实施方案中,书面描述和所附权利要求书中列出的数值参数是近似值,其可以根据特定实施方案试图获得的所需性质而变化。在一些实施方案中,数值参数应根据报告的有效数字的数量并通过应用普通的舍入技术来解释。尽管阐述本申请的一些实施方案列出了广泛范围的数值范围和参数是近似值,但具体实施例中都列出了尽可能精确的数值。
本文引用的每个专利,专利申请,专利申请的出版物和其他材料,例如文章,书籍,说明书,出版物,文件,物品等,可以通过引用结合于此。用于所有目的的全部内容,除了与其相关的任何起诉文件历史,可能与本文件不一致或相冲突的任何相同的,或者任何可能对权利要求的最宽范围具有限制性影响的任何相同的起诉文件历史。现在或以后与本文件相关联。举例来说,如果在与任何所包含的材料相关联的术语的描述、定义和/或使用与本文档相关的术语、描述、定义和/或之间存在任何不一致或冲突时,使用本文件中的术语为准。
最后,应理解,本文公开的申请的实施方案是对本申请的实施方案的原理的说明。其他修改后的实施例也在本申请的范围内。因此,本申请披露的实施例仅仅作为示例而非限制。本领域技术人员可以根据本申请中的实施例采取替代配置来实现本申请中的申请。因此,本申请的实施例不限于申请中被精确地描述过的那些实施例。

Claims (15)

1.一种用于任务执行系统的任务执行方法,包括:
接收来自客户端的任务请求,所述任务请求包括目标任务模板;
生成所述目标任务模板的代理端标识;
将所述任务请求发送给执行服务器;
从所述执行服务器接收第一响应,所述第一响应中包含所述目标任务模板的执行端标识;
将所述第一响应中的所述执行端标识替换为所述代理端标识,生成第二响应;以及,
将所述第二响应发送给所述客户端。
2.如权利要求1所述的任务执行方法,其中:
所述任务包括Prepared Statement;
所述目标任务模板包括所述Prepared Statement的Prepare;以及
所述任务请求为所述Prepare的SQL文本。
3.如权利要求1所述的任务执行方法,进一步包括:
接收关于所述任务的第一执行请求,所述第一执行请求包括所述目标任务模板的代理端标识和不包括所述目标任务模板的任务参数;
根据所述代理端标识检索到所述执行端标识;
将所述第一执行请求中的代理端标识替换成所述执行端标识,生成第二执行请求;以及将所述第二执行请求发送给所述执行服务器。
4.如权利要求3所述的任务执行方法,其中,所述执行服务器为分布式数据库系统,包括多个分布式连接的子服务器,所述代理服务器为所述分布式数据库系统的代理服务器;以及
所述将所述第二执行请求发送给所述执行服务器进一步包括:
基于所述目标任务模板和所述不包括所述目标任务模板的任务参数,从所述多个子服务器中选择至少一个目标子服务器;以及
将所述第二执行请求发送给所述目标子服务器。
5.如权利要求3所述的任务执行方法,其中,所述第一执行请求包括所述目标任务模板的第一校验数据;
所述任务执行方法还包括,通过所述代理服务器,在接收到所述第一执行请求之后:
基于所述代理端标识检索到代理端候选任务模板;
获取所述代理端候选任务模板的第二校验数据;以及
确认所述第二校验数据同所述第一校验数据吻合。
6.一种代理服务器,包括:
至少一个存储器,包括至少一组指令集;以及
至少一个处理器,同所述至少一个存储器通讯连接,当所述至少一个处理器运行所述至少一组指令集时,所述至少一个处理器执行如所述权利要求1-5中的任一任务执行方法。
7.一种用于任务执行系统的任务执行方法,包括:
接收来自代理服务器的任务请求,所述任务请求包括目标任务模板;
生成所述目标任务模板的执行端标识和关于所述任务请求的第一响应,所述第一响应包括所述执行端标识;以及
将所述第一响应发送给所述代理服务器。
8.如权利要求7所述的任务执行方法,其中:
所述任务包括Prepared Statement;
所述目标任务模板包括所述Prepared Statement的Prepare;以及
所述任务请求为所述Prepare的SQL文本。
9.如权利要求7所述的任务执行方法,还包括:
生成所述目标任务模板的执行计划;
接收来自所述代理服务器的第二执行请求,所述第二执行请求包括所述目标任务模板的代理端标识和不包括所述目标任务模板的任务参数;以及
基于所述目标任务模板和所述任务参数执行所述执行计划。
10.如权利要求9所述的任务执行方法,其中,所述第二执行请求包括第一校验数据;
所述任务执行方法还包括:在接收到所述第二执行请求之后,所述执行服务器:
基于所述执行端标识检索到执行端候选任务模板;
获取所述执行端候选任务模板的第三校验数据;以及
确认所述第三校验数据同所述第一校验数据吻合。
11.如权利要求7所述的任务执行方法,其中,所述执行服务器为分布式数据库系统,包括多个分布式连接的子服务器,所述代理服务器为所述分布式数据库系统的代理服务器。
12.一种执行服务器,包括:
至少一个存储器,包括至少一组指令集;以及
至少一个处理器,同所述至少一个存储器通讯连接,当所述至少一个处理器运行所述至少一组指令集时,所述至少一个处理器执行如所述权利要求7-11中的任一任务执行方法。
13.一种任务执行方法,所述任务包括任务模板和不包含所述任务模板的任务参数,包括:
接收来自请求设备的所述任务的执行请求,所述执行请求包括关于所述任务模板的第一校验数据和所述任务模板的任务标识;
根据所述任务标识检索到候选任务模板;
获取关于所述候选任务模板的第二校验数据,其中,所述第二校验数据基于所述候选任务模板生成;以及
确定所述第二校验数据同所述第一校验数据吻合。
14.如权利要求13所述的任务执行方法,其中:
所述任务包括Prepared Statement;
所述任务参数包括所述Prepared Statement的Execute;以及
所述执行请求为所述Execute的SQL文本。
15.一种接收设备,包括:
至少一个存储器,包括至少一组指令集;以及
至少一个处理器,同所述至少一个存储器通讯连接,当所述至少一个处理器运行所述至少一组指令集时,所述至少一个处理器执行如所述权利要求13-14中的任一任务执行方法。
CN202010492617.5A 2020-06-03 2020-06-03 代理服务器、执行服务器、接收设备以及任务执行方法 Active CN111654542B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN202010492617.5A CN111654542B (zh) 2020-06-03 2020-06-03 代理服务器、执行服务器、接收设备以及任务执行方法
CN202310259376.3A CN116389490A (zh) 2020-06-03 2020-06-03 接收设备以及任务执行方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010492617.5A CN111654542B (zh) 2020-06-03 2020-06-03 代理服务器、执行服务器、接收设备以及任务执行方法

Related Child Applications (1)

Application Number Title Priority Date Filing Date
CN202310259376.3A Division CN116389490A (zh) 2020-06-03 2020-06-03 接收设备以及任务执行方法

Publications (2)

Publication Number Publication Date
CN111654542A true CN111654542A (zh) 2020-09-11
CN111654542B CN111654542B (zh) 2023-03-31

Family

ID=72343424

Family Applications (2)

Application Number Title Priority Date Filing Date
CN202010492617.5A Active CN111654542B (zh) 2020-06-03 2020-06-03 代理服务器、执行服务器、接收设备以及任务执行方法
CN202310259376.3A Pending CN116389490A (zh) 2020-06-03 2020-06-03 接收设备以及任务执行方法

Family Applications After (1)

Application Number Title Priority Date Filing Date
CN202310259376.3A Pending CN116389490A (zh) 2020-06-03 2020-06-03 接收设备以及任务执行方法

Country Status (1)

Country Link
CN (2) CN111654542B (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112214532A (zh) * 2020-10-13 2021-01-12 北京思特奇信息技术股份有限公司 一种业务数据的稽核方法及相关装置
CN113596097A (zh) * 2021-06-30 2021-11-02 联想(北京)有限公司 一种日志的传输方法及电子设备
CN115586957A (zh) * 2022-11-25 2023-01-10 阿里巴巴(中国)有限公司 一种任务调度系统、方法、装置及电子设备

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2002019097A1 (en) * 2000-09-01 2002-03-07 International Interactive Commerce, Ltd. System and method for collaboration using web browsers
CN102521408A (zh) * 2011-12-27 2012-06-27 北京人大金仓信息技术股份有限公司 一种通过jdbc接口访问平面文件的方法
CN104333512A (zh) * 2014-10-30 2015-02-04 北京思特奇信息技术股份有限公司 一种分布式内存数据库访问系统及方法
CN106293887A (zh) * 2015-05-21 2017-01-04 中兴通讯股份有限公司 数据库处理方法及装置
CN107766378A (zh) * 2016-08-22 2018-03-06 南京中兴新软件有限责任公司 请求信息的发送方法及装置、分布式数据库系统
CN109831435A (zh) * 2019-01-31 2019-05-31 广州银云信息科技有限公司 一种数据库操作方法、系统及代理服务器和存储介质

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2002019097A1 (en) * 2000-09-01 2002-03-07 International Interactive Commerce, Ltd. System and method for collaboration using web browsers
CN102521408A (zh) * 2011-12-27 2012-06-27 北京人大金仓信息技术股份有限公司 一种通过jdbc接口访问平面文件的方法
CN104333512A (zh) * 2014-10-30 2015-02-04 北京思特奇信息技术股份有限公司 一种分布式内存数据库访问系统及方法
CN106293887A (zh) * 2015-05-21 2017-01-04 中兴通讯股份有限公司 数据库处理方法及装置
CN107766378A (zh) * 2016-08-22 2018-03-06 南京中兴新软件有限责任公司 请求信息的发送方法及装置、分布式数据库系统
CN109831435A (zh) * 2019-01-31 2019-05-31 广州银云信息科技有限公司 一种数据库操作方法、系统及代理服务器和存储介质

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112214532A (zh) * 2020-10-13 2021-01-12 北京思特奇信息技术股份有限公司 一种业务数据的稽核方法及相关装置
CN113596097A (zh) * 2021-06-30 2021-11-02 联想(北京)有限公司 一种日志的传输方法及电子设备
CN113596097B (zh) * 2021-06-30 2023-08-18 联想(北京)有限公司 一种日志的传输方法及电子设备
CN115586957A (zh) * 2022-11-25 2023-01-10 阿里巴巴(中国)有限公司 一种任务调度系统、方法、装置及电子设备
CN115586957B (zh) * 2022-11-25 2023-04-14 阿里巴巴(中国)有限公司 一种任务调度系统、方法、装置及电子设备

Also Published As

Publication number Publication date
CN116389490A (zh) 2023-07-04
CN111654542B (zh) 2023-03-31

Similar Documents

Publication Publication Date Title
CN111654542B (zh) 代理服务器、执行服务器、接收设备以及任务执行方法
US10769228B2 (en) Systems and methods for web analytics testing and web development
US20200183932A1 (en) Optimizing write operations in object schema-based application programming interfaces (apis)
US20220035600A1 (en) API Specification Generation
US7873965B2 (en) Methods and apparatus for communicating changes between a user-interface and an executing application, using property paths
US7219351B2 (en) Multi-view conversion system and method for exchanging communications between heterogeneous applications
US10839038B2 (en) Generating configuration information for obtaining web resources
CN110287109B (zh) 协议接口的测试方法、装置、计算机设备及其存储介质
US20050203944A1 (en) Apparatus, system, and method for facilitating transactions between thin-clients and message format service (MFS)-based information management system (IMS) applications
US9967370B2 (en) OData enabled mobile software applications
WO2017156916A1 (zh) 数据访问方法和装置
US11263542B2 (en) Technologies for auto discover and connect to a rest interface
CN110569036A (zh) 一种前后端分离架构下的数据校验系统及其方法
CN112306879A (zh) 接口参数校验方法、装置、设备及存储介质
CN112637289A (zh) 一种微服务请求处理方法、设备及存储介质
Tody et al. Simple spectral access protocol version 1.1
CN114238374A (zh) 数据查询方法、装置、服务器和存储介质
JP4643900B2 (ja) チェックコード生成機能を有する入力チェックシステム
US8977718B2 (en) Website redevelopment wrapper
Tody et al. Ivoa recommendation: Simple spectral access protocol version 1.1
CN117033823A (zh) 基于浏览器url的传参方法、装置、电子设备及存储介质
CN113419996A (zh) 一种元数据文件转换的方法、系统、设备及介质
CN117827922A (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: 20231106

Address after: Room 302, 3rd Floor, Building 1, Yard 1, Danling Street, Haidian District, Beijing, 100000

Patentee after: Sasi Digital Technology (Beijing) Co.,Ltd.

Address before: 310000 801-11 section B, 8th floor, 556 Xixi Road, Xihu District, Hangzhou City, Zhejiang Province

Patentee before: Alipay (Hangzhou) Information Technology Co.,Ltd.

TR01 Transfer of patent right