一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

任务执行方法、系统、电子设备及计算机存储介质与流程

2021-11-17 23:34:00 来源:中国专利 TAG:


1.本技术实施例涉及互联网技术领域,尤其涉及一种任务执行方法、系统、电子设备及计算机存储介质。


背景技术:

2.随着互联网技术的发展,各种应用如直播应用、短视频应用、基于ai(人工智能)的应用对数据的处理和传输时延、吞吐率、计算能力等性能要求越来越高,传统依赖终端设备自身进行处理的方式已不能满足这些应用的需要。为此,边缘云技术应运而生,并且得到了越来越广泛的使用。
3.边缘云技术也称边缘云计算技术,是一种基于云计算技术的核心和边缘计算的能力,构筑在边缘设施基础上的云计算平台,来进行数据处理和计算的技术。通过边缘云技术,可提供边缘云计算基础设施服务,如计算、存储、网络、加速器等,以及边缘云计算平台服务,如容器服务、大数据服务、人工智能服务、即时通信服务rtc、视频ai、音视频通信等。
4.但在现在的基于边缘云技术的系统中,客户端仍承担着大量的数据计算和执行等任务,如何借助于边缘云技术,减轻客户端的任务执行负担,提升其运行速度,进而优化客户端的性能,成为亟待解决的问题。


技术实现要素:

