CN115604331A - 一种数据的处理系统、方法以及装置 - Google Patents
一种数据的处理系统、方法以及装置 Download PDFInfo
- Publication number
- CN115604331A CN115604331A CN202110721122.XA CN202110721122A CN115604331A CN 115604331 A CN115604331 A CN 115604331A CN 202110721122 A CN202110721122 A CN 202110721122A CN 115604331 A CN115604331 A CN 115604331A
- Authority
- CN
- China
- Prior art keywords
- program code
- network device
- target
- program
- address
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 241
- 238000012545 processing Methods 0.000 title claims abstract description 62
- 230000008569 process Effects 0.000 claims abstract description 172
- 230000006870 function Effects 0.000 claims description 303
- 238000013507 mapping Methods 0.000 claims description 146
- 238000005538 encapsulation Methods 0.000 claims description 40
- 230000015654 memory Effects 0.000 claims description 40
- 238000003672 processing method Methods 0.000 claims description 23
- 238000005516 engineering process Methods 0.000 abstract description 9
- 238000010586 diagram Methods 0.000 description 26
- 238000013508 migration Methods 0.000 description 13
- 230000005012 migration Effects 0.000 description 13
- 230000003068 static effect Effects 0.000 description 13
- 238000013461 design Methods 0.000 description 11
- 238000004891 communication Methods 0.000 description 8
- 238000004590 computer program Methods 0.000 description 8
- 230000009286 beneficial effect Effects 0.000 description 6
- 230000001960 triggered effect Effects 0.000 description 5
- 230000005540 biological transmission Effects 0.000 description 4
- 238000004364 calculation method Methods 0.000 description 4
- 230000003993 interaction Effects 0.000 description 4
- 230000000694 effects Effects 0.000 description 3
- 230000004044 response Effects 0.000 description 3
- 238000013500 data storage Methods 0.000 description 2
- 238000002955 isolation Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000001052 transient effect Effects 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/133—Protocols for remote procedure calls [RPC]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44568—Immediately runnable code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
-
- 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/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
-
- 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/547—Remote procedure calls [RPC]; Web services
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/60—Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5017—Task decomposition
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/509—Offload
-
- 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/544—Remote
-
- 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/549—Remote execution
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer And Data Communications (AREA)
Abstract
本申请涉及计算机技术的程序代码领域中,公开了一种数据的处理系统、方法以及装置。第一网络设备向第二网络设备发送第一请求信息,第一请求消息中携带有与目标任务对应的第一进程上下文,第一进程上下文包括程序代码集合、第一指示信息和目标参数;第二网络设备根据第一指示信息,从程序代码集合包括的程序代码中确定第一起始行在程序代码集合中的位置,根据目标参数,以第一起始行作为起点,运行程序代码集合中的程序代码,以完成目标任务中的至少一个待执行子任务,目标参数为待执行子任务被执行时所需的参数;第一网络设备可以根据自己的真实需求来请求第二网络设备执行对应的任务,提高了本方案的实现灵活性。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及一种数据的处理系统、方法以及装置。
背景技术
随着大数据时代的来临,需要处理的数据量越来越大,而对数据进行存储的网络设备(也可以称为数据的存储节点)和对数据进行计算的网络设备(也可以称为数据的计算节点)往往是分离的,传统的做法是将存储节点的数据通过网络传输至计算节点,由计算节点对数据进行计算,但由于需要传输的数据量太大,通过网络搬移大数据仍旧代价过高。
为了解决上述问题,具体的,存储节点上可以预先配置至少一个任务所对应的程序代码,计算节点向存储节点发送请求消息,该请求消息用于指示需要调用的任务的目标类型,存储节点在接收到该请求消息后,执行该目标类型的任务。
但由于存储节点只能执行预先配置好的几种任务,也即计算节点仅能够请求存储节点执行预先配置好的几种任务,而不能够根据计算节点的需求来请求存储节点执行任意类型的任务。
发明内容
本申请提供了一种数据的处理系统、方法以及装置,第一网络设备可以根据自己的需求来请求第二网络设备执行对应的任务,提高了本方案的实现灵活性。
为解决上述技术问题,本申请提供以下技术方案:
第一方面,本申请提供一种数据的处理系统,可用于计算机技术的程序代码领域中,数据的处理系统包括第一网络设备和第二网络设备。其中,第一网络设备用于获取第一请求信息,并向第二网络设备发送第一请求信息;第一请求消息中携带有与目标任务对应的第一进程上下文。进一步地,第一进程上下文至少包括与整个目标任务对应的目标程序代码集合、寄存器段和数据段;若目标程序代码集合中的至少一行程序代码被执行,能够完成目标任务包括的至少一个待执行子任务,若整个目标程序代码集合被执行,能够完成该目标任务;寄存器段至少包括程序计数器PC寄存器中的值,PC寄存器中的值用于指示即将执行的程序代码的地址,也即第一进程上下文包括第一指示信息;目标程序代码集合包括的一行或多行程序代码包括至少一个变量,数据段用于存储目标程序代码集合中的静态变量的值,数据段中至少存储有为完成目标任务所需要的所有目标参数,也即与每个目标参数所对应的变量均为静态变量。第二网络设备用于接收第一请求消息,根据第一指示信息,从目标程序代码集合包括的至少一行程序代码中确定第一起始行在目标程序代码集合中的位置,第一起始行为第二网络设备执行目标程序代码集合中的程序代码时的起点;根据至少一个目标参数,以至少一行程序代码中的第一起始行作为起点,运行目标程序代码集合包括的至少一行程序代码,以完成目标任务包括的至少一个待执行子任务,目标参数为至少一个待执行子任务被执行时所需的参数。
本实现方式中,第一网络设备向第二网络设备发送第一请求信息,第一请求信息中携带有与目标任务对应的目标程序代码集合、第一指示信息和至少一个目标参数,第二网络设备根据第一指示信息,从目标程序代码集合中确定第一起始行在目标程序代码集合中的位置,并根据目标参数,以第一起始行作为起点运行目标程序代码集合中的至少一行程序代码以完成目标任务包括的至少一个子任务,目标参数为至少一个待执行子任务被执行时所需的参数;由于第一请求信息中携带的目标程序代码集合是能够反映第一网络设备的实际需求的,也即第一网络设备可以根据自己的真实需求来请求第二网络设备执行对应的任务,提高了本方案的实现灵活性。
在第一方面的一种可能实现方式中,第二网络设备还用于执行的目标程序代码,其中,目标程序代码包含于程序代码集合,目标程序代码用于指示第二网络设备执行报文封装操作,以得到第二请求消息,并向第三网络设备发送第二请求消息。进一步地,第二请求消息包括第二进程上下文,第二进程上下文是一种进程上下文;由于第二网络设备已经通过进程执行了目标程序代码集合中的至少一行程序代码,第二进程上下文至少包括目标程序代码集合、寄存器段、与前述进程相关的所有栈的内容和数据段。进一步地,寄存器段保存了目标任务被中断时,与执行该目标任务相关的所有物理寄存器的值,以便于当该目标任务在某个网络设备上恢复执行时,将寄存器段中的值恢复至前述网络设备的物理寄存器中,寄存器段不仅包括PC寄存器的值,也即第二进程上下文不仅包括第二指示信息,第二指示信息用于指示目标程序代码集合包括的至少一行程序代码中第二起始行在目标程序代码集合中的位置,第二起始行为第三网络设备执行目标程序代码集合中的程序代码时的起点,第二起始行和第一起始行在目标程序代码集合中的位置不同。第二网络设备通过进程运行目标程序代码集合中的至少一行程序代码从而实现了至少一个函数,栈是伴随着进程运行函数的过程自动分配并释放的,栈中的内容指的是前述栈中的内容。数据段用于存储目标程序代码集合中的静态变量的值,则数据段可以携带有第二网络设备运行至少一行程序代码的过程中,所生成的目标程序代码集合中的静态变量的值。第二网络设备生成的目标程序代码集合中的静态变量的值、寄存器段中的值以及与进程相关的所有栈的内容可以统称为中间结果,换一种说法,第二进程上下文中至少携带有目标程序代码集合、第二指示信息和至少一个中间结果,中间结果为第二网络设备在运行至少一行程序代码的过程中产生的中间数据。
本实现方式中,由于第二请求消息中封装了第二进程上下文,第二进程上下文目标程序代码集合、第二指示信息和至少一个中间结果,也即通过第二进程上下文可以得知目标程序代码集合已经运行到了哪一行,以及第二网络设备在运行至少一行程序代码的过程中所产生的中间数据,从而第二网络设备在将第二请求消息发送给其他网络设备之后,其他网络设备可以继续执行目标任务中的下一个待执行子任务,从而实现了多个网络设备之间流水式的互相协助,以完成一个完整的目标任务。
在第一方面的一种可能实现方式中,目标程序代码可以表现为迁移函数,第二网络设备调用该迁移函数后,触发第二网络设备重新执行报文封装操作,以得到第二请求消息,并向第三网络设备发送第二请求消息的过程。或者,目标程序代码中包括的不是迁移函数,而是直接与“重新执行报文封装操作,并向第三网络设备发送该得到的第二请求消息”这一迁移操作对应的代码,也即当第二网络设备执行该目标程序代码时,直接触发执行该迁移操作。
在第一方面的一种可能实现方式中,在第一请求消息中携带第一映射关系的情况下,第二网络设备在运行目标程序代码集合中的至少一行程序代码的过程中,在第二网络设备根据第一映射关系,确定需要访问的数据位于远端的网络设备上的情况下,也可以触发重新执行报文封装操作,以将第二请求消息发送至存储前述需要访问的数据的网络设备上。也即在第二网络设备根据第一映射关系,确定需要访问的数据位于远端的网络设备上的共享内存中的情况下,也可以触发重新执行报文封装操作,需要说明的是,第二网络设备可能需要访问第一网络设备的共享内存,也有可能需要访问除第一网络设备和第二网络设备之外的其他网络设备的共享内存,具体需要访问的数据位于哪个远端的网络设备上应当结合实际应用场景的需要来灵活确定。
在第一方面的一种可能实现方式中,第一请求信息还包括第一映射关系,目标程序代码集合、第一指示信息、至少一个目标参数和第一映射关系均归属于同一程序虚拟机,目标程序代码集合归属于程序虚拟机的代码段,第一指示信息归属于程序虚拟机的寄存器段,目标参数归属于程序虚拟机的数据段;第一映射关系用于存储至少一个第一地址与至少一个第二地址之间的一一对应的映射关系。至少一个第一地址可以包括程序虚拟机中的数据段、代码段、寄存器段以及栈段在程序虚拟机中的虚拟地址,对应的,至少一个第二地址可以包括程序虚拟机中的数据段、代码段、寄存器段以及栈段在存储数据段的网络设备中的存储地址。进一步地,网络设备中的存储地址指的可以为网络设备中的虚拟地址,也可以为网络设备中的物理地址。
本实现方式中,程序代码集合、第一指示信息、至少一个目标参数和第一映射关系被封装于同一程序虚拟机中,且第一映射关系用于指示程序虚拟机中的数据在程序虚拟机中的虚拟地址,和程序虚拟机中的数据在所存储的网络设备中的存储地址,也即某个网络设备在通过进程运行程序代码集合中程序代码时,能够与网络设备本地运行的进程之间实现安全隔离。
在第一方面的一种可能实现方式中,方法应用于远程过程调用RPC场景中,则目标任务可以包括至少一个RPC任务,如果包含两个或两个以上RPC任务,目标程序代码集合能够暗含至少两个RPC任务中不同的RPC任务的执行顺序。RPC任务泛指由当前网络设备请求远端的网络设备执行的任务;由于数据处理系统中的各个网络设备是根据PC寄存器的指示,顺序执行目标程序代码集合中的程序代码,因此,目标程序代码集合能够暗含至少两个RPC任务中不同的RPC任务的执行顺序。
本实现方式中,提供了本方案的具体应用场景,提高了本方案与具体应用场景的结合度。
在第一方面的一种可能实现方式中,若目标程序代码集合包括的为目标中间语言形式的程序代码,则第一请求消息还包括第三指示信息,第三指示信息用于指示目标中间语言的类型。进一步地,第三指示信息可以包括Arch字段和版本(version)字段。Arch字段中的值用于指示目标程序代码集合采用的是哪一种类型的中间语言,版本字段中的值用于指示目标程序代码集合采用的中间语言的版本号。
本实现方式中,由于第一网络设备和第二网络设备可能为不同的机器,目标程序代码集合采用的为目标中间语言的形式,从而某个网络设备在运行目标程序代码集合中的程序代码时,可以编译为适合自身类型的机器语言,从而本申请实施例提供的方案可以兼容各种类型的网络设备,有利于扩展本方案的应用场景。
在第一方面的一种可能实现方式中,目标程序代码集合包括与内联函数对应的程序代码,内联函数指的是函数体位于目标程序代码集合中的函数。
本实现方式中,由于内联函数为函数体位于目标程序代码集合中的函数,则可以直接根据目标程序代码集合中的程序代码运行内联函数,不再需要确定函数的本地调用地址,也不再需要从本地调用与函数体对应的程序代码,有利于提高整个目标任务执行过程的效率;且可以通过将函数体直接写入目标程序代码集合的方式,来自行定义函数,也即扩展了能够执行的函数的类型,有利于进一步提高本方案的灵活性。
在第一方面的一种可能实现方式中,目标程序代码集合包括与非内联函数对应的程序代码,非内联函数指的是函数体不在目标程序代码集合中的函数。第一网络设备还用于获取与目标非内联函数的函数名称对应的目标非内联函数的函数编号;其中,第一请求消息中携带有目标非内联函数的函数编号,目标非内联函数为与目标程序代码集合对应的至少一个非内联函数中的一个。第二网络设备具体用于根据目标非内联函数的函数编号,获取目标非内联函数在第二网络设备中的调用地址,以运行目标非内联函数。
本实现方式中,由于在一般情况下,函数编号比函数名称更为简单,利用非内联函数的函数编号来查找函数的调用地址,相对于直接利用非内联函数的函数名称来查找函数的调用地址,能够提高非内联函数的调用效率,进而有利于提高整个目标任务的执行效率。
在第一方面的一种可能实现方式中,第一网络设备还用于根据目标非内联函数的函数名称和第二映射关系,获取目标非内联函数的函数编号;其中,第一请求消息中携带有目标非内联函数的函数编号,目标非内联函数为与程序代码集合对应的至少一个非内联函数中的一个,第二映射关系包括目标非内联函数的函数名称与目标非内联函数的函数编号之间的映射关系。第二网络设备具体用于根据目标非内联函数的函数编号和第三映射关系,获取目标非内联函数在第二网络设备中的调用地址,以运行目标非内联函数;其中,第三映射关系包括目标非内联函数的函数编号和目标非内联函数在第二网络设备中的调用地址之间的映射关系。
在第一方面的一种可能实现方式中,第一网络设备上可以预先配置有非内联函数的函数编号的生成规则,则第一网络设备可以根据目标非内联函数的函数名称和预先配置的规则,生成目标非内联函数的函数编号。第二网络设备具体用于根据目标非内联函数的函数编号和第三映射关系,获取目标非内联函数在第二网络设备中的调用地址,以运行目标非内联函数;其中,第三映射关系包括目标非内联函数的函数编号和目标非内联函数在第二网络设备中的调用地址之间的映射关系。
第二方面,本申请提供一种数据处理方法,可用于计算机技术的程序代码领域中,方法可以包括:第二网络设备接收第一请求消息,第一请求消息中携带有与目标任务对应的第一进程上下文,第一进程上下文包括程序代码集合、第一指示信息和至少一个目标参数,程序代码集合包括至少一行程序代码;第二网络设备根据第一指示信息,从程序代码集合包括的至少一行程序代码中确定第一起始行在程序代码集合中的位置;根据至少一个目标参数,以至少一行程序代码中的第一起始行作为起点,运行程序代码集合包括的至少一行程序代码,以完成目标任务包括的至少一个待执行子任务,目标参数为至少一个待执行子任务被执行时所需的参数。
在本申请第二方面中,第二网络设备还用于执行第一方面中第二网络设备执行的其它步骤,第二方面的各种可能实现方式的具体实现步骤,以及每种可能实现方式所带来的有益效果,均可以参考第一方面各种可能的实现方式中的描述,此处不再一一赘述。
第三方面,本申请提供一种数据处理方法,可用于计算机技术的程序代码领域中,方法可以包括:第一网络设备获取第一请求信息,向第二网络设备发送第一请求信息。其中,第一请求消息中携带有与目标任务对应的第一进程上下文,第一进程上下文包括程序代码集合、第一指示信息和至少一个目标参数,若程序代码集合中的至少一行程序代码被执行,能够完成目标任务包括的至少一个待执行子任务,第一指示信息用于指示程序代码集合包括的至少一行程序代码中的第一起始行在程序代码集合中的位置,目标参数为至少一个待执行子任务被执行时所需的参数。
在本申请第三方面中,第一网络设备还用于执行第一方面中第一网络设备执行的其它步骤,第三方面的各种可能实现方式的具体实现步骤,以及每种可能实现方式所带来的有益效果,均可以参考第一方面各种可能的实现方式中的描述,此处不再一一赘述。
第四方面,本申请提供了一种数据处理装置,可用于计算机技术的程序代码领域中。数据处理装置可以包括:接收模块,用于接收第一请求消息,第一请求消息中携带有与目标任务对应的第一进程上下文,第一进程上下文包括程序代码集合、第一指示信息和至少一个目标参数,程序代码集合包括至少一行程序代码;确定模块,用于根据第一指示信息,从程序代码集合包括的至少一行程序代码中确定第一起始行在程序代码集合中的位置;运行模块,用于根据至少一个目标参数,以至少一行程序代码中的第一起始行作为起点,运行程序代码集合包括的至少一行程序代码,以完成目标任务包括的至少一个待执行子任务,目标参数为至少一个待执行子任务被执行时所需的参数。
在本申请第四方面中,数据处理装置还用于执行第一方面中第二网络设备执行的其它步骤,第四方面的各种可能实现方式的具体实现步骤,以及每种可能实现方式所带来的有益效果,均可以参考第一方面中各种可能的实现方式中的描述,此处不再一一赘述。
第五方面,本申请提供了一种数据处理装置,可用于计算机技术的程序代码领域中。数据处理装置包括:获取模块,用于获取第一请求信息;发送模块,用于向第二网络设备发送第一请求信息;其中,第一请求消息中携带有与目标任务对应的第一进程上下文,第一进程上下文包括程序代码集合、第一指示信息和至少一个目标参数,若程序代码集合中的至少一行程序代码被执行,能够完成目标任务包括的至少一个待执行子任务,第一指示信息用于指示程序代码集合包括的至少一行程序代码中的第一起始行在程序代码集合中的位置,目标参数为至少一个待执行子任务被执行时所需的参数。
在本申请第五方面中,数据处理装置还用于执行第一方面中第一网络设备执行的其它步骤,第五方面的各种可能实现方式的具体实现步骤,以及每种可能实现方式所带来的有益效果,均可以参考第一方面中各种可能的实现方式中的描述,此处不再一一赘述。
第六方面,本申请提供了一种网络设备,可以包括处理器,处理器和存储器耦合,存储器存储有程序指令,当存储器存储的程序指令被处理器执行时实现上述第一方面所述的方法中第一网络设备执行的步骤,或者,当存储器存储的程序指令被处理器执行时实现上述第一方面所述的方法中第二网络设备执行的步骤。
第七方面,本申请提供了一种计算机可读存储介质,该计算机可读存储介质中存储有计算机程序,当该计算机程序在计算机上运行时,使得计算机执行上述第一方面所述的方法中第一网络设备执行的步骤,或者,使得计算机执行上述第一方面所述的方法中第二网络设备执行的步骤。
第八方面,本申请提供了一种计算机程序,当该计算机程序在计算机上运行时,使得计算机执行上述第一方面所述的方法中第一网络设备执行的步骤,或者,使得计算机执行上述第一方面所述的方法中第二网络设备执行的步骤。
第九方面,本申请提供了一种电路系统,所述电路系统包括处理电路,所述处理电路配置为执行上述各个方面所述的方法。
第十方面,本申请提供了一种芯片系统,该芯片系统包括处理器,用于支持实现上述方面中所涉及的功能,例如,发送或处理上述方法中所涉及的数据和/或信息。在一种可能的设计中,所述芯片系统还包括存储器,所述存储器,用于保存服务器或通信设备必要的程序指令和数据。该芯片系统,可以由芯片构成,也可以包括芯片和其他分立器件。
附图说明
图1为本申请实施例提供的数据的处理方法的一种流程示意图;
图2为本申请实施例提供的数据的处理方法的一种流程示意图;
图3为本申请实施例提供的数据处理方法中的程序代码的一种结构示意图;
图4为本申请实施例提供的数据处理方法中第一请求消息的封装内容的两种示意图;
图5为本申请实施例提供的数据处理方法中第一请求消息的封装内容的一种示意图;
图6为本申请实施例提供的数据处理方法中运行非内联函数的一种示意图;
图7为本申请实施例提供的数据处理方法的另一种流程示意图;
图8为本申请实施例提供的数据处理方法中触发第二网络设备进行报文封装的一种流程示意图;
图9为本申请实施例提供的数据处理方法的又一种流程示意图;
图10为本申请实施例所带来的有益效果的一种示意图;
图11为本申请实施例提供的数据处理系统的一种结构示意图;
图12为本申请实施例提供的数据处理系统的另一种结构示意图;
图13为本申请实施例提供的数据处理装置的一种结构示意图;
图14为本申请实施例提供的数据处理装置的另一种结构示意图;
图15为本申请实施例提供的数据处理装置的另一种结构示意图;
图16为本申请实施例提供的网络设备的一种结构示意图。
具体实施方式
本申请的说明书和权利要求书及上述附图中的术语“第一”、第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的术语在适当情况下可以互换,这仅仅是描述本申请的实施例中对相同属性的对象在描述时所采用的区分方式。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,以便包含一系列单元的过程、方法、系统、产品或设备不必限于那些单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它单元。
下面结合附图,对本申请的实施例进行描述。本领域普通技术人员可知,随着技术的发展和新场景的出现,本申请实施例提供的技术方案对于类似的技术问题,同样适用。
本申请实施例可以应用于采用分布式的数据处理系统的应用场景中,前述多种应用场景可以包括采用远程过程调用(remote procedure call,RPC)协议的应用场景,也可以包括不采用RPC协议的应用场景。其中,RPC协议是一种通过网络向远端的计算机设备请求服务,而不需要了解底层网络技术的协议。RPC协议一般采用的是客户机/服务器模式,客户机向远端的服务器发送携带有参数的请求信息,远端的服务器在接收到请求消息后,根据请求信息中携带的参数,执行任务以得到计算结果。
整个数据处理系统包括至少两个网络设备,前述至少两个网络设备包括第一网络设备和第二网络设备,第一网络设备和第二网络设备之间建立有通信连接。为了对本申请实施例的应用场景有更直观地了解,作为示例,例如整个数据处理系统包括网络设备1、网络设备2和网络设备3,网络设备1想要获取年龄大于或等于60岁的消费者的历史消费记录,也即目标任务为获取年龄大于或等于60岁的消费者的历史消费记录,网络设备2中存储有每个消费者的标识、年龄和性别,网络设备3中存储有每个消费者的标识、购买的商品名称以及每个商品的购买量。则网络设备1需要先通过网络设备2获取年龄大于或等于60岁的消费者的标识;进而根据年龄大于或等于60岁的消费者的标识,通过网络设备3获取年龄大于或等于60岁的消费者的历史消费记录,网络设备3将年龄大于或等于60岁的消费者的历史消费记录发送给网络设备1,以完成了整个目标任务。应理解,前述对应用场景的举例仅为方便理解本方案,不用于限定本方案。
在上述应用场景中,当前网络设备(也即第一网络设备)均可能会请求远端的网络设备(也即第二网络设备)执行至少一个任务,为了能够使第一网络设备根据自己的真实需求来请求第二网络设备执行任意类型的任务,本申请实施例提供了一种数据的处理方法,参阅图1,图1为本申请实施例提供的数据的处理方法的一种流程示意图。整个数据的处理系统中包括第一网络设备100和第二网络设备200,第一网络设备100和第二网络设备200之间建立有通信连接。具体的,A1、第一网络设备100获取第一请求消息,第一请求消息中携带有与目标任务对应的第一进程上下文,第一进程上下文包括目标程序代码集合、第一指示信息和至少一个目标参数,目标程序代码集合包括至少一行程序代码。A2、第一网络设备100向第二网络设备200发送第一请求消息,对应的,第二网络设备200接收到第一网络设备100发送的第一请求消息。A3、第二网络设备200根据第一指示信息,从至少一行程序代码中确定第一起始行程序代码在目标程序代码集合中的位置。A4、第二网络设备200根据至少一个目标参数,以至少一行程序代码中的第一起始行作为起点,运行目标程序代码集合包括的至少一行程序代码,以完成目标任务包括的至少一个待执行子任务,目标参数为至少一个待执行子任务被执行时所需的参数;由于第一请求信息中携带的程序代码集合是能够反映第一网络设备的实际需求的,也即第一网络设备可以根据自己的真实需求来请求第二网络设备执行对应的任务,提高了本方案的实现灵活性。
更具体的,结合图2对本申请实施例进行详细描述,图2为本申请实施例提供的数据的处理方法的一种流程示意图,本申请实施例提供的数据的处理方法可以包括:
201、第一网络设备获取目标程序代码集合。
本申请实施例中,第一网络设备需要获取与整个目标任务对应的程序代码集合。其中,目标程序代码集合中包括多行程序代码,目标任务中包括至少一个待执行子任务;若目标程序代码集合中的至少一行程序代码被执行,能够完成目标任务包括的至少一个待执行子任务,若整个目标程序代码集合被执行,能够实现该目标任务。作为示例,例如目标任务为提高图片亮度、给图片增加0008号滤镜、将图片中用户的眼睛放大以及对图片中的用户进行瘦脸,则一个待执行子任务为提高图片亮度,另一个待执行子任务为给图片增加0008号滤镜,另一个待执行子任务为将图片中用户的眼睛放大,另一个待执行子任务为对图片中的用户进行瘦脸,应理解,此处举例仅为方便理解本方案,不用于限定本方案。
可选地,若本申请实施例应用于RPC应用场景中,则目标任务可以包括至少一个RPC任务,如果包含两个或两个以上RPC任务。RPC任务泛指由当前网络设备请求远端的网络设备执行的任务;由于数据处理系统中的各个网络设备是根据程序计数器(programcounter,PC)寄存器的指示,顺序执行目标程序代码集合中的程序代码,因此,目标程序代码集合还能够暗含至少两个RPC任务中不同的RPC任务的执行顺序。本申请实施例中,提供了本方案的具体应用场景,提高了本方案与具体应用场景的结合度。
针对目标程序代码集合的格式,若第一网络设备中采用的是Linux系统,则目标程序代码集合具体可以采用可执行可链接文件格式(Executable and Linkable Format,ELF);若第一网络设备中采用的是Windows系统,则目标程序代码集合具体可以采用PE文件格式。需要说明的是,目标程序代码集合还可以采用其他类型的文件格式,本申请实施例的后续实施例中,均仅以目标程序代码集合采用可执行可链接文件格式(后续简称为“ELF文件”)为例进行说明,当目标程序代码集合采用其他文件格式时,可参阅理解,本申请实施例中不再进行赘述。
进一步地,目标程序代码集合包括的可以为中间语言(intermediate language,IL)形式的程序代码,或者,目标程序代码集合包括的也可以为机器语言形式的程序代码。其中,与中间语言相对应的概念为机器语言,用户编写的原始程序代码能够被翻译成中间语言形式的程序代码,当某一网络设备运行程序代码时,中间语言形式的程序代码会被编译成机器语言,机器语言也就是机器能够识别的二进制。作为示例,例如中间语言可以为扩展伯克利包过滤器(extended berkeley packet filter,eBPF)字节码(byte code)、中间语言P4、网络编程语言(network programming language,NPL)或其他类型的中间语言等,此处不做穷举。
具体的,针对目标程序代码集合的获取方式。在一种实现方式中,第一网络设备可以配置有显示屏幕和输入设备(例如键盘),用户可以通过键盘输入与目标任务对应的原始程序代码集合,对应的,第一网络设备通过显示屏幕展示用户编写的原始程序代码集合。
进一步地,第一网络设备可以直接将用户编写的多行原始程序代码编译成机器语言形式的程序代码集合,并将机器语言形式的程序代码集合确定为目标程序代码集合;或者,第一网络设备可以利用通过中间语言编译器对用户输入的多行原始程序代码进行编译,以得到中间语言形式的多行程序代码,从而得到了目标程序代码。其中,中间语言编译器具体可以采用底层虚拟机(low level virtual machine,LLVM)或其他类型的中间语言编译器等,此处不做穷举。
在另一种实现方式中,第一网络设备可以接收其他网络设备发送的与目标任务对应的原始程序代码集合。进一步地,第一网络设备可以将与目标任务对应的原始程序代码集合编译成机器语言形式的多行程序代码,将机器语言形式的多行程序代码确定为目标程序代码集合;或者,第一网络设备对与目标任务对应的原始程序代码集合进行编译,以得到中间语言形式的多行程序代码,将中间语言形式的多行程序代码确定为目标程序代码。
在另一种实现方式中,第一网络设备可以接收其他网络设备发送的与目标任务对应的中间语言形式的程序代码集合,则第一网络设备可以直接将与目标任务对应的中间语言形式的程序代码集合确定为该目标程序代码集合。
在另一种实现方式中,第一网络设备可以接收其他网络设备发送的与目标任务对应的机器语言形式的程序代码集合,则第一网络设备可以直接将机器语言形式的程序代码集合确定为目标程序代码。
202、第一网络设备获取第一进程上下文。
本申请实施例中,第一网络设备需要获取与目标程序代码集合对应的第一进程上下文。
针对第一进程上下文中包括的内容。在一种情况中,第一网络设备未运行目标程序代码集合中的程序代码,第一进程上下文至少包括目标程序代码集合、寄存器段和数据段。具体的,第一网络设备调用库函数来分析目标程序代码集合,以生成与目标程序代码集合对应的第一进程上下文。作为示例,例如目标程序代码集合采用的为ELF文件,则第一网络设备调用ELF库函数来分析该ELF文件,以创建ELF上下文(也即第一进程文件的一种示例)等,应理解,此处举例仅为方便理解本方案,不用于限定本方案。
进一步地,寄存器段包括与执行上述进程有关的寄存器(register)中的值;在第一网络设备未运行目标程序代码集合中的程序代码的情况下,则寄存器段可以仅包括程序计数器(program counter,PC)寄存器中的值,PC寄存器用于指示即将执行的程序代码的地址。PC寄存器中的值在本申请实施例中作为第一指示信息的一种具体实现方式,第一指示信息用于指示目标程序代码集合包括的至少一行程序代码中的第一起始行在程序代码集合中的位置,第一起始行为第二网络设备执行目标程序代码集合中的程序代码时的起点。
目标程序代码集合包括的一行或多行程序代码包括至少一个变量,数据段用于存储目标程序代码集合中的静态变量的值,前述静态变量包括全局静态变量和局部静态变量。在第一网络设备未运行目标程序代码集合中的程序代码的情况下,数据段中存储的为实现整个目标任务所需要的所有目标参数,也即与每个目标参数所对应的变量均为静态变量。
其中,为实现整个目标任务所需要的所有目标参数,也可以理解为每个待执行子任务被执行时所需的目标参数。目标参数指的是用户输入的参数,不包括网络设备在运行目标程序代码集合中的程序代码的过程中所产生的值。作为示例,例如目标任务为从甲的账户转账给乙的账户10万元,则获取到的至少一个目标参数包括甲的账户号码、乙的账户号码以及转账金额10万元,应理解,此处举例仅为方便理解本方案,不用于限定本方案。
更进一步地,针对与整个目标任务对应的所有目标参数的获取方式。在一种情况下,目标程序代码集合中可以携带有与整个目标任务对应的所有目标参数,则第一网络设备可以从目标程序代码集合中获取到与整个目标任务对应的所有目标参数,也即获取到至少一个待执行子任务被执行时所需的目标参数。
在另一种情况下,目标程序代码集合中不携带目标参数,则在执行步骤202之前,第一网络设备还需要获取与目标任务对应的至少一个目标参数。具体的,在一种实现方式中,第一网络设备可以配置有输入设备,前述输入设备包括但不限于键盘、触摸屏或其他输入设备等,第一网络设备可以在运行目标程序代码集合中的至少一行程序代码的过程中,通过该输入设备获取用户输入的至少一个目标参数;或者,第一网络设备也可以接收其他网络设备发送的至少一个目标参数等,此处不做限定。
通过上述描述可知,在第一网络设备未运行目标程序代码集合中的程序代码的情况下,第一进程上下文至少可以包括目标程序代码集合、第一指示信息和与目标任务对应的至少一个目标参数。
针对第一进程上下文中包括的内容,在另一种情况下,若第一网络设备通过进程运行目标程序代码集合中的至少一行程序代码以完成目标任务中包括的至少一个待执行子任务,第一进程上下文至少包括目标程序代码集合、寄存器段、与执行前述进程有关的栈(stack)中的内容和数据段。
其中,对于目标程序代码集合和数据段的内容可参阅上述描述,此处不做赘述。
在第一网络设备通过进程运行目标程序代码集合中的至少一行程序代码的情况下,寄存器段不仅包括PC寄存器中的值,也即寄存器段不仅包括第一指示信息。寄存器段保存了前述进程在运行程序代码的过程中存储于用户寄存器中的值和存储于系统寄存器中的值,PC寄存器就属于系统寄存器中的一种。寄存器段包括目标任务被中断时,与执行该目标任务相关的所有物理寄存器的值,以便于当该目标任务在某个网络设备上恢复执行时,将寄存器段中的值恢复至前述网络设备的物理寄存器中。作为示例,例如用户寄存器包括用于存储函数参数的寄存器、用于存储函数返回值的寄存器和栈帧指针(frame pointer,FP)寄存器、用于存储变量的值的寄存器等;系统寄存器包括用于保存与程序代码对应的函数的返回地址的寄存器和用于存储与前述进程对应的页表基址的寄存器等等,需要说明的是,不同的网络设备的处理器中的寄存器的个数、名称等也会存在差异,也即具体涉及哪些类型的寄存器需要结合第一网络设备在运行至少一行程序代码的过程中所使用到的寄存器、网络设备的处理器体系结构或其他因素等来确定,此处举例仅为方便理解本方案,不用于限定本方案。
目标程序代码集合与至少一个函数对应,也即第一网络设备通过进程运行目标程序代码集合中的至少一行程序代码从而实现了至少一个函数,与执行前述进程有关的栈(stack)是伴随着进程运行函数的过程自动分配并释放的。作为示例,例如与执行前述进程有关的栈中的内容包括调用者传递给前述函数的参数、与前述函数对应的局部变量的值等等,需要说明的是,栈中包括的内容和布局因网络设备的处理器体系结构和函数调用约定的不同而发送变化,具体栈中包括哪些内容应该结合实际情况确定,此处不做限定。
通过上述描述可知,在第一网络设备运行目标程序代码集合中至少一行程序代码的情况下,第一进程上下文不仅包括目标程序代码集合、第一指示信息和与目标任务对应的至少一个目标参数,还包括第一网络设备通过进程来运行目标程序代码集合中至少一行程序代码的过程中生成的数据。
更进一步地,目标程序代码集合包括与至少一个函数对应的程序代码,前述函数可以仅包括内联函数,也可以仅包括非内联函数,前述函数也可以同时包括内联函数和非内联函数;内联函数指的是函数体位于目标程序代码集合中的函数,非内联函数指的是函数体不在目标程序代码集合中的函数。
本申请实施例中,由于内联函数为函数体位于目标程序代码集合中的函数,则可以直接根据目标程序代码集合中的程序代码运行内联函数,不再需要确定函数的本地调用地址,也不再需要从本地调用与函数体对应的程序代码,有利于提高整个目标任务执行过程的效率;且可以通过将函数体直接写入目标程序代码集合的方式,来自行定义函数,也即扩展了能够执行的函数的类型,有利于进一步提高本方案的灵活性。
可选地,若目标程序代码集合中包含与非内联函数对应的程序代码,则第一进程上下文中还可以包括符号表和重定向段。其中,通过分析符号表和重定向段至少能够提取到如下信息:目标程序代码集合中所有非内联函数的符号以及与每个非内联函数对应的程序代码在目标程序代码集合中的指令偏移量,非内联函数的符号也可以称为非内联函数的函数名称,与非内联函数对应的程序代码在目标程序代码集合中的指令偏移量用于指示该非内联函数对应的程序代码在目标程序代码集合中的调用位置。
可选地,若目标程序代码集合中包含与一个或多个非内联函数对应的程序代码,第一网络设备还可以获取与前述一个或多个非内联函数中每个非内联函数的函数名称对应的函数编号,目标非内联函数的函数编号会携带于第一请求信息中。
具体的,针对一个或多个非内联函数中的任意一个非内联函数(为方便描述,后续均称为“目标非内联函数”)的函数编号的获取过程,在一种实现方式中,第一网络设备上可以预先配置有第二映射关系,第二映射关系用于指示多个非内联函数的函数名称和多个非内联函数的函数编号之间的一一映射关系,前述多个非内联函数可以包括第一网络设备的函数库中的所有函数,也即第二映射关系包括目标非内联函数的函数名称和目标非内联函数的函数编号之间的映射关系。从而第一网络设备可以根据目标非内联函数的函数名称和第二映射关系,获取到目标非内联函数的函数编号。
在另一种实现方式中,第一网络设备上可以预先配置有非内联函数的函数编号的生成规则,则第一网络设备可以根据目标非内联函数的函数名称和预先配置的规则,生成目标非内联函数的函数编号。
第一网络设备在获取到目标非内联函数的函数编号后,可以根据第一进程上下文中的符号表和重定向段,确定与目标非内联函数对应的程序代码在目标程序代码集合中的目标指令偏移量,也即确定与目标非内联函数对应的程序代码在目标程序代码集合中的调用位置。第一网络设备将目标非内联函数的函数编号写入与目标非内联函数对应的程序代码中。
为了更直观地理解本方案,请参阅图3,图3为本申请实施例提供的数据处理方法中的程序代码的一种结构示意图,图3中如下以目标程序代码集合采用的为中间语言形式的程序代码为例,如图3所示,一行程序代码可以包括操作符(opcode)字段、目标寄存器(dst reg)字段、源寄存器(src reg)字段、跳转偏移量(offset)字段和中间标识(immediate)字段,目标非内联函数的函数编号被写入到中间标识字段中。进一步地,与程序代码对应的每一条指令都有一个操作符,操作符用于指示该指令应该进行什么形式的操作;目标寄存器代表用于存放目标操作数的寄存器;源寄存器代表用于存储源操作数的寄存器。当前述指令为跳转指令时,跳转偏移量字段用于指示下一行待执行程序代码与正在执行的程序代码之间的距离。当前述指令为运算指令时,中间标识字段中用于存储立即数;当前述指令为调用非内联函数的指令时,中间标识字段中用于存储非内联函数的编号,需要说明的是,图3中仅以一行中间语言形式的程序代码为例,图3中的示例仅为方便理解本方案,不用于限定本方案。
需要说明的是,若第一网络设备会执行目标程序代码集合中的至少一行程序代码,则第一网络设备可以在开始执行目标程序代码集合中的至少一行程序代码之前,先将与目标程序代码集合对应的每个非内联函数的函数编号写入与非内联函数对应的程序代码中。
203、第一网络设备生成第一请求消息,第一请求消息中携带有与目标任务对应的第一进程上下文,第一进程上下文包括程序代码集合、第一指示信息和至少一个目标参数,若程序代码集合中的至少一行程序代码被执行,能够完成目标任务包括的至少一个待执行子任务,第一指示信息用于指示程序代码集合包括的至少一行程序代码中的第一起始行在程序代码集合中的位置,目标参数为至少一个待执行子任务被执行时所需的参数。
本申请实施例中,第一网络设备在获取到第一进程上下文后,需要执行报文封装操作,也即将步骤202中获取到第一进程上下文封装成报文的形式,以生成第一请求消息,第一请求消息具体可以表现为一个或多个报文,对于第一进程上下文的介绍可参阅上述步骤202中的描述,此处不做赘述。
需要说明的是,若第一网络设备将与目标程序代码集合对应的每个非内联函数的函数编号写入到程序代码中,则在执行报文封装的过程中,第一网络设备不需要将符号表和重定向段封装到报文中。若第一网络设备没有将与目标程序代码集合对应的每个非内联函数的函数编号写入到程序代码中,则在执行报文封装的过程中,第一网络设备需要将目标程序代码集合、符号表和重定向段都封装到报文中。
为更直观地理解本方案,请参阅图4,图4为本申请实施例提供的数据处理方法中第一请求消息的封装内容的两种示意图。图4包括(a)和(b)两个子示意图,图4的(a)子示意图和图4的(b)子示意图均以第一网络设备已经将与目标程序代码集合对应的每个非内联函数的函数编号写入到程序代码中为例。先参阅图4的(a)子示意图,图4的(a)子示意图,代表在第一网络设备未执行目标程序代码集合中的程序代码的情况下,第一请求消息中包括的第一进程上下文的内容。第一进程上下文包括寄存器段、代码段和数据段,寄存器段中存储有PC寄存器的值(也即第一指示信息),代码段中存储有目标程序代码集合,数据段中存储有与目标任务对应的所有目标参数。
继续参阅图4的(b)子示意图,代表在第一网络设备通过一个或多个目标进程执行目标程序代码集合中的至少一行程序代码的情况下,第一请求消息中包括的第一进程上下文的内容。第一进程上下文包括寄存器段、栈中的内容、代码段和数据段,寄存器段包括与目标进程运行程序代码的过程中相关的所有寄存器中的值(其中包括PC寄存器的值);栈中的内容包括与目标进程运行程序代码的过程中相关的所有栈中的内容;代码段中存储有目标程序代码集合;数据段用于存储目标程序代码集合中静态变量的值,其中包括与至少一个待执行子任务对应的目标参数,还包括目标进程运行程序代码的过程中产生的静态变量的值,应理解,图4中的示例仅为方便理解本方案,不用于限定本方案。
可选地,第一请求信息还包括第一映射关系,目标程序代码集合、第一指示信息、至少一个目标参数和第一映射关系均归属于同一程序虚拟机(virtual machine),也即第一请求消息中携带有该程序虚拟机。具体的,第一网络设备为该程序虚拟机分配内存,前述内存的大小可以等于第一映射关系的长度、目标程序代码集合的长度、第一默认长度、第二默认长度以及第三默认长度之间的和。
其中,第一默认长度为第一网络设备为寄存器段分配的默认长度,第二默认长度为第一网络设备为用于存储栈中的内容分配的默认长度,第三默认长度为第一网络设备为数据段分配的默认长度。作为示例,例如第一默认长度具体可以为256个字节,也即32个8字节的寄存器的值;第二默认长度具体可以为2K字节,应理解,此处对第一默认长度和第二默认长度的举例仅为提高本申请实施例的可实现性,不用于限定本方案。对于第一映射关系的概念将在后续进行描述,此处暂时不做介绍。
第一网络设备分别初始化寄存器段、栈中的内容、代码段和数据段相对于程序虚拟机的起始地址的偏移量,也即分别确定寄存器段、栈段、代码段和数据段在程序虚拟机中的起始位置;若第一网络设备执行了目标程序代码集合中的至少一行程序代码,则第一网络设备还需要初始化栈帧指针和堆栈指针。
第一网络设备在确定了寄存器段、栈段、代码段和数据段在程序虚拟机中的起始位置后,将第一进程上下文中的内容写入到程序虚拟机的对应位置。具体的,在一种情况下,若第一网络设备未执行目标程序代码集合中的程序代码,且第一网络设备将与目标程序代码集合对应的每个非内联函数的函数编号写入到程序代码中。第一网络设备将PC寄存器中的值写入到程序虚拟机的寄存器段,将目标程序代码集合写入到程序虚拟机的代码段,将与目标程序代码集合对应的所有目标参数写入到程序虚拟机的数据段。
在另一种情况下,若第一网络设备中执行目标程序代码集合中的至少一行程序代码,且第一网络设备将与目标程序代码集合对应的每个非内联函数的函数编号写入到程序代码中。第一网络设备将第一进程上下文包括的寄存器段中的内容写入到程序虚拟机的寄存器段,将第一进程上下文包括的栈中的内容写入程序虚拟机的栈段,将目标程序代码集合写入到程序虚拟机的代码段,将第一进程上下文包括的数据段的内容写入到程序虚拟机的数据段。
在另一种情况下,若第一网络设备未执行目标程序代码集合中的程序代码,且第一网络设备未获取与目标程序代码集合对应的每个非内联函数的函数编号。第一网络设备将PC寄存器中的值写入到程序虚拟机的寄存器段,将目标程序代码集合、第一进程上下文包括的符号表和重定向段写入到程序虚拟机的代码段,将与目标程序代码集合对应的所有目标参数写入到程序虚拟机的数据段。
针对第一映射关系的概念和生成过程。第一映射关系用于存储至少一个第一地址与至少一个第二地址之间的映射关系。其中,至少一个第一地址可以包括程序虚拟机中的数据段在程序虚拟机中的虚拟地址,对应的,至少一个第二地址可以包括程序虚拟机中的数据段在存储数据段的网络设备中的存储地址;也即第一地址用于指示目标参数在程序虚拟机中的虚拟地址,第二地址用于指示目标参数在存储所述目标参数的网络设备中的存储地址。
至少一个第一地址可以包括程序虚拟机中的代码段在程序虚拟机中的虚拟地址,对应的,至少一个第二地址可以包括程序虚拟机中的代码段在存储代码段的网络设备中的存储地址。至少一个第一地址还可以包括程序虚拟机中的寄存器段在程序虚拟机中的虚拟地址,对应的,至少一个第二地址还可以包括程序虚拟机中的寄存器段在存储寄存器段的网络设备中的存储地址。
至少一个第一地址还可以包括程序虚拟机中的栈段在程序虚拟机中的虚拟地址,对应的,至少一个第二地址还可以包括程序虚拟机中的栈段在存储栈段的网络设备中的存储地址。需要说明的是,第一映射关系是用于存储第一地址和第二地址之间的映射关系,若第一网络设备未执行目标程序代码集合中的程序代码,则第一请求消息中第二地址处可以为空,也即第一请求消息中不一定要携带程序虚拟机中的数据在第一网络设备上的存储地址,具体是否携带,可以结合实际应用场景灵活确定。
进一步地,网络设备中的存储地址指的可以为网络设备中的虚拟地址,也可以为网络设备中的物理地址,具体采用哪种地址可结合实际应用场景确定,此处不做限定。
第一映射关系具体可以表现为页表、哈希表或其他形式等,该页表也可以称为映射表(mapping table),在本申请的后续实施例中仅以第一映射关系具体表现为映射表的形式为例进行说明,当第一映射关系选取其他形式的数据存储结构时,可以参阅理解,本申请实施例中不再一一赘述。作为示例,例如该映射表的大小可以为小于或等于512字节。
具体的,第一映射关系可以包括数据在程序虚拟机中的虚拟地址、数据长度和数据在存储的网络设备中的存储地址这三个属性字段。进一步地,第一映射关系可以采用段式映射,或者,第一映射关系也可以非段式映射,或者,第一映射关系可以同时采用段式映射和非段式映射。为更直观地理解本概念,以下以第一映射关系采用段式映射方式为例,公开了映射表中一项映射关系的具体表现方式:
{VM VA start1,Length1,Host VA start1}; (1)
VM VA start1代表程序虚拟机中的数据段在程序虚拟机中的虚拟地址,Length1代表程序虚拟机中的数据段的长度,Host VA start1代表程序虚拟机中的数据段在存储的网络设备中的虚拟地址,应理解,式(1)中的举例仅为方便理解本方案,不用于限定本方案。
进一步地,作为示例,例如程序虚拟机中的全部数据被放在虚拟地址0x10000-0x12000处,程序虚拟机中代码段被放置在存储的网络设备的虚拟地址0x10500-0x10900处,且假设程序虚拟机中代码段的起始存储地址设定为0x80000,则第一映射关系中与代码段对应的映射表项可以为(0x80000,0x400,0x10500),0x80000代表程序虚拟机中代码段在程序虚拟机中的起始虚拟地址,0x400代表程序虚拟机中代码段的长度,0x10500代表程序虚拟机中代码段在存储的网络设备中的虚拟地址,应理解,此处举例也仅为方便理解本方案,不用于限定本方案。
当某一网络设备(为方便描述,后续称为“目标网络设备”)调用内存分配函数分配目标网络设备中的虚拟内存时,目标网络设备可以在第一映射关系中增加新的映射关系项,新的映射关系项用于指示所分配的虚拟内存在程序虚拟机中的虚拟地址,和所分配的虚拟内存在目标网络设备中的存储地址之间的映射关系。其中,作为示例,例如内存分配函数具体可以采用mmap函数、malloc函数或其他用于进行内存分配的函数等等;前述虚拟内存也可以称为动态内存。
可选地,如果通过上述过程分配的动态内存,允许远端的其他网络设备访问,则第一映射关系还可以包括数据所存储的网络设备的标识信息和远程访问密钥(Rkey)这两个属性字段。本实施例将允许远端访问的动态内存可以被称为共享内存。
进一步地,目标网络设备还可以注册允许其他网络设备访问的共享内存。目标网络设备将通过上述过程分配的动态内存向网卡设备注册,得到远程访问密钥,然后将目标网络设备的标识信息和远程访问密钥(Rkey)写入第一映射关系。
需要说明的是,目标网络设备指的是整个数据处理系统中运行与内存分配函数对应的程序代码的网络设备,若第一网络设备执行目标程序代码集合中的至少一行程序代码,则目标网络设备可以具体表现第一网络设备,目标网络设备也可以具体表现为第二网络设备,具体目标网络设备为哪个网络设备需要结合每个网络设备执行程序代码的具体情况确定,此处不做限定。
为更直观地理解本概念,以下公开了映射表中一项映射关系的具体表现方式:
{VM VA start2,Length2,Host VA start2,Host ID2,Rkey2};(2)
VM VA start2代表目标网络设备通过内存分配函数所分配的虚拟内存在程序虚拟机中的虚拟地址,Length2代表目标网络设备通过内存分配函数所分配的虚拟内存的长度,Host VA start1代表目标网络设备通过内存分配函数所分配的虚拟内存在目标网络设备中的虚拟地址,Host ID2代表目标网络设备的标识信息,Rkey2代表访问目标网络设备的共享内存(也即前述目标网络设备通过内存分配函数所分配的虚拟内存)时所采用的远程访问密钥,应理解,式(2)中的举例仅为方便理解本方案,不用于限定本方案。
更进一步地,若目标网络设备运行与munmap函数程序代码时,还可以释放munmap函数所指向的共享内存,并且在第一映射关系中删除与munmap函数对应的映射关系项。
需要说明的是,第一映射关系中第一个映射关系项和第二个映射关系项可以分别用于指示数据段在程序虚拟机中的地址与数据段在存储的网络设备上的存储地址之间的映射关系,以及代码段在程序虚拟机中的地址与代码段在存储的网络设备上的存储地址之间的映射关系。对于第一映射关系中的其他的映射关系项可能伴随着程序代码的运行,在第一映射关系中动态的添加和删除。
本申请实施例中,程序代码集合、第一指示信息、至少一个目标参数和第一映射关系被封装于同一程序虚拟机中,且第一映射关系用于指示程序虚拟机中的数据在程序虚拟机中的虚拟地址,和程序虚拟机中的数据在所存储的网络设备中的存储地址,也即某个网络设备在通过进程运行程序代码集合中程序代码时,能够与网络设备本地运行的进程之间实现安全隔离。
可选地,若目标程序代码集合采用的为目标中间语言,则第一请求消息还包括第三指示信息,第三指示信息用于指示目标中间语言的类型。其中,第三指示信息可以包括Arch字段和版本(version)字段。Arch字段中的值用于指示目标程序代码集合采用的是哪一种类型的中间语言,对于中间语言的类型的介绍可参阅上述描述,版本字段中的值用于指示目标程序代码集合采用的中间语言的版本号,作为示例,例如中间语言采用的类型为eBPF,则具体采用的中间语言可以为eBPFv1、eBPFv2或其他版本的eBPF类型的中间语言等,应理解,此处举例仅为方便理解本方案,不用于限定本方案。
本申请实施例中,由于第一网络设备和第二网络设备可能为不同的机器,目标程序代码集合采用的为目标中间语言的形式,从而某个网络设备在运行目标程序代码集合中的程序代码时,可以编译为适合自身类型的机器语言,从而本申请实施例提供的方案可以兼容各种类型的网络设备,有利于扩展本方案的应用场景。
为更直观地理解本方案,请参阅图5,图5为本申请实施例提供的数据处理方法中第一请求消息的封装内容的一种示意图。图5以第一请求消息中携带有程序虚拟机,且第一网络设备执行过目标程序代码集合中的至少一行代码为例,如图5所示,第一请求消息包括第三指示信息、第一映射关系表、寄存器段、栈段、代码段和数据段,对于前述各种名词中包含的内容,可以参阅上述描述,此处不做赘述,应理解,图5中的示例仅为方便理解本方案,不用于限定本方案。
204、第一网络设备向第二网络设备发送第一请求消息。
本申请实施例中,第一网络设备向第二网络设备发送第一请求消息,对应的,第二网络设备接收第一网络设备发送的第一请求消息。具体的,第一网络设备向第二网络设备的预设端口号发送第一请求消息,第二网络设备中的该预设端口一直侦听第一网络设备发送的第一请求消息。其中,第一请求消息可以表现为一个或多个报文,作为示例,例如一个报文最大可以为512MB(兆字节)、1GB(千兆字节)或其他大小等等,此处不做限定。需要说明的是,第二网络设备需要等所有报文都集齐后再进入步骤205。
205、第二网络设备根据第一指示信息,从目标程序代码集合包括的至少一行程序代码中确定第一起始行在程序代码集合中的位置。
本申请实施例中,第二网络设备在获取到第一请求消息后,将第一请求消息中携带的信息存储至本地,并需要开始运行目标程序代码集合中的一行或多行程序代码。
可选地,若第一请求消息中携带有第一映射关系,也即目标程序代码集合、第一指示信息、至少一个目标参数和第一映射关系均归属于同一程序虚拟机,则在第二网络设备将第一请求消息中携带的信息存储至本地之后,第二网络设备开始运行目标程序代码集合中的至少一行程序代码之前,第二网络设备还需要根据程序虚拟机中数据段和代码段在程序虚拟机中的存储地址,更新第一映射关系中与程序虚拟机中数据段和代码段对应的映射关系项。若第一请求消息中不携带有第一映射关系,也即目标程序代码集合、第一指示信息、至少一个目标参数和第一映射关系均不包括于同一程序虚拟机内,则第二网络设备不需要执行前述步骤。
可选地,在第一请求消息中携带的为与目标程序代码集合对应的每个非内联函数的函数编号,且第二网络设备上需要配置有第三映射关系的情况下。则程序虚拟机中的代码段中保存有符号表指针,第一网络设备还需要将该符号表指针的指向地址更新为第三映射关系在第二网络设备上的存储地址。若第一请求消息中没有携带的每个非内联函数的函数编号,则第二网络设备不需要执行前述步骤。
其中,第三映射关系包括函数库中每个函数的函数编号与函数在第二网络设备上的调用地址之间的一一映射关系,也即第三映射关系中包括与目标程序代码集合对应的每个非内联函数的函数编号与非内联函数在第二网络设备上的调用地址之间的一一映射关系。可选地,第三映射关系还可以包括函数库中每个函数的函数编号与函数名称之间的一一映射关系。第三映射关系具体可以采用表格、数组、链表等存储形式,为更直观地理解本方案,如下以第三映射关系采用表格为例,对第三映射关系的内容进行举例。
函数编号(func_idx) | 函数名称(func_name) | 函数地址(func_address) |
0x0 | mmap | _mmap() |
0x3 | migrate_to | _migrate_to() |
0x7 | … | … |
表1
表1中以展示第三映射关系中的三行数据为例,对第三映射关系进行展示,需要说明的是,第三映射关系中可以包括更多的函数编号与函数的调用地址之间的一一映射关系,第三映射关系中也可以不存在函数名称这一列,表1中的举例仅为方便理解本方案,不用于限定本方案。
需要说明的是,第二网络设备中预先初始化有程序虚拟机的执行队列,在第二网络设备执行完上述步骤后,可以将第一请求消息中携带的程序虚拟机的状态设置为就绪,并放置于程序虚拟机的执行队列中。
针对第二网络设备运行目标程序代码集合中的至少一行程序代码的过程。第二网络设备获取到第一进程上下文中PC寄存器中的值,也即获取到第一指示信息,进而第二网络设备根据寄存器段中PC寄存器中的值,从目标程序代码集合包括的至少一行程序代码中确定第一起始行在程序代码集合中的位置。
206、第二网络设备根据至少一个目标参数,以至少一行程序代码中的第一起始行作为起点,运行目标程序代码集合包括的至少一行程序代码,以完成目标任务包括的至少一个待执行子任务。
本申请实施例中,第二网络设备根据至少一个目标参数,以至少一行程序代码中的第一起始行作为起点,运行目标程序代码集合包括的至少一行程序代码,以完成目标任务包括的至少一个待执行子任务。在第二网络设备运行至少一行程序代码的过程中,第二网络设备还会获取到第一进程上下文的寄存器段中除PC寄存器之外的其他寄存器的值,并将第一进程上下文中寄存器段中的值写入第二网络设备的物理寄存器中。
可选地,若第一网络设备执行过目标程序代码集合中的至少一行程序代码,则第二网络设备还可以获取到第一进程上下文包括的栈的内容,将第一进程上下文包括的栈的内容写入到第二网络设备的栈中。
具体的,针对目标程序代码集合中程序代码的编译过程,当第二网络设备运行至与非内联函数对应的程序代码时,在一种情况下,若第一请求消息中携带有第二指示信息,则第二网络设备基于第二指示信息,确定目标程序代码集合中的程序代码所采用的中间语言的类型,进而获取与确定的中间语言对应的编译器,以将目标程序代码集合中的至少一行程序代码编译成机器语言的程序代码。前述编译过程可以采用对中间语言形式的程序代码进行即时编译的方式,作为示例,例如中间语言采用的为eBPF,则与中间语言对应的编译器可以为eBPF即时编译器(just-in-time compiler,JIT)。
在另一种情况下,若目标程序代码集合包括的为机器语言形式的程序代码,则第二网络设备可以直接运行目标程序代码集合中的程序代码。
针对目标程序代码集合中程序代码的运行过程,若第二网络设备运行至与目标非内联函数对应的程序代码时,在一种情况下,第二网络设备根据目标非内联函数的函数编号,获取目标非内联函数在第二网络设备中的调用地址,以运行目标非内联函数,目标非内联函数为与目标程序代码集合对应的至少一个非内联函数中的一个非内联函数。
更具体的,在一种实现方式中,若与目标非内联函数对应的程序代码中携带有目标非内联函数的函数编号,且第二网络设备中预先配置有第三映射关系,则第二网络设备可以根据目标非内联函数的函数编号,从第三映射关系中获取目标非内联函数在第二网络设备中的调用地址,进而运行目标非内联函数。
为了更直观地理解本方案,请参阅图6,图6为本申请实施例提供的数据处理方法中运行非内联函数的一种示意图。如图6所示,程序虚拟机的代码段中包括有多行程序代码,当某一行程序代码对应的指令为调用非内联函数的情况下,该行程序代码的中间标识字段中存储有非内联函数的函数编号,从而第二网络设备可以根据程序代码中携带的非内联函数的函数编号,从第三映射关系中获取该非内联函数在第二网络设备上的调用地址,进而运行该目标非内联函数,应理解,图6中的示例仅为方便理解本方案,不用于限定本方案。
本申请实施例中,由于在一般情况下,函数编号比函数名称更为简单,利用非内联函数的函数编号来查找函数的调用地址,相对于直接利用非内联函数的函数名称来查找函数的调用地址,能够提高非内联函数的调用效率,进而有利于提高整个目标任务的执行效率。
在另一种实现方式中,若第二网络设备中预先配置有非内联函数的函数编号的生成规则,则第二网络设备可以根据目标非内联函数的函数名称,生成目标非内联函数的函数编号,进而根据目标非内联函数的函数编号,从第三映射关系中获取目标非内联函数在第二网络设备中的调用地址,运行目标非内联函数。
在另一种情况中,若第二网络设备中未配置有第三映射关系,则第二网络设备可以根据目标非内联函数的函数名称,确定目标非内联函数在第二网络设备上的调用地址,运行目标非内联函数。
207、第二网络设备执行报文封装操作,以得到第二请求消息,第二请求消息包括第二进程上下文,第二进程上下文包括目标程序代码集合、第二指示信息和至少一个中间结果,第二指示信息用于指示目标程序代码集合包括的至少一行程序代码中第二起始行在目标程序代码集合中的位置,第二起始行和第一起始行在目标程序代码集合中的位置不同,中间结果为第二网络设备在运行至少一行程序代码的过程中产生的中间数据。
本申请的一些实施例中,第二网络设备在运行目标程序代码集合中的至少一行程序代码的过程中,还可能会对触发第二网络设备停止运行目标程序代码集合中的程序代码,并重新执行报文封装操作,以得到第二请求消息。其中,第二请求消息包括第二进程上下文,第二进程上下文包括目标程序代码集合、第二指示信息和至少一个中间结果。
进一步地,第二进程上下文和第一进程上下文均为进程上下文,对于第二进程上下文的理解可参阅上述描述中,在第一网络设备执行过目标程序代码集合中的至少一行程序代码的情况下,第一进程上下文的概念。目标程序代码集合中的含义可参阅上述描述,此处不做赘述。
第二指示信息用于指示目标程序代码集合包括的至少一行程序代码中第二起始行在目标程序代码集合中的位置,第二起始行为即将执行目标程序代码集合中的程序代码时的起点,第二起始行和第一起始行在目标程序代码集合中的位置不同。第二指示信息具体也可以表现为PC寄存器中的值,由于第二网络设备在运行目标程序代码集合中的至少一行程序代码的过程中会更新PC寄存器中的值,从而第二指示信息所指向的第二起始行,与第一指示信息所指向的第一起始行在目标程序代码集合中的位置不同。
中间结果为第二网络设备在运行至少一行程序代码的过程中产生的中间数据。中间结果可以包括与第二网络设备在运行至少一行程序代码的过程相关的寄存器中的值,以及,与第二网络设备在运行至少一行程序代码的过程相关的栈中的内容,对于寄存器中的值以及栈中的内容的理解可参阅上述描述,此处不做赘述。
具体的,针对触发第二网络设备重新执行报文封装操作的原因。
在一种情况下,第二网络设备执行至目标程序代码集合中的目标程序代码,触发第二网络设备重新执行报文封装操作,以得到第二请求消息,并发送第二请求消息。
更进一步地,在一种实现方式中,目标程序代码具体表现为迁移函数,第二网络设备调用该迁移函数后,触发第二网络设备重新执行报文封装操作,以得到第二请求消息,并发送第二请求消息的过程(也即执行迁移操作的过程)。进一步地,前述迁移函数中会携带有接收第二请求消息的网络设备的通信地址。
在另一种实现方式中,目标程序代码中包括的不是迁移函数,而是直接与“重新执行报文封装操作,并发送该得到的第二请求消息”这一迁移操作对应的代码,也即当第二网络设备执行该目标程序代码时,直接触发该迁移操作。进一步地,目标程序代码中会携带有接收第二请求消息的网络设备的通信地址。
为了更直观地理解本方案,请参阅图7,图7为本申请实施例提供的数据处理方法的一种流程示意图。图7中以整个数据处理系统包括网络设备1、网络设备2、网络设备3和网络设备4为例,若网络设备1未执行过目标程序代码集合中的程序代码,则网络设备1向网络设备2发送的第一请求消息中所携带的为第一进程上下文;若网络设备1执行过目标程序代码集合中的至少一行代码,则第一请求消息中所携带的数据的格式与图7中的第二进程上下文的格式相同,对于第二进程上下文的介绍可参阅上述对图5中的介绍。
网络设备2在运行目标程序代码集合中的至少一行程序代码的过程中,网络设备2会执行目标程序代码,其中,目标程序代码包含于程序代码集合,目标程序代码用于执行报文封装操作,以得到第二请求消息,向网络设备3发送第二请求消息,第二请求消息中携带有第二进程上下文。网络设备3和网络设备4执行的操作与网络设备2执行的操作类似,此处不做赘述,应理解,图7中的示例仅为方便理解本方案,不用于限定本方案。
本申请实施例中,由于第二请求消息中封装了第二进程上下文,第二进程上下文目标程序代码集合、第二指示信息和至少一个中间结果,也即通过第二进程上下文可以得知目标程序代码集合已经运行到了哪一行,以及第二网络设备在运行至少一行程序代码的过程中所产生的中间数据,从而第二网络设备在将第二请求消息发送给其他网络设备之后,其他网络设备可以继续执行目标任务中的下一个待执行子任务,从而实现了多个网络设备之间流水式的互相协助,以完成一个完整的目标任务。
在另一种情况下,在第一请求消息中携带第一映射关系的情况下,第二网络设备在运行目标程序代码集合中的至少一行程序代码的过程中,在第二网络设备根据第一映射关系,确定需要访问的数据位于远端的网络设备上的情况下,也可以触发重新执行报文封装操作,以将第二请求消息发送至存储前述需要访问的数据的网络设备上。
也即在第二网络设备根据第一映射关系,确定需要访问的数据位于远端的网络设备上的共享内存中的情况下,也可以触发重新执行报文封装操作,需要说明的是,第二网络设备可能需要访问第一网络设备的共享内存,也有可能需要访问除第一网络设备和第二网络设备之外的其他网络设备的共享内存,具体需要访问的数据位于哪个远端的网络设备上应当结合实际应用场景的需要来灵活确定。
可选地,在第二网络设备发现需要访问的数据位于远端的网络设备上的情况下,还可以根据第一映射关系,判断需要访问的数据的大小是否大于或等于预设阈值,只有在需要访问的数据大于或等于预设阈值的情况下,才会触发执行报文封装操作,以将第二请求消息发送至存储前述需要访问的数据的网络设备上。
为了更直观地理解本方案,请参阅图8,图8为本申请实施例提供的数据处理方法中触发第二网络设备进行报文封装的一种流程示意图。如图8所示,B1、第二网络设备接收第一请求消息,第一请求消息所包含的内容可参阅上述描述,此处不做赘述。B2、第二网络设备根据第一指示信息,从目标程序代码集合包括的至少一行程序代码中确定第一起始行在程序代码集合中的位置。B3、第二网络设备根据至少一个目标参数,以至少一行程序代码中的第一起始行作为起点,运行目标程序代码集合包括的至少一行程序代码,在前述运行程序代码的过程中,当确定需要访问的数据位于第一网络设备上时,触发执行报文封装操作,以生成第二请求消息。B4、第二网络设备将第二请求消息发送给第一网络设备,需要说明的是,图8中仅以需要访问的数据位于第一网络设备上为例,在实际应用场景中,需要访问的数据也可以位于除第一网络设备和第二网络设备之外的其他网络设备上,例如第三网络设备等,图8中的示例仅为方便理解本方案,不用于限定本方案。
在另一种情况下,上述两种情况中任一种情况发生时均可以触发第二网络设备重新执行报文封装操作。
208、第二网络设备发送第二请求消息。
本申请的一些实施例中,第二网络设备在执行报文封装操作,得到第二请求消息后,可以向除了第二网络设备之外的其他网络设备发送第二请求消息,其他网络设备具体可以表现为第一网络设备,也可以表现为第三网络设备,此处不做限定。
本申请实施例中,若第二网络设备已经完成整个目标任务,在执行完步骤206后,若本申请实施例应用于RPC应用场景中,则第二网络设备在完成整个目标任务后,需要向第一网络设备发送与整个目标任务对应的执行结果(也可以称为RPC响应消息)。
进一步地,第二网络设备可以仅将与整个目标任务对应的执行结果发送给第一网络设备,也可以为将第二请求消息发送给第一网络设备,此处不限定第二网络设备向第一网络设备发送执行结果的方式。
更进一步地,针对第二网络设备发现完成整个目标任务的方式,若当前运行的程序代码为退出指令,且与运行的程序代码相关的栈的深度为0,则代表整个目标任务已经执行完毕。需要说明的是,若不是第二网络设备完成整个目标任务,而是整个数据处理系统中的其他网络设备完成整个目标任务,则前述网络设备确定完成目标任务的方式,以及向第一网络设备发送执行结果的方式与上述描述类似。
若接收第二请求消息的网络设备仍需要继续执行目标程序代码集合中的至少一行程序代码,则其他网络设备在接收到第二请求消息后,执行的步骤与步骤205至208类似,可参阅描述,此处不做赘述。
为了更直观地理解本方案,请参阅图9,图9为本申请实施例提供的数据处理方法的一种流程示意图。图9中以整个数据处理系统包括3个网络设备为例,通过网络设备1发起的目标任务为查询年龄为60岁的消费者最喜欢的商品是什么,由于网络设备2中存储由每个消费者的姓名和年龄,网络设备3中存储有消费者的姓名、购买商品名称以及购买量。则与目标任务对应的目标程序代码集合用于指示两个待执行子任务,待执行子任务1为查询年龄为60岁的消费者的姓名,待执行子任务2为根据年龄为60岁的消费者的姓名,查询年龄为60岁的消费者购买量最多的商品名称。具体的,C1、网络设备1向网络设备2发送第一请求信息,第一请求信息中携带有前述目标程序代码集合、目标参数和第一指示信息,目标参数为60。C2、网络设备2运行目标程序代码集合中的至少一行程序代码以执行待执行子任务1,得到年龄为60岁的消费者的姓名,执行报文封装操作,以生成第二请求消息,向网络设备3发送第二请求消息,第二请求消息中携带有前述目标程序代码集合、中间结果和第二指示信息,中间结果为年龄为60岁的消费者的姓名。C3、网络设备3运行目标程序代码集合中的至少一行程序代码以执行待执行子任务2,得到年龄为60岁的消费者购买最多的商品名称;网络设备3向网络设备1发送与目标任务对应的结果,前述结果为年龄为60岁的消费者购买最多的商品名称,应理解,图9中的示例仅为方便理解本方案,不用于限定本方案。
为了对本申请实施例所带来的有益效果有更直接的了解,以下结合实际试验数据进行说明。请参阅图10,图10为本申请实施例所带来的有益效果的一种示意图。图10中以本申请实施例应用于RPC应用场景为例,此处以一个目标任务包括的待执行子任务需要在至少两个网络设备上执行为例。
其中,图10的纵坐标代表传统的RPC方式所使用的网络传输时间,与本申请实施例提供的方案所使用的网络传输时间之间的比值,图10的横坐标代表中间结果的数据大小1MB~10GB。传统的RPC方式中,客户端(一个网络设备)先向第一个服务器端(另一个网络设备)发起RPC请求,接收到第一个RPC响应消息后,将从第一个RPC响应消息获取到的中间结果包装成RPC参数,再向第二个服务器端(另一个网络设备)发起第二个RPC请求,以此类推。如图10所示,当中间结果数据量大于或等于1MB时,本申请实施例提供的方式所使用的网络传输时间均小于传统的RPC方式所使用的网络传输时间,当中间结果的数据量大于或等于10MB时,本申请实施例提供的方式相对于传统的RPC方式减少约50%的网络传输时间。
在图1至图10所对应的实施例的基础上,为了更好的实施本申请实施例的上述方案,下面还提供用于实施上述方案的相关设备。具体参阅图11,图11为本申请实施例提供的数据处理系统的一种系统架构图。数据处理系统1100至少包括第一网络设备100和第二网络设备200。其中,第一网络设备100用于获取第一请求信息,并向第二网络设备200发送第一请求信息,第一请求消息中携带有与目标任务对应的第一进程上下文,第一进程上下文包括程序代码集合、第一指示信息和至少一个目标参数,程序代码集合包括至少一行程序代码;第二网络设备200用于接收第一请求消息,根据第一指示信息,从程序代码集合包括的至少一行程序代码中确定第一起始行在程序代码集合中的位置;第二网络设备200还用于根据至少一个目标参数,以至少一行程序代码中的第一起始行作为起点,运行程序代码集合包括的至少一行程序代码,以完成目标任务包括的至少一个待执行子任务,目标参数为至少一个待执行子任务被执行时所需的参数。
在一种可能的设计中,第二网络设备200还用于执行目标程序代码,其中,目标程序代码包含于程序代码集合,目标程序代码用于执行报文封装操作,以得到第二请求消息,向第三网络设备发送第二请求消息。其中,第二请求消息包括第二进程上下文,第二进程上下文包括程序代码集合、第二指示信息和至少一个中间结果,第二指示信息用于指示程序代码集合包括的至少一行程序代码中第二起始行在程序代码集合中的位置,第二起始行和第一起始行在程序代码集合中的位置不同,中间结果为第二网络设备200在运行至少一行程序代码的过程中产生的中间数据。
在一种可能的设计中,第一请求信息还包括第一映射关系,程序代码集合、第一指示信息、至少一个目标参数和第一映射关系均归属于同一程序虚拟机,第一映射关系用于存储第一地址与第二地址之间的映射关系,第一地址用于指示目标参数在程序虚拟机中的虚拟地址,第二地址用于指示目标参数在存储目标参数的网络设备中的存储地址。
在一种可能的设计中,方法应用于远程过程调用RPC场景中,目标任务包括至少两个RPC任务。
在一种可能的设计中,程序代码集合采用的为目标中间语言,第一请求消息还包括第三指示信息,第三指示信息用于指示目标中间语言的类型。
在一种可能的设计中,程序代码集合包括与内联函数对应的程序代码,内联函数指的是函数体位于程序代码集合中的函数。
在一种可能的设计中,程序代码集合包括与非内联函数对应的程序代码,非内联函数指的是函数体不在程序代码集合中的函数;第一网络设备100还用于获取与目标非内联函数的函数名称对应的目标非内联函数的函数编号,其中,第一请求消息中携带有目标非内联函数的函数编号,目标非内联函数为与程序代码集合对应的至少一个非内联函数中的一个;第二网络设备200具体用于根据目标非内联函数的函数编号,获取目标非内联函数在第二网络设备200中的调用地址,以运行目标非内联函数。
为更直观地理解本方案,请参阅图12,图12为本申请实施例提供的数据处理系统的一种结构示意图。图12中以第一网络设备100和第二网络设备200中运行的为Linux系统为例,数据处理系统1100包括第一网络设备100和第二网络设备200,第一网络设备100包括LLVM编译器101、ELF库函数102、报文封装模块103和网卡104,报文封装模块103包括上下文获取模块1031和第一映射关系1032;第二网络设备200包括网卡201、运行模块202、第三映射关系203和报文封装模块204,报文封装模块204包括上下文获取模块2041和更新后的第一映射关系2042。
具体的,第一网络设备100在获取到与目标任务对应的至少一行原始程序代码后,可以通过LLVM编译器101将与目标任务对应的原始程序代码编译成中间语言形式的程序代码,以得到目标程序代码集合,目标程序代码集合包括多行中间语言形式的程序代码。上下文获取模块1031利用ELF库函数102来执行分析操作,以生成与目标程序代码集合对应的第一进程上下文。报文封装模块103还会生成第一映射关系1032,将第一进程上下文和第一映射关系封装到同一程序虚拟机中,生成第三指示信息,进而执行报文封装操作,以得到第一请求信息。其中,目标程序代码集合中包括与非内联函数对应的程序代码,与非内联函数对应的程序代码中携带有非内联函数的函数编号。第一网络设备100通过网卡104将第一请求消息发送至第二网络设备中的网卡201。
第二网络设备200通过网卡201获取到第一请求消息后,运行模块202将第一进程上下文和第三指示信息保存至本地,并更新第一映射关系1032。在运行模块202运行目标程序代码集合中的至少一行程序代码的过程中,当运行至与目标非内联函数对应的程序代码,运行模块202根据目标非内联函数的函数编号和第三映射关系203,确定目标非内联函数在第二网络设备200中的调用地址,并基于前述调用地址运行目标非内联函数。
在运行模块202正在运行的程序代码指向的操作为迁移操作的情况下,需要报文封装模块204中的上下文获取模块2041获取到第二进程上下文,报文封装模块204执行报文封装操作,以得到第二请求消息,第二请求消息中携带有第二进程上下文和更新后的第一映射关系2042。第二网络设备200通过网卡201将第二请求消息发送给其他的网络设备,应理解,上述描述中所涉及到的步骤的具体实现方式、名词的具体含义等均可以参阅图2至图9中的描述,此处不做详细赘述,此外,图12中的示例仅为方便理解本方案,不用于限定本方案。
需要说明的是,数据处理系统1100中还可以包括其他网络设备,图11和图12中仅以第一网络设备100和第二网络设备200之间的交互过程为示例,第一网络设备100和第二网络设备200之间的信息交互、执行过程等内容,与本申请中图2至图9对应的各个方法实施例基于同一构思,具体内容可参见本申请前述所示的方法实施例中的叙述,此处不再赘述。
请参阅图13,本申请实施例还提供一种数据处理装置,图13为本申请实施例提供的数据处理装置的一种结构示意图。数据处理装置1300包括:接收模块1301,用于接收第一请求消息,第一请求消息中携带有与目标任务对应的第一进程上下文,第一进程上下文包括程序代码集合、第一指示信息和至少一个目标参数,程序代码集合包括至少一行程序代码;确定模块1302,用于根据第一指示信息,从程序代码集合包括的至少一行程序代码中确定第一起始行在程序代码集合中的位置;运行模块1303,用于根据至少一个目标参数,以至少一行程序代码中的第一起始行作为起点,运行程序代码集合包括的至少一行程序代码,以完成目标任务包括的至少一个待执行子任务,目标参数为至少一个待执行子任务被执行时所需的参数。
在一种可能的设计中,请参阅图14,图14为本申请实施例提供的数据处理装置的一种结构示意图。数据处理装置1300还包括:封装模块1304,用于执行目标程序代码,其中,目标程序代码包含于程序代码集合,目标程序代码用于执行报文封装操作,以得到第二请求消息,向第三网络设备发送第二请求消息;第二请求消息包括第二进程上下文,第二进程上下文包括程序代码集合、第二指示信息和至少一个中间结果,第二指示信息用于指示程序代码集合包括的至少一行程序代码中第二起始行在程序代码集合中的位置,第二起始行和第一起始行在程序代码集合中的位置不同,中间结果为第二网络设备在运行至少一行程序代码的过程中产生的中间数据。
在一种可能的设计中,第一请求信息还包括第一映射关系,程序代码集合、第一指示信息、至少一个目标参数和第一映射关系均归属于同一程序虚拟机,第一映射关系用于存储第一地址与第二地址之间的映射关系,第一地址用于指示目标参数在程序虚拟机中的虚拟地址,第二地址用于指示目标参数在存储目标参数的网络设备中的存储地址。
在一种可能的设计中,装置应用于远程过程调用RPC场景中,目标任务包括至少两个RPC任务。
需要说明的是,数据处理装置1300中各模块/单元之间的信息交互、执行过程等内容,与本申请中图2至图9对应的各个方法实施例基于同一构思,具体内容可参见本申请前述所示的方法实施例中的叙述,此处不再赘述。
请参阅图15,本申请实施例还提供一种数据处理装置,图15为本申请实施例提供的数据处理装置的一种结构示意图。数据处理装置1500包括:获取模块1501,用于获取第一请求信息;发送模块1502,用于向第二网络设备发送第一请求信息;其中,第一请求消息中携带有与目标任务对应的第一进程上下文,第一进程上下文包括程序代码集合、第一指示信息和至少一个目标参数,若程序代码集合中的至少一行程序代码被执行,能够完成目标任务包括的至少一个待执行子任务,第一指示信息用于指示程序代码集合包括的至少一行程序代码中的第一起始行在程序代码集合中的位置,目标参数为至少一个待执行子任务被执行时所需的参数。
在一种可能的设计中,第一请求信息还包括第一映射关系,程序代码集合、第一指示信息、至少一个目标参数和第一映射关系均归属于同一程序虚拟机,第一映射关系用于存储第一地址与第二地址之间的映射关系,第一地址用于指示目标参数在程序虚拟机中的虚拟地址,第二地址用于指示目标参数在存储目标参数的网络设备中的存储地址。
需要说明的是,数据处理装置1500中各模块/单元之间的信息交互、执行过程等内容,与本申请中图2至图9对应的各个方法实施例基于同一构思,具体内容可参见本申请前述所示的方法实施例中的叙述,此处不再赘述。
本申请实施例还提供了一种网络设备,请参阅图16,图16为本申请实施例提供的网络设备的一种结构示意图,其中,网络设备1600用于实现图2至图9对应实施例中第一网络设备的功能,或者,网络设备1600用于实现图2至图9对应实施例中第二网络设备的功能。具体的,网络设备1600可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上中央处理器(central processing units,CPU)1622(例如,一个或一个以上处理器)和存储器1632,一个或一个以上存储应用程序1642或数据1644的存储介质1630(例如一个或一个以上海量存储设备)。其中,存储器1632和存储介质1630可以是短暂存储或持久存储。存储在存储介质1630的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对服务器中的一系列指令操作。更进一步地,中央处理器1622可以设置为与存储介质1630通信,在网络设备1600上执行存储介质1630中的一系列指令操作。
网络设备1600还可以包括一个或一个以上电源1626,一个或一个以上有线或无线网络接口1650,一个或一个以上输入输出接口1658,和/或,一个或一个以上操作系统1641,例如Windows ServerTM,Mac OS XTM,UnixTM,LinuxTM,FreeBSDTM等等。
在一种情况下,网络设备1600中的中央处理器1622用于执行图2至图9对应实施例中第一网络设备执行的步骤,对于中央处理器1622执行图2至图9对应实施例中第一网络设备执行的步骤的具体实现方式以及带来的有益效果,均可以参考图2至图9对应的各个方法实施例中的叙述,此处不再一一赘述。
在另一种情况下,网络设备1600中的中央处理器1622用于执行图2至图9对应实施例中第二网络设备执行的步骤,对于中央处理器1622执行图2至图9对应实施例中第二网络设备执行的步骤的具体实现方式以及带来的有益效果,均可以参考图2至图9对应的各个方法实施例中的叙述,此处不再一一赘述。
本申请实施例中还提供一种计算机可读存储介质,该计算机可读存储介质中存储有用于进行数据处理的程序,当其在计算机上运行时,使得计算机执行如前述图2至图9所示实施例描述的方法中第一网络设备所执行的步骤,或者,使得计算机执行如前述图2至图9所示实施例描述的方法中第二网络设备所执行的步骤。
本申请实施例中还提供一种包括计算机程序产品,当其在计算机上运行时,使得计算机执行如前述图2至图9所示实施例描述的方法中第一网络设备所执行的步骤,或者,使得计算机执行如前述图2至图9所示实施例描述的方法中第二网络设备所执行的步骤。
本申请实施例中还提供一种电路系统,所述电路系统包括处理电路,所述处理电路配置为执行如前述图2至图9所示实施例描述的方法中第一网络设备所执行的步骤,或者,所述处理电路配置为执行如前述图2至图9所示实施例描述的方法中第二网络设备所执行的步骤。
本申请实施例提供的数据处理装置、第一网络设备或第二网络设备具体可以为芯片,芯片包括:处理单元和通信单元,所述处理单元例如可以是处理器,所述通信单元例如可以是输入/输出接口、管脚或电路等。该处理单元可执行存储单元存储的计算机执行指令,以使芯片执行上述图2至图9所示实施例描述的方法。可选地,所述存储单元为所述芯片内的存储单元,如寄存器、缓存等,所述存储单元还可以是所述无线接入设备端内的位于所述芯片外部的存储单元,如只读存储器(read-only memory,ROM)或可存储静态信息和指令的其他类型的静态存储设备,随机存取存储器(random access memory,RAM)等。
其中,上述任一处提到的处理器,可以是一个通用中央处理器,微处理器,ASIC,或一个或多个用于控制上述第一方面方法的程序执行的集成电路。
另外需说明的是,以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。另外,本申请提供的装置实施例附图中,模块之间的连接关系表示它们之间具有通信连接,具体可以实现为一条或多条通信总线或信号线。
通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到本申请可借助软件加必需的通用硬件的方式来实现,当然也可以通过专用硬件包括专用集成电路、专用CLU、专用存储器、专用元器件等来实现。一般情况下,凡由计算机程序完成的功能都可以很容易地用相应的硬件来实现,而且,用来实现同一功能的具体硬件结构也可以是多种多样的,例如模拟电路、数字电路或专用电路等。但是,对本申请而言更多情况下软件程序实现是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在可读取的存储介质中,如计算机的软盘、U盘、移动硬盘、ROM、RAM、磁碟或者光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述的方法。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。
所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存储的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘(Solid State Disk,SSD))等。
Claims (21)
1.一种数据的处理系统,其特征在于,所述数据的处理系统包括第一网络设备和第二网络设备,其中,
所述第一网络设备用于获取第一请求信息,并向所述第二网络设备发送所述第一请求信息,所述第一请求消息中携带有与目标任务对应的第一进程上下文,所述第一进程上下文包括程序代码集合、第一指示信息和至少一个目标参数,所述程序代码集合包括至少一行程序代码;
所述第二网络设备用于接收所述第一请求消息,根据所述第一指示信息,从所述程序代码集合包括的至少一行程序代码中确定第一起始行在所述程序代码集合中的位置;
所述第二网络设备还用于根据所述至少一个目标参数,以所述至少一行程序代码中的第一起始行作为起点,运行所述程序代码集合包括的至少一行程序代码,以完成所述目标任务包括的至少一个待执行子任务,所述目标参数为所述至少一个待执行子任务被执行时所需的参数。
2.根据权利要求1所述的系统,其特征在于,所述第二网络设备还用于执行目标程序代码,其中,所述目标程序代码包含于所述程序代码集合,所述目标程序代码用于执行报文封装操作,以得到第二请求消息,向第三网络设备发送所述第二请求消息;
其中,所述第二请求消息包括第二进程上下文,所述第二进程上下文包括所述程序代码集合、第二指示信息和至少一个中间结果,所述第二指示信息用于指示所述程序代码集合包括的至少一行程序代码中第二起始行在所述程序代码集合中的位置,所述第二起始行和所述第一起始行在所述程序代码集合中的位置不同,所述中间结果为所述第二网络设备在运行所述至少一行程序代码的过程中产生的中间数据。
3.根据权利要求1或2所述的系统,其特征在于,所述第一请求信息还包括第一映射关系,所述程序代码集合、所述第一指示信息、所述至少一个目标参数和所述第一映射关系均归属于同一程序虚拟机,所述第一映射关系用于存储第一地址与第二地址之间的映射关系,所述第一地址用于指示所述目标参数在所述程序虚拟机中的虚拟地址,所述第二地址用于指示所述目标参数在存储所述目标参数的网络设备中的存储地址。
4.根据权利要求1或2所述的系统,其特征在于,所述方法应用于远程过程调用RPC场景中,所述目标任务包括至少两个RPC任务。
5.根据权利要求1或2所述的系统,其特征在于,所述程序代码集合采用的为目标中间语言,所述第一请求消息还包括第三指示信息,所述第三指示信息用于指示所述目标中间语言的类型。
6.根据权利要求1或2所述的系统,其特征在于,所述程序代码集合包括与内联函数对应的程序代码,所述内联函数是函数体位于所述程序代码集合中的函数。
7.根据权利要求1或2所述的系统,其特征在于,所述程序代码集合包括与至少一个非内联函数对应的程序代码,所述非内联函数是函数体不在所述程序代码集合中的函数;
所述第一网络设备还用于获取与目标非内联函数的函数名称对应的所述目标非内联函数的函数编号,其中,所述目标非内联函数为所述至少一个非内联函数中的一个非内联函数,所述第一请求消息中携带有所述目标非内联函数的函数编号,所述目标非内联函数为与所述程序代码集合对应的至少一个非内联函数中的一个;
所述第二网络设备具体用于根据所述目标非内联函数的函数编号,获取所述目标非内联函数在所述第二网络设备中的调用地址,以运行所述目标非内联函数。
8.一种数据处理方法,其特征在于,所述方法应用于第二网络设备,所述方法包括:
接收第一请求消息,所述第一请求消息中携带有与目标任务对应的第一进程上下文,所述第一进程上下文包括程序代码集合、第一指示信息和至少一个目标参数,所述程序代码集合包括至少一行程序代码;
根据所述第一指示信息,从所述程序代码集合包括的至少一行程序代码中确定第一起始行在所述程序代码集合中的位置;
根据所述至少一个目标参数,以所述至少一行程序代码中的第一起始行作为起点,运行所述程序代码集合包括的至少一行程序代码,以完成所述目标任务包括的至少一个待执行子任务,所述目标参数为所述至少一个待执行子任务被执行时所需的参数。
9.根据权利要求8所述的方法,其特征在于,所述运行所述程序代码集合包括的至少一行程序代码,以完成所述目标任务包括的至少一个待执行子任务之后,所述方法还包括:
执行目标程序代码,其中,所述目标程序代码包含于所述程序代码集合,所述目标程序代码用于执行报文封装操作,以得到第二请求消息,向第三网络设备发送所述第二请求消息;
其中,所述第二请求消息包括第二进程上下文,所述第二进程上下文包括所述程序代码集合、第二指示信息和至少一个中间结果,所述第二指示信息用于指示所述程序代码集合包括的至少一行程序代码中第二起始行在所述程序代码集合中的位置,所述第二起始行和所述第一起始行在所述程序代码集合中的位置不同,所述中间结果为所述第二网络设备在运行所述至少一行程序代码的过程中产生的中间数据。
10.根据权利要求8或9所述的方法,其特征在于,所述第一请求信息还包括第一映射关系,所述程序代码集合、所述第一指示信息、所述至少一个目标参数和所述第一映射关系均归属于同一程序虚拟机,所述第一映射关系用于存储第一地址与第二地址之间的映射关系,所述第一地址用于指示所述目标参数在所述程序虚拟机中的虚拟地址,所述第二地址用于指示所述目标参数在存储所述目标参数的网络设备中的存储地址。
11.根据权利要求8或9所述的方法,其特征在于,所述方法应用于远程过程调用RPC场景中,所述目标任务包括至少两个RPC任务。
12.一种数据的处理方法,其特征在于,所述方法应用于第一网络设备,所述方法包括:
获取第一请求信息;
向第二网络设备发送所述第一请求信息;
其中,所述第一请求消息中携带有与目标任务对应的第一进程上下文,所述第一进程上下文包括程序代码集合、第一指示信息和至少一个目标参数,若所述程序代码集合中的至少一行程序代码被执行,能够实现所述目标任务包括的至少一个待执行子任务,所述第一指示信息用于指示所述程序代码集合包括的至少一行程序代码中的第一起始行在所述程序代码集合中的位置,所述目标参数为所述至少一个待执行子任务被执行时所需的参数。
13.根据权利要求12所述的方法,其特征在于,所述第一请求信息还包括第一映射关系,所述程序代码集合、所述第一指示信息、所述至少一个目标参数和所述第一映射关系均归属于同一程序虚拟机,所述第一映射关系用于存储第一地址与第二地址之间的映射关系,所述第一地址用于指示所述目标参数在所述程序虚拟机中的虚拟地址,所述第二地址用于指示所述目标参数在存储所述目标参数的网络设备中的存储地址。
14.一种数据处理装置,其特征在于,所述装置包括:
接收模块,用于接收第一请求消息,所述第一请求消息中携带有与目标任务对应的第一进程上下文,所述第一进程上下文包括程序代码集合、第一指示信息和至少一个目标参数,所述程序代码集合包括至少一行程序代码;
确定模块,用于根据所述第一指示信息,从所述程序代码集合包括的至少一行程序代码中确定第一起始行在所述程序代码集合中的位置;
运行模块,用于根据所述至少一个目标参数,以所述至少一行程序代码中的第一起始行作为起点,运行所述程序代码集合包括的至少一行程序代码,以完成所述目标任务包括的至少一个待执行子任务,所述目标参数为所述至少一个待执行子任务被执行时所需的参数。
15.根据权利要求14所述的装置,其特征在于,所述装置还包括:
封装模块,用于执行目标程序代码,其中,所述目标程序代码包含于所述程序代码集合,所述目标程序代码用于执行报文封装操作,以得到第二请求消息,向第三网络设备发送所述第二请求消息;
其中,所述第二请求消息包括第二进程上下文,所述第二进程上下文包括所述程序代码集合、第二指示信息和至少一个中间结果,所述第二指示信息用于指示所述程序代码集合包括的至少一行程序代码中第二起始行在所述程序代码集合中的位置,所述第二起始行和所述第一起始行在所述程序代码集合中的位置不同,所述中间结果为所述第二网络设备在运行所述至少一行程序代码的过程中产生的中间数据。
16.根据权利要求14或15所述的装置,其特征在于,所述第一请求信息还包括第一映射关系,所述程序代码集合、所述第一指示信息、所述至少一个目标参数和所述第一映射关系均归属于同一程序虚拟机,所述第一映射关系用于存储第一地址与第二地址之间的映射关系,所述第一地址用于指示所述目标参数在所述程序虚拟机中的虚拟地址,所述第二地址用于指示所述目标参数在存储所述目标参数的网络设备中的存储地址。
17.根据权利要求14或15所述的装置,其特征在于,所述装置应用于远程过程调用RPC场景中,所述目标任务包括至少两个RPC任务。
18.一种数据的处理装置,其特征在于,所述装置包括:
获取模块,用于获取第一请求信息;
发送模块,用于向第二网络设备发送所述第一请求信息;
其中,所述第一请求消息中携带有与目标任务对应的第一进程上下文,所述第一进程上下文包括程序代码集合、第一指示信息和至少一个目标参数,若所述程序代码集合中的至少一行程序代码被执行,能够实现所述目标任务包括的至少一个待执行子任务,所述第一指示信息用于指示所述程序代码集合包括的至少一行程序代码中的第一起始行在所述程序代码集合中的位置,所述目标参数为所述至少一个待执行子任务被执行时所需的参数。
19.根据权利要求18所述的装置,其特征在于,所述第一请求信息还包括第一映射关系,所述程序代码集合、所述第一指示信息、所述至少一个目标参数和所述第一映射关系均归属于同一程序虚拟机,所述第一映射关系用于存储第一地址与第二地址之间的映射关系,所述第一地址用于指示所述目标参数在所述程序虚拟机中的虚拟地址,所述第二地址用于指示所述目标参数在存储所述目标参数的网络设备中的存储地址。
20.一种网络设备,其特征在于,包括处理器,所述处理器和存储器耦合,所述存储器存储有程序指令,当所述存储器存储的程序指令被所述处理器执行时实现权利要求1至7任一项中所述第一网络设备执行的步骤,或者,当所述存储器存储的程序指令被所述处理器执行时实现权利要求1至7任一项中所述第二网络设备执行的步骤,或者,当所述存储器存储的程序指令被所述处理器执行时实现权利要求8至11中任一项所述的方法,或者,当所述存储器存储的程序指令被所述处理器执行时实现权利要求12或13所述的方法。
21.一种计算机可读存储介质,其特征在于,包括程序,当所述程序在计算机上运行时,使得计算机执行如权利要求1至7任一项中所述第一网络设备执行的步骤,或者,使得计算机执行如权利要求1至7任一项中所述第二网络设备执行的步骤,或者,使得计算机执行如权利要求8至11中任一项所述的方法,或者,使得计算机执行如权利要求12或13所述的方法。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110721122.XA CN115604331A (zh) | 2021-06-28 | 2021-06-28 | 一种数据的处理系统、方法以及装置 |
EP22831949.7A EP4350507A1 (en) | 2021-06-28 | 2022-06-27 | Data processing system, method and apparatus |
PCT/CN2022/101469 WO2023274135A1 (zh) | 2021-06-28 | 2022-06-27 | 一种数据的处理系统、方法以及装置 |
US18/397,517 US20240126567A1 (en) | 2021-06-28 | 2023-12-27 | Data processing system, method, and apparatus |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110721122.XA CN115604331A (zh) | 2021-06-28 | 2021-06-28 | 一种数据的处理系统、方法以及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115604331A true CN115604331A (zh) | 2023-01-13 |
Family
ID=84690078
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110721122.XA Pending CN115604331A (zh) | 2021-06-28 | 2021-06-28 | 一种数据的处理系统、方法以及装置 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20240126567A1 (zh) |
EP (1) | EP4350507A1 (zh) |
CN (1) | CN115604331A (zh) |
WO (1) | WO2023274135A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116419291A (zh) * | 2023-06-09 | 2023-07-11 | 阿里巴巴(中国)有限公司 | 运行时参数的提取方法、设备及系统 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN118227189B (zh) * | 2024-05-21 | 2024-08-06 | 阿里云计算有限公司 | 数据处理方法及异常提示方法 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2015015473A1 (en) * | 2013-08-02 | 2015-02-05 | Ologn Technologies Ag | A secure server on a system with virtual machines |
CN105975577A (zh) * | 2016-05-04 | 2016-09-28 | 乐视控股(北京)有限公司 | 大数据处理中的数据优化方法和装置 |
CN109800011A (zh) * | 2019-02-02 | 2019-05-24 | 深圳携程网络技术有限公司 | 基于爬虫的票务查询方法、装置、电子设备、存储介质 |
CN112181450A (zh) * | 2019-07-03 | 2021-01-05 | 北京达佳互联信息技术有限公司 | 处理业务请求的方法、装置、服务器以及存储介质 |
-
2021
- 2021-06-28 CN CN202110721122.XA patent/CN115604331A/zh active Pending
-
2022
- 2022-06-27 WO PCT/CN2022/101469 patent/WO2023274135A1/zh active Application Filing
- 2022-06-27 EP EP22831949.7A patent/EP4350507A1/en active Pending
-
2023
- 2023-12-27 US US18/397,517 patent/US20240126567A1/en active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116419291A (zh) * | 2023-06-09 | 2023-07-11 | 阿里巴巴(中国)有限公司 | 运行时参数的提取方法、设备及系统 |
CN116419291B (zh) * | 2023-06-09 | 2023-10-31 | 阿里巴巴(中国)有限公司 | 运行时参数的提取方法、设备及系统 |
Also Published As
Publication number | Publication date |
---|---|
EP4350507A1 (en) | 2024-04-10 |
WO2023274135A1 (zh) | 2023-01-05 |
US20240126567A1 (en) | 2024-04-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9823851B2 (en) | Secure migratable architecture having security features | |
JP6458959B2 (ja) | 協調設計されたプロセッサ用動的言語アクセラレータ | |
CA2837839C (en) | Managing operator message buffers in a coupling facility | |
WO2023274135A1 (zh) | 一种数据的处理系统、方法以及装置 | |
US9043643B2 (en) | Operator message commands for testing a coupling facility | |
US11061695B2 (en) | Unikernel provisioning | |
CA2837831C (en) | Executing a start operator message command | |
US9898307B2 (en) | Starting application processors of a virtual machine | |
US8752068B2 (en) | Transmitting operator message commands to a coupling facility | |
US8930963B2 (en) | Processing operator message commands | |
US10802855B2 (en) | Producing an internal representation of a type based on the type's source representation | |
US10296363B2 (en) | Tuning a virtual machine startup parameter | |
US11989569B2 (en) | Unikernel provisioning | |
US20240281335A1 (en) | Diagnose instruction to restore machine state and associated storage keys | |
JP2000194668A (ja) | 計算機システム及び同システムに適用される中間コ―ド実行装置並びに中間コ―ド実行方法 |
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 |