5.有鉴于此,本技术实施例提供一种任务执行方案,以至少部分解决上述问题。
6.根据本技术实施例的第一方面,提供了一种任务执行方法,应用于客户端,所述方法包括:在通过代码执行环境执行程序代码的过程中,检测到预设任务的触发执行代码;根据所述触发执行代码,通过所述代码执行环境进行调度策略查询,获得针对所述预设任务的调度策略;将所述预设任务通过所述代码执行环境的环境通信接口,调度至获得的所述调度策略所指示的云端目标设备的代码执行环境中执行。
7.可选地,所述将所述预设任务通过所述代码执行环境的环境通信接口,调度至获得的所述调度策略所指示的云端目标设备的代码执行环境中执行,包括:通过所述代码执行环境,获得所述预设任务的环境执行代码,所述环境执行代码为可在所述代码执行环境中执行的代码;将所述预设任务的环境执行代码通过所述代码执行环境的环境通信接口,调度至获得的所述调度策略所指示的云端目标设备的代码执行环境中执行。
8.可选地,所述将所述预设任务的环境执行代码通过所述代码执行环境的环境通信接口,调度至获得的所述调度策略所指示的云端目标设备的代码执行环境中执行,包括:通过所述代码执行环境的环境通信接口,向所述调度策略所指示的云端目标设备的代码执行环境的环境通信接口发送客户端的所述代码执行环境的环境参数和所述预设任务的环境执行代码,以使所述云端目标设备根据所述环境参数初始化所述云端目标设备自身的代码执行环境,并在初始化完成后执行所述预设任务的环境执行代码。
9.可选地,所述根据所述触发执行代码,通过所述代码执行环境进行调度策略查询,
获得针对所述预设任务的调度策略,包括:根据所述触发执行代码,通过所述代码执行环境向边缘云和/或中心云发送针对所述预设任务的调度策略查询请求;接收响应于所述调度策略查询请求的查询结果,根据所述查询结果获得针对所述预设任务的调度策略。
10.可选地,所述根据所述触发执行代码,通过所述代码执行环境进行调度策略查询,获得针对所述预设任务的调度策略,包括:根据所述触发执行代码,通过所述代码执行环境进行客户端本地的调度策略查询,并获得针对所述预设任务的调度策略。
11.可选地,在所述在通过代码执行环境执行程序代码的过程中,检测到预设任务的触发执行代码之前,所述方法还包括:接收到包含有调用所述预设任务的系统调用指令;为所述系统调用指令所对应的程序创建代码执行环境,以使所述预设任务在所述代码执行环境中执行。
12.可选地,所述系统调用指令设置于所述预设任务所属应用所使用的编程语言的链接库中。
13.可选地,第一方面的任务执行方法还包括:接收所述云端目标设备通过其代码执行环境的环境通信接口,向所述客户端的代码执行环境的环境通信接口返回的所述预设任务的执行结果。
14.可选地,所述代码执行环境为基于webassembly标准的代码执行环境。
15.根据本技术实施例的第二方面,提供了另一种任务执行方法,应用于云端,所述方法包括:通过代码执行环境的环境通信接口,接收从客户端的代码安全环境发送来的针对预设任务的调度策略查询请求;响应于所述调度策略查询请求,获取所述云端的运行状态信息;根据所述运行状态信息确定所述云端的可执行所述预设任务的目标设备,并根据所述目标设备确定调度策略;通过所述云端的代码执行环境的环境通信接口,将所述调度策略发送给所述客户端的代码执行环境。
16.可选地,第二面的任务执行方法还包括:通过所述目标设备中的代码执行环境的环境通信接口,接收所述客户端发送的客户端的代码执行环境的环境参数和所述预设任务的环境执行代码,所述环境执行代码为可在所述代码执行环境中执行的代码:根据所述环境参数初始化所述目标设备的代码执行环境,并在初始化完成后执行所述预设任务的环境执行代码。
17.可选地,第二面的任务执行方法还包括:通过所述目标设备中的代码执行环境的环境通信接口,向所述客户端的代码执行环境返回所述预设任务的执行结果。
18.可选地,第二面的任务执行方法还包括:若根据所述运行状态信息确定所述云端不存在可执行所述预设任务的目标设备,则通过所述云端的代码执行环境的环境通信接口,向所述客户端的代码执行环境返回任务拒绝信息,以使所述客户端在自身的代码执行环境中执行所述预设任务。
19.可选地,所述云端的运行状态信息包括负载状态信息和/或网络连接状态信息。
20.可选地,所述代码执行环境为基于webassembly标准的代码执行环境。
21.根据本技术实施例的第三方面,提供了一种任务执行系统,至少包括:客户端和云端;其中:所述客户端,用于在通过代码执行环境执行程序代码的过程中,检测到预设任务的触发执行代码;根据所述触发执行代码,通过所述代码执行环境向所述云端进行调度策略查询,获得针对所述预设任务的调度策略;将所述预设任务通过所述代码执行环境的环
境通信接口,调度至获得的所述调度策略所指示的云端目标设备的代码执行环境中执行;所述云端,用于通过云端的代码执行环境的环境通信接口,接收所述客户端发送的针对所述预设任务的调度策略查询请求,响应于所述调度策略查询请求,确定并向所述客户端的代码执行环境返回调度策略;以及,通过所述调度策略所指示的目标设备的代码执行环境,执行所述客户端调度来的所述预设任务。
22.可选地,所述客户端通过客户端的代码执行环境,获得所述预设任务的环境执行代码,所述环境执行代码为可在所述代码执行环境中执行的代码;将所述预设任务的环境执行代码通过所述代码执行环境的环境通信接口,发送至所述目标设备的代码执行环境中执行。
23.可选地,所述代码执行环境为基于webassembly标准的代码执行环境。
24.根据本技术实施例的第四方面,提供了一种电子设备,包括:处理器、存储器、通信接口和通信总线,所述处理器、所述存储器和所述通信接口通过所述通信总线完成相互间的通信;所述存储器用于存放至少一可执行指令,所述可执行指令使所述处理器执行如第一方面或第二方面所述的任务执行方法对应的操作。
25.根据本技术实施例的第五方面,提供了一种计算机存储介质,其上存储有计算机程序,该程序被处理器执行时实现如第一方面或第二方面所述的任务执行方法。
26.根据本技术实施例的第六方面,提供了一种计算机程序产品,包括计算机指令,所述计算机指令指示计算设备执行如第一方面或第二方面所述的任务执行方法对应的操作。
27.根据本技术实施例提供的任务执行方案,为了减轻客户端的任务执行负担,客户端和云端的设备中均可配置代码执行环境,该代码执行环境可主要用于程序代码的执行过程,客户端和云端的代码执行环境通常相同,这样在客户端可执行的任务在云端也可被执行。基于此,一方面,客户端在通过其代码执行环境来执行程序代码的过程中,如果检测到了预设任务的触发执行代码,则表明预设任务需要被执行,此时,客户端仍然通过该代码执行环境查询并获得针对预设任务的调度策略,以确定将该预设任务调度至云端的某个目标设备执行。因云端设备的性能通常都优于客户端,因此,通过云端执行该预设任务,在减轻客户端的任务执行负担的同时,还可以提升预设任务的执行效率,提升其运行速度,进而优化了客户端性能。另一方面,客户端与云端之间直接通过两者的代码执行环境进行交互,使得预设任务无需再经过额外处理即可被云端目标设备的代码执行环境执行,进一步提升了预设任务的执行效率。并且,客户端在后续可基于云端设备的预设任务的执行结果进行任务反馈,因预设任务执行效率高,则任务反馈效率也高,从而整体上提升了预设任务的执行速度和效率,也提升了客户端的运行速度,优化了客户端性能。
附图说明
28.为了更清楚地说明本技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术实施例中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
29.图1为适用本技术实施例的任务执行方法的示例性系统的示意图;
30.图2a为根据本技术实施例一的一种任务执行方法的步骤流程图;
31.图2b为图2a所示实施例中的一种场景示例的示意图;
32.图3a为根据本技术实施例二的一种任务执行方法的步骤流程图;
33.图3b为图3a所示实施例中的一种任务执行过程示意图;
34.图4为根据本技术实施例三的一种任务执行方法的步骤流程图;
35.图5为根据本技术实施例五的一种电子设备的结构示意图。
具体实施方式
36.为了使本领域的人员更好地理解本技术实施例中的技术方案,下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本技术实施例一部分实施例,而不是全部的实施例。基于本技术实施例中的实施例,本领域普通技术人员所获得的所有其他实施例,都应当属于本技术实施例保护的范围。
37.下面结合本技术实施例附图进一步说明本技术实施例具体实现。
38.图1示出了一种适用本技术实施例的任务执行方法的示例性系统。如图1所示,该边缘云系统100可以包括边缘云102、通信网络1042和/或一个或多个客户端106,图1中示例为多个客户端。此外,该边缘云系统还可与中心云108通过通信网络1044连接,边缘云系统100中的客户端106可通过边缘云102与中心云108通信,也可直接与中心云通信。
39.边缘云102可以实现为用于计算处理、存储信息、数据、程序和/或任何其他合适类型的内容的服务器或服务器集群。在一些实施例中,边缘云102可以执行任何适当的功能。例如,在一些实施例中,边缘云102可以用于分担客户端的数据计算和处理任务,以减轻客户端的负担,并可降低对客户端的软硬件性能要求,从而降低客户端的实现成本。作为可选的示例,在一些实施例中,边缘云102可以被用于通过代码执行环境与客户端106的代码执行环境交互,并可接收客户端106的某些待执行任务以在边缘云102的代码执行环境中执行。
40.在一些实施例中,通信网络1042可以是一个或多个有线和/或无线网络的任何适当的组合。例如,通信网络1042能够包括以下各项中的任何一种或多种:互联网、内联网、广域网(wan)、局域网(lan)、无线网络、数字订户线路(dsl)网络、帧中继网络、异步转移模式(atm)网络、虚拟专用网(vpn)和/或任何其它合适的通信网络。通信网络1044也可以是一个或多个有线和/或无线网络的任何适当的组合。例如,互联网、广域网(wan)、无线网络等。客户端106能够通过一个或多个通信链路连接到通信网络1042和1044,该通信网络1042和1044能够经由一个或多个通信链路被链接到边缘云102和中心云108。通信链路可以是适合于在客户端106和边缘云102和中心云108之间传送数据的任何通信链路,诸如网络链路、拨号链路、无线链路、硬连线链路、任何其它合适的通信链路或此类链路的任何合适的组合。
41.客户端106可以包括可执行数据处理和数据计算等任务的任何一个或多个客户端。在一些实施例中,客户端106可以包括任何合适类型的设备。例如,在一些实施例中,客户端106可以包括智能iot(物联网)设备、移动设备、平板计算机、膝上型计算机、台式计算机、可穿戴计算机、游戏控制台、媒体播放器、车辆娱乐系统和/或任何其他合适类型的客户端。在一些实施例中,客户端106可以用于实现通过其自身的代码安全环境与边缘云102和中心云108中的代码执行环境进行交互,以实现任务调度和执行的客户端。
42.尽管将边缘云102和中心云108均图示为一个设备,但是在一些实施例中,可以使
用任何适当数量的设备来执行由边缘云102和中心云108执行的功能。例如,在一些实施例中,可以使用多个设备来实现由边缘云102执行的功能。或者,可以使用多个设备来实现由中心云108执行的功能。
43.上述系统中,代码执行环境用于为代码运行服务,可通过适当的执行环境工具实现,如webassembly runtime、javascript runtime等实现。但与常规的代码执行环境只能与本地的外环境(代码执行环境以外的环境)通信不同,本技术实施例中的代码执行环境可通过设置的环境通信接口与其它设备中的代码执行环境的环境通信接口直接通信,在极大地提高了通信效率和速度的同时,因是环境与环境之间的通信,所以后续的代码也无需进行环境内外的转换,可直接由一台设备传输到另一台设备运行。此外,本技术实施例中的代码执行环境还扩展了新的功能,可进行针对任务的调度策略查询和交互,并可基于查询和交互结果,将任务传输至相应的目标设备中实现。例如,客户端106可以通过其自身的代码安全环境向边缘云102和/或中心云108中的代码执行环境发送调度策略查询请求,并可在获得结果后将相应的待执行任务发送至相应的边缘云102和/或中心云108中的代码执行环境中执行,从而实现任务调度。
44.基于上述系统,本技术实施例提供了一种任务执行方法,以下通过多个实施例进行说明。
45.实施例一
46.参照图2a,示出了根据本技术实施例一的一种任务执行方法的步骤流程图。
47.本实施例从边缘云系统的客户端的角度对本技术实施例的任务执行方法进行说明,该任务执行方法包括以下步骤:
48.步骤s202:在通过代码执行环境执行程序代码的过程中,检测到预设任务的触发执行代码。
49.本技术实施例中,客户端需要能够支持代码执行环境,以在其中运行程序代码。该代码执行环境可预先设置,在有程序需要使用时进行初始化,也可以在有程序需要代码执行环境支持其运行时,为该程序创建并初始化。在初始化后提供给程序使用。
50.在具体实现时,代码执行环境可根据客户端的实际情况,由本领域技术人员采用适当的工具实现,例如,通过webassembly runtime或者javascript runtime或者其它runtime等实现。
51.在一种可行方式中,可将代码执行环境实现为基于webassembly标准的代码执行环境。
52.webassembly是由w3c定义的标准化字节文件格式,可以把c 等编程语言编译成webassembly字节格式(也称字节码),并在webassembly runtime中运行;并支持通过其他语言,如javascript中调用webassembly代码模块。其核心是一种面向多应用场景的虚拟指令架构,能够嵌入到不同的应用环境,支持高性能的web应用。作为虚拟机和执行环境,webassembly允许加载的页面作为本机编译代码运行,从而改善web性能和功耗。由此,webassembly可以实现接近原生速度的性能、优化加载时间。webassembly runtime是webassembly的运行时环境,可为运行webassembly代码的虚拟机等运行时环境。webassembly提供沙箱功能,当程序编译成wasm代码模块,再加载到webassembly runtime时,该wasm代码模块运行在其私有的沙箱中。又因webassembly的标准化字节文件格式也可
认为是一种低级程序设计语言,但与机器语言不同,它可以使用更多的字符,相较于机器语言具有更好的灵活性和可扩展性。因其灵活性和可扩展性,可基于此进行相应的功能设置,以满足不同的应用需求。又因不管是使用高级语言的代码还是使用解释型语言的代码均可通过webassembly转换为最终的机器语言代码执行,也即,高级语言代码和解释型语言代码与webassembly字节码不具有直接相通性,因此,使得webassembly runtime还可以对代码进行有效隔离,从而实现代码执行环境的安全性保障。又因webassembly标准较为成熟,将其应用于代码执行环境的实现还可大大节约方案实现成本,节省研发费用。
53.但如前所述,其它基于与webassembly标准类似的标准构建的代码执行环境,以及其它语言的代码执行环境同样可适用本技术实施例的方案。
54.基于构建完成的代码执行环境,即可进行程序代码的运行,例如,若该代码执行环境设置于浏览器框架中,则可结合js引擎,进行网页代码的边解析边运行,即,在js引擎解析后,代码将交由该代码执行环境运行。类似地,其它语言的代码也可以交由该代码执行环境运行。
55.但在该代码执行环境中运行的代码的本质仍为完成某些任务的程序代码,因此,代码执行环境可对这些程序代码进行检测,以确定是否存在预设任务的程序代码。本实施例中,预设任务的程序代码通常为需要交由云端(可以包括边缘云102和中心云108中的至少一种)执行的代码,如可以交由边缘云102执行的代码,或者交由中心云108执行的代码,或者部分交由边缘云102执行部分交由中心云108执行的代码。在实际应用中,预设任务可由本领域技术人员根据实际需求设置,如,可将需要消耗较多算力或资源的任务作为预设任务。但不限于此,其它类型的任务也可同样适用于本技术实施例的方案。
56.预设任务的执行通常会由一定的代码来触发,如,调用代码、指令代码、触发指令等等,在代码执行环境执行程序代码的过程中,如果检测到预设任务对应的这些触发执行代码,则表示有预设任务需要被执行,且需被调度至云端执行。因此,将会触发代码执行环境进行下述步骤s204

s206的操作。
57.步骤s204:根据触发执行代码,通过代码执行环境进行调度策略查询,获得针对预设任务的调度策略。
58.本技术实施例中,代码执行环境不仅具有常规的代码运行支持功能,且具有调度功能,包括调度策略查询和调度执行功能,其中,调度策略用于指示将预设任务调度至云端的某目标设备中运行。但具体调度至哪台设备,需要客户端通过调度策略查询获得。该调度策略查询通常可由客户端向云端(如边缘云和/或中心云)查询,但在某些情况下,客户端本地也可配置调度策略,则此种情况下,客户端也可进行本地调度策略查询。在云端配置调度策略,除可有效实现预设任务的调度执行外,还可实现调度策略的共享,节约系统资源。而如果在客户端本地也配置调度策略,则可为客户端用户提供更大的调度灵活性,便于客户端用户实现个性化的调度需求。
59.需要说明的是,在云端和客户端均配置有调度策略的情况下,可为两端的调度策略设置优先级,具体的设置规则可由本领域技术人员根据实际需求设定,本技术实施例对此不作限制。
60.以云端配置有调度策略为例,在进行调度策略查询时,可由客户端的代码执行环境通过环境通信接口,向云端(可为云端的所有设备或部分设备)发送查询请求,云端通过
其自身的代码执行环境的环境通信接口接收到该查询请求后,基于预设的规则确定可执行预设任务的目标设备,进而基于确定的目标设备的信息生成调度策略,并将该调度策略通过云端的代码执行环境的环境通信接口返回给客户端的代码执行环境的环境通信接口,由此,实现将调度策略返回给客户端。
61.步骤s206:将预设任务通过代码执行环境的环境通信接口,调度至获得的调度策略所指示的云端目标设备的代码执行环境中执行。
62.如上所述,调度策略中包含有可执行预设任务的目标设备的信息。目标设备通常为边缘云中的设备或中心云中的设备,且该设备中也创建有代码执行环境。目标设备的信息可以包括但不限于目标设备的标识、地址、代码执行环境的环境通信接口的信息等。基于此,客户端可直接进行基于代码执行环境的交互。
63.则,客户端在接收到调度策略后,即可从中获得目标设备的信息,基于该目标设备的信息,通过客户端的代码执行环境的环境通信接口,向目标设备的代码执行环境的环境通信接口发送消息和数据,以将预设任务直接交由目标设备执行。例如,直接将webassembly字节码交由目标设备的webassembly runtime直接执行,而无需额外的代码转换等操作。
64.以下,以一个具体场景为示例对上述过程进行示例性说明,如图2b所示。
65.图2b中,假设客户端为一智能音箱,其需要通过人脸识别来确定对其发送指令的用户是否为特定用户,本示例中为用户a。若为特定用户即用户a,则根据该用户a的指令控制与其通信连接的多个智能家电进行所述指令所指示的操作。本示例中,诸如人脸识别等消耗大量算力和资源的任务将交由与智能音箱通信连接的边缘云实现,由此,可以提升智能音箱的运行速度,优化其性能,且可降低对其软硬件性能的要求。
66.例如,智能音箱首先通过语音采集设备如麦克风采集到语音指令,如“请打开卧室的空调”;接着,智能音箱将通过其摄像头进行其前方的人脸采集。本示例中,假设对人脸图像的处理通过智能音箱本地的代码执行环境执行,人脸图像处理中进行人脸识别的操作被封装为一个api程序(本示例中为wasm程序代码)。此外,在人脸图像处理对应的程序代码中还包括指示该人脸识别操作的api程序通过智能音箱的代码执行环境(本示例中为webassembly runtime)进行调度的指示代码。在一种方式中,该指示代码可预先以适当方式通知代码执行环境该api程序需调度执行。但不限于此,其它通知方式也同样适用。
67.基于此,智能音箱会创建一个代码执行环境如webassembly runtime

x,以在该webassembly runtime

x中运行人脸图像处理的程序代码。当该程序代码被运行至调用该api程序的代码段时,webassembly runtime

x根据预先获知的信息,确定该api程序需要调度至云端执行。则,webassembly runtime

x通过其环境通信接口向边缘云中的设备1、2和3中的代码执行环境,分别为webassembly runtime

y1、webassembly runtime

y2和webassembly runtime

y3发送调度策略查询请求。webassembly runtime

y1、webassembly runtime

y2和webassembly runtime

y3在接收到该查询请求后,分别根据自身的负载和/或网络情况确定是否可执行人脸识别的api程序,假设,最终确定webassembly runtime

y1可执行,则可确定其对应的设备1即为目标设备。进而,可基于设备1的信息,如标识、地址、webassembly runtime

y1的环境通信接口等信息生成调度策略。需要说明的是,该调度策略的生成可由设备1、2、3中的任一设备生成,也可指定由可执行预设任务的设备如设备1生
成。本示例中,设定由设备1生成。在生成调度策略后,设备1通过其webassembly runtime

y1的环境通信接口向webassembly runtime

x的环境通信接口发送该调度策略。webassembly runtime

x在接收到该调度策略后,即通过webassembly runtime

x的环境通信接口与webassembly runtime

y1的环境通信接口建立通信连接,并将用于执行api程序的相应信息和数据发送给webassembly runtime

y1。例如,可选将webassembly runtime

x的运行环境参数发送给webassembly runtime

y1,以使webassembly runtime

y1基于该环境参数进行初始化,形成与webassembly runtime

x相同的运行环境;再将api程序的wasm代码通过双方的环境通信接口,由webassembly runtime

x发送给webassembly runtime

y1。在webassembly runtime

y1接收到api程序的wasm代码后,即可直接执行。本示例中,webassembly runtime

y1将执行该api程序,对智能音箱采集的人脸图像进行识别,并在获得识别结果后,将识别结果通过双方的环境通信接口返回给webassembly runtime

x。本示例中,设定通过识别确定图像中的人脸即为用户a的人脸,webassembly runtime

y1将该结果返回给webassembly runtime

x,webassembly runtime

x接收到该结果后,即可基于该结果进行后续的处理,如向智能音箱返回一个确定的信号和指令,指示智能音箱向卧室空调发送开启指令,以打开其所连接的卧室空调。
68.可见,本示例中,智能音箱无需处理诸如人脸识别等耗费大量算力和资源的程序代码,只需具备基本的诸如语音采集、识别、图像采集、设备控制等功能,从而大大降低了对智能音箱的性能要求,且提升了其数据处理速度。
69.以上以智能音箱为示例进行了说明,但本领域技术人员应当明了,其它设备如扫地机器人的路径规划、手机等移动终端的ai处理及其它高算力高消耗处理等等,均可通过本技术实施例的方式交由云端运行。
70.通过本实施例,为了减轻客户端的任务执行负担,客户端和云端的设备中均可配置代码执行环境,该代码执行环境可主要用于程序代码的执行过程,客户端和云端的代码执行环境通常相同,这样在客户端可执行的任务在云端也可被执行。基于此,一方面,客户端在通过其代码执行环境来执行程序代码的过程中,如果检测到了预设任务的触发执行代码,则表明预设任务需要被执行,此时,客户端仍然通过该代码执行环境查询并获得针对预设任务的调度策略,以确定将该预设任务调度至云端的某个目标设备执行。因云端设备的性能通常都优于客户端,因此,通过云端执行该预设任务,在减轻客户端的任务执行负担的同时,还可以提升预设任务的执行效率,提升其运行速度,进而优化了客户端性能。另一方面,客户端与云端之间直接通过两者的代码执行环境进行交互,使得预设任务无需再经过额外处理即可被云端目标设备的代码执行环境执行,进一步提升了预设任务的执行效率。并且,客户端在后续可基于云端设备的预设任务的执行结果进行任务反馈,因预设任务执行效率高,则任务反馈效率也高,从而整体上提升了预设任务的执行速度和效率,也提升了客户端的运行速度,优化了客户端性能。
71.实施例二
72.参照图3a,示出了根据本技术实施例二的一种任务执行方法的步骤流程图。
73.本实施例仍然从客户端的角度对本技术实施例的任务执行方法进行说明,该任务执行方法包括以下步骤:
74.步骤s302:确定用于调度至云端执行的预设任务,并基于所述预设任务生成系统
调用指令。
75.如前所述,所述预设任务可由本领域技术人员根据实际情况设定,为了减轻客户端负担,提升其运行速度,可将算力和资源消耗大的任务确定为预设任务。但不限于此,其它在云端执行效果更好或有助力于影响终端性能的任务都可设定为预设任务。
76.在确定了预设任务后,即可基于该预设任务生成相应的系统调用指令。一方面,系统调用指令可用于调用预设任务所在的功能模块,如预设任务被封装为api程序,则系统调用指令可通过调用该api程序来调用执行预设任务,以实现相应的功能。另一方面,系统调用指令还可指示被调用的预设任务需要代码执行环境运行,并可通过代码执行环境调度至云端执行。
77.系统调用指令可采用适当方式实现,如通过sdk或者通过library方式等实现。可选地,系统调用指令设置于所述预设任务所属应用所使用的编程语言的链接库中。例如,针对预设任务所属应用所使用的编程语言library扩展功能,使其支持将预设任务的程序代码调度到边缘云或中心云上执行。通过扩展的library功能,可供给开发者可以调用的api,来加载需要调度至云端执行的程序代码,仅需根据开发者编程语言(如java、c )等来开发相关扩展库(library)即可实现,实现方便,实现成本低。
78.步骤s304:接收到包含有调用所述预设任务的系统调用指令;为系统调用指令所对应的程序创建代码执行环境,以使所述预设任务在代码执行环境中执行。
79.因系统调用指令可指示程序代码通过代码执行环境来运行,因此,在接收到该系统调用指令后,可根据该系统调用指令来创建代码执行环境,以供相应的程序代码(如,预设任务所在程序的部分或全部程序代码)运行使用。
80.在一种可行方式中,代码执行环境为基于webassembly标准的代码执行环境。采用webassembly标准的代码执行环境,除可供代码运行外,还可有效保障代码运行的安全性,以及可简单且低成本地实现代码运行的环境需求。
81.以webassembly runtime为例,可根据系统调用指令创建一个针对预设任务的私有webassembly沙箱,以使预设任务的程序代码在该私有沙箱中执行。
82.因预设任务需要在代码执行环境中执行,因此,可预先将包含预设任务的相关代码段编译为环境执行代码,即可在代码执行环境中运行的代码。仍以代码执行环境为webassembly runtime为例,则可先将相关代码段编译为wasm代码(即webassembly字节码),以可以直接在webassembly runtime中运行。
83.步骤s306:在通过代码执行环境执行程序代码的过程中,检测到预设任务的触发执行代码。
84.本步骤的具体实现可参照实施例一中步骤s202中的相关描述,在此不再赘述。
85.步骤s308:根据触发执行代码,通过代码执行环境进行调度策略查询,获得针对预设任务的调度策略。
86.在一种可行方式中,本步骤可以实现为:根据触发执行代码,通过代码执行环境向边缘云和/或中心云发送针对预设任务的调度策略查询请求;接收响应于调度策略查询请求的查询结果,根据查询结果获得针对预设任务的调度策略。此种方式中,调度策略查询请求由云端处理并生成调度策略,既方便了与调度策略相关的数据的共享,又可减轻客户端的数据处理负担,提升客户端运行速度。
87.在另一种可行方式中,本步骤可以实现为:根据触发执行代码,通过代码执行环境进行客户端本地的调度策略查询,并获得针对预设任务的调度策略。此种方式中,客户端也具有调度策略确定和生成功能,为客户端用户进行预设任务调度提供了更大的灵活性。
88.调度策略查询可采用任意适当的消息方式实现,包括但不限于:http消息、https消息、rpc消息、中间件消息等等。
89.当采用上述第一种可行方式时,可由客户端通过其代码执行环境向云端的部分或全部设备中的代码执行环境发送查询请求消息。则云端设备在通过代码执行环境接收到该查询请求消息后,可根据自身的运行状态信息,如负载状态信息、网络状态信息等来确定可执行所述预设任务的目标设备,基于该目标设备生成调度策略,并可通过目标设备的代码执行环境发送给客户端的代码执行环境。需要说明的是,本技术实施例中,如无特殊说明,不同代码执行环境之间的交互均可通过相应的环境通信接口来发送或接收数据,以实现交互。
90.在生成的调度策略中通常至少包括有目标设备的信息,包括但不限于:标识信息、地址信息、目标设备的代码执行环境的环境通信接口的信息等。
91.步骤s310:将预设任务通过代码执行环境的环境通信接口,调度至获得的调度策略所指示的云端目标设备的代码执行环境中执行。
92.因本技术实施例中,客户端的代码执行环境和云端的代码执行环境为相同类型的环境,如均为webassembly runtime,或者均为javascript runtime。基于此,可将预设任务的程序代码传输至目标设备中直接执行。
93.为保证预设任务的直接执行的高效实现,在一种可行方式中,可通过客户端的代码执行环境,获得预设任务的环境执行代码,所述环境执行代码为可在所述代码执行环境中执行的代码;将预设任务的环境执行代码通过代码执行环境的环境通信接口,调度至获得的调度策略所指示的云端目标设备的代码执行环境中执行。由此,无需额外的代码处理和转换,即可使得预设任务可运行于云端目标设备中的代码执行环境。
94.在具体实现时,可通过客户端的代码执行环境的环境通信接口,向调度策略所指示的云端目标设备的代码执行环境的环境通信接口发送客户端的代码执行环境的环境参数和预设任务的环境执行代码,以使云端目标设备根据环境参数初始化云端目标设备自身的代码执行环境,并在初始化完成后执行预设任务的环境执行代码。由此,可保证云端目标设备的代码执行环境与客户端的代码执行环境的一致性,以便于预设任务的直接、无缝执行。
95.步骤s312:接收云端目标设备通过其代码执行环境的环境通信接口,向客户端的代码执行环境的环境通信接口返回的预设任务的执行结果。
96.预设任务在云端目标设备的代码执行环境中执行完成后,获得执行结果,如人脸识别结果、路径规划结果、语义分析结果等等。云端目标设备通过其代码执行环境的环境通信接口向客户端的代码执行环境的环境通信接口发送该执行结果。客户端在接收到该执行结果后,可根据该执行结果进行后续的操作,如基于该执行结果进行后续的程序调用或直接反馈该执行结果给相应的程序等,本技术实施例对此不作限制。
97.以下,以一个预设任务的任务执行过程为示例,对上述过程进行说明,如图3b所示。
98.由图3b可见,客户端、边缘云和中心云中均设置有调度模块,本示例中,客户端的调度模块用于负责调度策略的查询与执行,该调度策略查询与执行可通过客户端的针对预设任务所属应用所使用的编程语言library进行功能扩展所扩展出的功能来实现,例如,通过扩展功能可确定可执行预设任务的程序代码的目标设备,比如调度到边缘云上执行、或调度到中心云上执行等。具体地,可针对预设任务所属应用所使用的编程语言library的扩展功能,使其支持预设任务的程序代码调度到边缘云或中心云执行。如,可提供给开发者可以调用的api,来加载需要调用到云端执行的程序代码,以使开发者根据特定的开发者编程语言(如java、c )等来开发相关扩展库(library)。
99.本示例中,一方面,调度策略部署在中心云和边缘云上,客户端的调度模块可以通过边缘云和/或中心云去查询获得相关调度策略。另一方面,客户端也静态预配置有调度策略,以进行本地调度策略查询。
100.此外,本示例的客户端中还配置有远程代码调用功能模块,负责把客户端的预设任务的程序代码发送给边缘云或中心云来执行,并获取执行结果。在实现时,该功能模块可实现的功能包括:通知云端的代码执行环境有关待执行的预设任务的信息和数据、将本地的代码执行环境的环境参数发送给云端以使云端初始化自身的代码执行环境并执行预设任务;在云端执行完毕后,通过代码执行环境之间的环境通信接口接收云端返回的执行结果。
101.不管是在客户端、边缘云还是中心去,都支持代码执行环境并设置有代码执行环境之间的环境通信接口,以负责客户端、边缘云、中心云的代码执行环境之间的通信功能。
102.本示例中,仍以代码执行环境为webassembly runtime为例,基于上述配置,对任务执行过程进行说明。该过程包括:
103.(1)、将客户端的预设任务的程序代码如应用程序中计算复杂度高的任务代码等,编译成为webassembly代码模块,并通过针对此应用程序所使用的编程语言的library的扩展功能提供的接口(api),加载webassembly代码模块,并指示此webassembly代码模块需要在云端执行(该操作也称为offload)。
104.不管是java源程序代码,还是c 源程序代码,或者其它编程语言的代码,可将它们编译成wasm代码,可以认为这部分代码是需要调度至云端执行的代码。
105.本示例中,以java源程序代码为例,将其编译为wasm代码,即图中所示的“offload wasm code”。
106.(2)、客户端的webassembly runtime中的调度模块通过网络查询位于边缘云或中心云的调度模块,根据边缘云或中心云的调度模块提供的调度策略,决策在哪个边缘云或中心云来执行此offload的webassembly代码模块。
107.(3)、位于边缘云或中心云的调度模块提供对客户端webassembly runtime发送来的调度策略查询的响应,并向客户端返回调度策略。其中,调度策略可以根据边缘云或中心去的运行负载情况、客户端与边缘云或中心云的网络连接情况等参数来确定。
108.(4)、客户端根据收到的调度策略,将offload的webassembly代码模块通过网络发送给边缘云或中心云的webassembly runtime中。
109.(5)、边缘云或中心云的webassembly runtime对offload的webassembly代码模块进行执行,并将执行结果通过网络返回给客户端的webassembly runtime。此步骤中,可采
用异步执行机制,即边缘云或中心云执行offload的webassembly代码模块不会阻塞客户端程序的执行。
110.此外,客户端中需要offload的webassembly代码模块如果需要多次执行,每次执行均可按照上述过程,根据客户端与边缘云或中心云的网络连接情况、边缘云或中心云的负载情况等来灵活地确定可执行webassembly代码模块的设备。当客户端与边缘云或中心云的网络连接状况不佳,或边缘云或中心云无额外资源时,webassembly代码模块可以回退到客户端的webassembly runtime中执行。由此,通过灵活的调度策略,可提升客户端程序运行效率,并提升鲁棒性及可靠性。
111.由上述可见,本示例中,提供基于webassembly代码模块为粒度的offload,对原应用程序改动较小,便于部署;并且,能适合于各种不同设计架构的应用程序中,通用性好;此外,基于webassembly runtime进行扩展,性能及成熟度好,可方便且容易地用于多种场景中。
112.此外,通过本实施例,为了减轻客户端的任务执行负担,客户端和云端的设备中均可配置代码执行环境,该代码执行环境可主要用于程序代码的执行过程,客户端和云端的代码执行环境通常相同,这样在客户端可执行的任务在云端也可被执行。基于此,一方面,客户端在通过其代码执行环境来执行程序代码的过程中,如果检测到了预设任务的触发执行代码,则表明预设任务需要被执行,此时,客户端仍然通过该代码执行环境查询并获得针对预设任务的调度策略,以确定将该预设任务调度至云端的某个目标设备执行。因云端设备的性能通常都优于客户端,因此,通过云端执行该预设任务,在减轻客户端的任务执行负担的同时,还可以提升预设任务的执行效率,提升其运行速度,进而优化了客户端性能。另一方面,客户端与云端之间直接通过两者的代码执行环境进行交互,使得预设任务无需再经过额外处理即可被云端目标设备的代码执行环境执行,进一步提升了预设任务的执行效率。并且,客户端在后续可基于云端设备的预设任务的执行结果进行任务反馈,因预设任务执行效率高,则任务反馈效率也高,从而整体上提升了预设任务的执行速度和效率,也提升了客户端的运行速度,优化了客户端性能。
113.实施例三
114.参照图4,示出了根据本技术实施例三的一种任务执行方法的步骤流程图。
115.本实施例从云端(边缘云或中心云)的角度对本技术实施例的任务执行方法进行说明,该任务执行方法包括:
116.步骤s402:通过代码执行环境的环境通信接口,接收从客户端的代码安全环境发送来的针对预设任务的调度策略查询请求。
117.客户端在有预设任务需要调度至云端执行时,会通过其自身的代码执行环境向云端的部分或全部设备的代码执行环境发送调度策略查询请求,云端设备通过代码执行环境接收该调度策略查询请求。
118.客户端与云端设备之间进行基于代码执行环境的交互时,通过各自代码执行环境的环境通信接口实现。
119.在一种可行方式中,双方的代码执行环境均可实现为基于webassembly标准的代码执行环境。该代码执行环境的具体实现方式及相应的效果均可参照前述实施例中相应部分的描述,在此不再赘述。
120.步骤s404:响应于调度策略查询请求,获取云端的运行状态信息。
121.其中,云端的运行状态信息包括云端设备的负载状态信息和/或网络连接状态信息。其中,负载状态信息用于指示云端设备的当前负载状态,如忙、空闲、一般,或者,可通过具体的运行负载数据如算力情况、cpu占用情况等数据表征;网络连接状态信息用于指示云端设备与客户端的网络连接状态,如网络连接正常、阻塞、卡断等等。本技术实施例对负载状态信息和网络连接状态信息的具体表达形式不作限制。通过负载状态信息和/或网络连接状态信息,可准确判断某个云端设备是否适于执行客户端的预设任务。
122.步骤s406:根据运行状态信息确定云端的可执行预设任务的目标设备,并根据目标设备确定调度策略。
123.如前所述,根据运行状态信息可准确地确定执行预设任务的云端设备作为目标设备,在确定了目标设备后,即可基于该目标设备的信息生成相应的调度策略,该调度策略中包含有该目标设备的信息,包括但不限于:目标设备的标识信息、地址信息、代码执行环境的环境通信接口的信息等等。
124.该调度策略可由目标设备生成,也可由云端接收到客户端的调度策略查询请求的其它设备生成。
125.步骤s408:通过云端的代码执行环境的环境通信接口,将调度策略发送给客户端的代码执行环境。
126.本步骤中,若调度策略由目标设备生成,则可由目标设备通过其自身的代码执行环境的环境通信接口,向客户端的代码执行环境发送调度策略。若调度策略由其它设备生成,则可由生成调度策略的设备通过其自身的代码执行环境的环境通信接口,向客户端的代码执行环境发送该调度策略。当然,客户端的代码执行环境也是通过其自身的环境通信接口进行调度策略的接收。
127.在上述基础上,可选地,还可执行以下步骤:
128.步骤s410:通过目标设备中的代码执行环境的环境通信接口,接收客户端发送的客户端的代码执行环境的环境参数和预设任务的环境执行代码。
129.其中,环境执行代码为可在代码执行环境中执行的代码。
130.步骤s412:根据环境参数初始化目标设备的代码执行环境,并在初始化完成后执行预设任务的环境执行代码。
131.如前述实施例中所述,为保持代码执行环境的一致性,客户端会将自身代码执行环境的环境参数发送给目标设备,以使目标设备根据该环境参数初始化目标设备的代码执行环境,进而在初始化后可执行预设任务的环境执行代码。
132.需要说明的是,环境参数和预设任务的环境执行代码可由客户端通过一个消息发送,则目标设备一次接收后分别进行处理,以提高传输效率;或者,可由客户端先通过一个消息发送环境参数,再通过另一消息发送预设任务的环境执行代码,以减轻网络传输负担。
133.步骤s414:通过目标设备中的代码执行环境的环境通信接口,向客户端的代码执行环境返回预设任务的执行结果。
134.目标设备和客户端之间仍然通过双方各自的环境通信接口进行基于代码执行环境的交互,以完整执行和完成预设任务。
135.此外,在执行步骤s406时,若根据运行状态信息确定云端不存在可执行预设任务
的目标设备(如云端设备的负载状态均为忙),则通过云端的代码执行环境的环境通信接口,向客户端的代码执行环境返回任务拒绝信息,以使客户端在自身的代码执行环境中执行预设任务。其中,向客户端发送拒绝信息可由云端的任意设备执行,通常可为网络连接状态较好或负载状态较好的设备执行,但也可由其它设备执行,本技术实施例对此不作限制。
136.通过本实施例,云端与客户端协作,将客户端的预设任务转由云端执行。两者基于各自的代码执行环境通过环境通信接口进行交互,实现预设任务的高效执行。从而,从整体上提升了预设任务的执行速度和效率,提升了客户端的运行速度,优化了客户端性能。
137.实施例四
138.再次参照图1,基于前述多个实施例中的描述,对本技术实施例的任务执行系统进行说明。
139.如前所述,本实施例的任务执行系统基于边缘云技术,该任务执行系统至少包括:客户端106和云端,该云端可以包括边缘云102和/或中心云108。
140.其中:
141.客户端106,用于在通过代码执行环境执行程序代码的过程中,检测到预设任务的触发执行代码;根据触发执行代码,通过代码执行环境向云端即边缘云102和/或中心云108进行调度策略查询,获得针对预设任务的调度策略;将预设任务通过代码执行环境的环境通信接口,调度至获得的调度策略所指示的云端目标设备的代码执行环境中执行。
142.云端即边缘云102和/或中心云108,用于通过边缘云102和/或中心云108中的设备的代码执行环境的环境通信接口,接收客户端106发送的针对预设任务的调度策略查询请求,响应于调度策略查询请求,确定并向客户端106的代码执行环境返回调度策略;以及,通过调度策略所指示的目标设备的代码执行环境,执行客户端106调度来的预设任务。
143.可选地,客户端106通过客户端的代码执行环境,获得预设任务的环境执行代码,所述环境执行代码为可在代码执行环境中执行的代码;将预设任务的环境执行代码通过代码执行环境的环境通信接口,发送至目标设备的代码执行环境中执行。
144.可选地,代码执行环境为基于webassembly标准的代码执行环境。
145.需要说明的是,本实施例的系统的各个部分描述较为简单,相关部分的功能实现可参照前述多个方法实施例中的相关描述,在此不再赘述。
146.本实施例的任务执行系统可实现前述多个方法实施例中相应的任务执行方法,并具有相应的方法实施例的有益效果,在此不再赘述。此外,本实施例的任务执行系统中的各个部分的功能实现均可参照前述方法实施例中的相应部分的描述,在此亦不再赘述。
147.实施例五
148.参照图5,示出了根据本技术实施例五的一种电子设备的结构示意图,本技术具体实施例并不对电子设备的具体实现做限定。
149.如图5所示,该电子设备可以包括:处理器(processor)502、通信接口(communications interface)504、存储器(memory)506、以及通信总线508。
150.其中:
151.处理器502、通信接口504、以及存储器506通过通信总线508完成相互间的通信。
152.通信接口504,用于与其它电子设备或服务器进行通信。
153.处理器502,用于执行程序510,具体可以执行上述任务执行方法实施例中的相关
步骤。
154.具体地,程序510可以包括程序代码,该程序代码包括计算机操作指令。
155.处理器502可能是中央处理器cpu,或者是特定集成电路asic(application specific integrated circuit),或者是被配置成实施本技术实施例的一个或多个集成电路。智能设备包括的一个或多个处理器,可以是同一类型的处理器,如一个或多个cpu;也可以是不同类型的处理器,如一个或多个cpu以及一个或多个asic。
156.存储器506,用于存放程序510。存储器506可能包含高速ram存储器,也可能还包括非易失性存储器(non

volatile memory),例如至少一个磁盘存储器。
157.程序510具体可以用于使得处理器502执行前述实施例一至三中任一实施例所描述的任务执行方法。
158.程序510中各步骤的具体实现可以参见上述任务执行方法实施例中的相应步骤和单元中对应的描述,在此不赘述。所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的设备和模块的具体工作过程,可以参考前述方法实施例中的对应过程描述,在此不再赘述。
159.本技术实施例还提供了一种计算机程序产品,包括计算机指令,该计算机指令指示计算设备执行上述多个方法实施例中的任一任务执行方法对应的操作。
160.需要指出,根据实施的需要,可将本技术实施例中描述的各个部件/步骤拆分为更多部件/步骤,也可将两个或多个部件/步骤或者部件/步骤的部分操作组合成新的部件/步骤,以实现本技术实施例的目的。
161.上述根据本技术实施例的方法可在硬件、固件中实现,或者被实现为可存储在记录介质(诸如cdrom、ram、软盘、硬盘或磁光盘)中的软件或计算机代码,或者被实现通过网络下载的原始存储在远程记录介质或非暂时机器可读介质中并将被存储在本地记录介质中的计算机代码,从而在此描述的方法可被存储在使用通用计算机、专用处理器或者可编程或专用硬件(诸如asic或fpga)的记录介质上的这样的软件处理。可以理解,计算机、处理器、微处理器控制器或可编程硬件包括可存储或接收软件或计算机代码的存储组件(例如,ram、rom、闪存等),当所述软件或计算机代码被计算机、处理器或硬件访问且执行时,实现在此描述的任务执行方法。此外,当通用计算机访问用于实现在此示出的任务执行方法的代码时,代码的执行将通用计算机转换为用于执行在此示出的任务执行方法的专用计算机。
162.本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及方法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本技术实施例的范围。
163.以上实施方式仅用于说明本技术实施例,而并非对本技术实施例的限制,有关技术领域的普通技术人员,在不脱离本技术实施例的精神和范围的情况下,还可以做出各种变化和变型,因此所有等同的技术方案也属于本技术实施例的范畴,本技术实施例的专利保护范围应由权利要求限定。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献