CN106575241B - 移动和远程运行时集成 - Google Patents
移动和远程运行时集成 Download PDFInfo
- Publication number
- CN106575241B CN106575241B CN201580031975.3A CN201580031975A CN106575241B CN 106575241 B CN106575241 B CN 106575241B CN 201580031975 A CN201580031975 A CN 201580031975A CN 106575241 B CN106575241 B CN 106575241B
- Authority
- CN
- China
- Prior art keywords
- application
- computing node
- client device
- computing
- function
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- 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
- 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/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/5044—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering hardware capabilities
-
- 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/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/505—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
-
- 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/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/5055—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering software capabilities, i.e. software resources associated or available to the machine
Abstract
一种应用程序可以被分析以便识别可被使用远程计算节点来执行的候选类或方法。基于所述应用程序在其上运行的装置的性能特征、所述装置在其中操作的环境、以及所述远程计算节点的性能和可用性,候选类或方法可以被改变位置到所述远程计算节点。应用程序发布者可以被指派可专用于托管改变位置的类和方法的虚拟机实例。
Description
相关申请的交叉引用
本申请要求2014年6月16日提交的、题目为“MOBILE AND REMOTE RUNTIMEINTEGRATION”的、代理人案卷号101058.000206的美国专利申请号14/306,173;以及2014年6月16日提交的、题目为“MOBILE AND REMOTE RUNTIME INTEGRATION”的代理人案卷号101058.000171的美国专利申请号14/306,168的权益,所述专利申请的公开内容通过引用以其整体并入本文。
背景
在客户端装置与远程定位的计算资源之间分配工作量的传统方法可依赖在客户端装置上执行的程序与远程计算设施所提供的服务之间的限定接口。在客户端上执行的程序可以例如被设计以便包括用于调用对一组预定义网络服务的各种方法的调用的指令。类似地,网络服务可以被设计以便提供一组具体功能,所述具体功能在设计时间被认为最好由远程计算设施处运行的服务执行,而不是被客户端装置执行。换言之,在设计时间设置客户端装置上执行的程序与远程计算资源之间的边界。可基于各种假设(诸如客户端装置的能力和远程计算资源的可用性)设置边界。然而,这些假设可随时间改变。
附图简述
结合附图阅读时,将更好地理解以下详细描述。为了说明的目的,在附图中示出本公开的方面的各种示例;然而本发明不限于所公开的具体方法和工具。
图1A描绘用于执行程序的分布式执行的系统的示例,所述程序被使用统一范式来开发以用于开发利用远程计算设施的应用。
图1B为描绘代表应用发布者将基于云的计算资源分配到应用程序的实施方案的方框图。
图2为描绘在编译之前的应用程序的方框图,其中应用程序中的至少一个类或方法已经被注释以便指示改变位置的可能性。
图3为描绘用于执行类或方法依赖关系的静态分析以便确定类或方法对于改变位置的适合性的过程的图。
图4为描绘在执行程序中的类或方法的监测和改变位置、以及无状态方法和有状态方法的调用的图。
图5为描绘用于确定应用程序段对改变位置的适合性的应用程序的静态分析的流程图。
图6为描绘用于基于指派的分数以及根据监测应用程序的执行而调整的分数,选择类或方法以用于改变位置的实施方案的流程图。
图7为描绘用于分布式应用中的对象的对象版本追踪和承诺模型的流程图。
图8为描绘其中可实践本公开的方面的计算环境的实施方案的方框图。
图9为描绘其上可实践本公开的方面的计算系统的实施方案的方框图。
详述
各种形式的移动电话、平板计算机、游戏控制台、个人计算机和其他客户导向的计算装置,可具有相当大的计算能力。然而,这些装置中的任何一个的能力被装置的内置硬件限制。开发者可写入针对能力最弱类型的装置定制的应用程序。然而,此方法限制应用程序的能力并且未充分使用装置的能力。开发者还可写入应用程序,所述应用程序扩展到它们在其上运行的装置的能力。此方法可更好地使用装置的硬件,但也可能增加开发应用程序的复杂程度和成本。
替代方法可包含利用可扩展计算资源,诸如远程计算设施,有时被称为云计算。远程计算设施可包含可以被客户端装置利用的某个数目的计算资源,其可包括先前段落中描述的移动电话、平板计算机、游戏控制台、个人计算机。用于与远程计算设施交互的各种方法已被采用。这些方法包括例如远程过程调用、网络服务、表现状态传输(“REST”)协议等。所有的这些方法包含对开发者部分的某种明确确定:应用的功能性的特定方面应当被远程计算装置执行。因此,尽管这些方法可给应用程序提供的能力超过客户端装置所提供的能力,利用远程计算设施的程度可能唯一地取决于开发者的预见。
这些方法的另一个方面(诸如远程过程调用、网络服务、REST接口等)是它们包含的独立编程范式或方法不同于应用程序的剩余部分中使用的编程范式或方法。为了与远程计算装置交互,开发者写入专门化的代码以用于与远程计算装置交互。例如,开发者可写入代码,所述代码将参数格式化到以统一资源定位符(“URL”)格式的REST接口调用。开发者也可写入代码以便通过进行超文本传输协议(“HTTP”)请求来明确地调用REST接口。与远程服务的此交互方法不同于与代码交互的方法,所述代码对于将在其上运行应用程序的装置是本地的。为了调用本地执行的功能,开发者可使用对于写入应用程序的语言常规的语法。
在各种实施方案中,本公开的方面可以被采用,以便实现用于开发应用程序的统一范式,所述应用程序利用远程计算设施的能力。在各种实施方案中,本公开的方面还可以被采用以便动态调整利用远程计算设施的程度。
图1A和图1B描绘用于执行程序的分布式执行的系统的示例,所述程序使用统一范式来开发以用于开发利用远程计算设施的应用。
如本文所使用的,术语应用程序可以指存储的指令,包括可执行文件、动态链接库、静态链接库等。术语应用程序还可以指源代码、文本文件等,以及中间指令、字节码和其他形式的存储指令。术语应用程序可以指一组与各种计算应用的实现相关的一个或多个文件。应用程序的副本(例如,一个或多个相关文件)可下载到客户端装置并且存储在其上。第二副本可存储在远程计算装置上,改变位置的类或方法可在所述远程计算装置上执行。如本文所使用的,术语改变位置可以指远程执行对象或功能的某个部分。尽管在一些情况和实施方案中,改变位置可包含整个对象的重定位,在其他情况下仅对象的一部分可能被改变位置。实施方案可采用用于最小化执行改变位置所需要的数据传送的各种技术,并且因此一些情况下可传送远程执行选择的方法或方法集必需的数据量,而不是传送所有与对象相关联的数据。
应用程序可包括多个类。类可包括一个或多个方法,并且还可包括一个或多个关联数据片段。方法可具有一个或多个输入参数,并且还可具有一个或多个返回值和/或输出参数。方法可包含利用与类相关联的数据作为输入和/或输出的指令。如本文所使用的,术语方法和功能可以互换使用。术语方法或功能可用于指与特定类相关联的过程,或不与任何特定类相关联的独立过程。
当执行应用程序时,它可以被称为应用程序的实例或进程。包括应用程序的类的实例可被称为对象。类的实例可以与存储器的与类相关联的数据存储在其中的区域相关联。
图1A描绘客户端装置104,应用程序的实例、进程102在其上运行。进程102可包括多个类实例,诸如所描绘的对象106、108、110和112。在执行中的各种点处,对象106、108、110和112的每个实例可在客户端装置104上执行。然而,可选择某些对象用于改变位置到远程计算节点。例如,图1A将对象110描绘成被改变位置到计算节点114,其中它作为改变位置的对象118执行,并且将对象108描绘成被改变位置到计算节点116,其中它作为改变位置的对象120执行。将对象改变位置可包括在不是对象初始在其上例示的装置的计算装置上,执行对象的一个或多个方法。对象还可通过在远程计算节点(诸如计算节点114或116)上初始创建对象,在例示之前被改变位置。实施方案还可在改变位置的任一端执行改变位置的对象的按需例示。例如,对象可初始在客户端装置上例示,并且随后刚好在远程计算节点上远程执行对象的方法之前,在远程计算节点上例示。在一些情况下,功能或对象方法的调用可能不取决于任何实例变量或其他对象状态,在这种情况下将对象例示可能是“空操作”或可以被跳过。对象也可能是部分例示的,例如通过仅将改变位置方法所访问的那些存储器位置初始化。
计算节点114和116可托管在远程计算设施122内。在一些实施方案中,远程计算设施122可由代表应用发布者的提供者操作。远程计算设施122的使用可包含对应用发布者收取的各种成本,所述成本作为向发布者的应用提供计算能力的交换。这可以是在可单独或组合采用的许多可能因素中,在确定将对象改变位置到远程计算节点的程度中使用的一个因素。例如,具有大预算的发布者可允许在客户端装置上运行的应用程序使用多个计算节点,以便改善应用性能。可替代地,具有小预算的发布者可将使用限制到最小水平。然而,在一些情况下,发布者可能想要临时允许将更大数目的对象改变位置到设施(诸如远程计算设施122)处的远程计算装置。
在各种实施方案中,对象还可基于诸如性能和网络条件的因素改变位置。例如,基于较不重度使用的计算节点116,在计算节点114上执行的对象可能被改变位置到计算节点116。在一些情况和实施方案中,在对象在远程计算节点(诸如计算节点114或116)上执行的时段之后,对象可以被改变位置返回客户端装置104。这可例如在客户端装置104与远程计算设施122之间的网络连通性中断时发生。
实施方案可基于包含类和其依赖关系两者的各种因素,确定类对于改变位置的适合性。这可包括改变位置的候选取决于的其他类、静态链接库或动态链接库、后台服务、操作系统(“OS”)功能和硬件。此外,与类相关联的数据(诸如成员数据和方法参数)可影响类对于改变位置的适合性。
改变位置的候选可由软件开发者识别。例如,开发者可采用注释、属性或其他开发语言特征来标记改变位置的候选。此信息可由编译器、解释器和/或链接器处理,并且可包括在可执行程序或库中。实施方案可执行改变位置候选的静态分析,以便做出将候选类实例改变位置的可行性的初始估计。因此,在一些实施方案中,将类标记成改变位置的候选可建议将类改变位置,但可能不必要是确定的。可通过分析候选类的依赖关系和交互模式,确定可行性的初始估计。
本公开的实施方案可以被采用,以便发布在各种客户端装置上使用的应用,并且为所发布的应用提供灵活的计算环境。例如,应用发布者可发布某些方法或类已经被标记成改变位置的候选的应用程序。应用发布者也可保留基于云的计算资源,以使得应用程序的某个部分可在对于下载应用程序的客户端装置是远程的计算节点上运行。例如,应用发布者可发行游戏程序的单个副本,其可在具有相对低计算能力的智能电话上运行、以及在具有相对高计算能力的平板计算机上运行。在智能电话上运行的游戏实例可更多地使用所保留的基于云的计算资源,而在平板计算机上运行的游戏实例可能进行较少的使用。应用发布者可调整所保留的基于云的计算资源的量,其中调整基于移动电话与平板计算机的比例。
实施方案可利用本公开的方面以便重定位后台任务的执行。应用中的方法或类可以例如被标记成承受响应于事件(诸如系统启动或关闭)的有条件的改变位置。在运行时,这些方法可以是改变位置的。此方法可结合客户端装置上运行的后台任务来采用。当客户端装置关闭时,关闭事件可触发将后台任务改变位置到远程计算节点,其中所述后台任务可在客户端装置关闭时继续执行。当客户端装置再次启动时,执行可在客户端上继续。后台任务的状态信息可通过每次改变位置传送。这可允许后台任务是长期运行的,甚至当客户端装置关闭或暂停本地后台任务的执行时。另一个示例可包含执行改变位置以便节约电力。例如,当使用后台任务的应用不在前台时,后台任务可以被改变位置到远程计算装置。当该应用变成前台应用时,执行可本地恢复。
图1B为描绘代表应用发布者将基于云的计算资源分配到应用程序的实施方案的方框图。提供者可维持可包括一个或多个计算装置的主机140。应用发布者150可与客户端装置144的虚拟化副本相关联,所述虚拟化副本与发布用于下载到各种客户端的应用结合。尽管图1B描绘应用发布者150与客户端装置144的虚拟化副本之间的一对一关系,许多其他组合是可能的。例如,应用发布者150可为每个应用程序保留一个虚拟化操作系统,或它可保留多个应用程序将利用的多个虚拟机。应用发布者150所发布的一个或多个应用相关的改变位置的对象148,可在客户端装置144的虚拟化副本的背景下操作。
第二应用发布者152可保留客户端装置142的虚拟化副本,其可在与客户端装置144的虚拟化副本相同的主机140上操作。应用发布者152所发布的一个或多个应用相关的改变位置的对象146,可在客户端装置142的虚拟化副本的背景下操作。
虚拟机可以被选择或配置成客户端装置142的虚拟化副本。客户端装置142的虚拟化副本的特征可类似于应用程序在其上运行的客户端装置的特征。在一些情况和实施方案中,这些环境中的两者可在以下意义上是等效的:在客户端装置上操作的应用程序将以与远程计算节点上操作的相同应用程序基本上相同的方式操作。更一般地,用于执行改变位置的类和方法的实施方案可利用用于执行应用的客户端装置上使用的环境的副本或等效物。
如本文所使用的,术语虚拟机可有关计算机的基于软件的仿真,诸如在管理程序或类似进程的控制下操作的那些。术语虚拟机还可有关可执行的用于执行中级(即非处理器专用的)指令的进程,诸如JAVA虚拟机。在各种实施方案中,客户端环境的虚拟化副本可包括这些类型的虚拟机中的任一个。
实施方案可执行各种操作,以便维持可改变位置的进程在其中操作的环境之间的兼容性。这可包括维持客户端装置上的进程的执行环境与远程计算节点上的改变位置的类或方法的执行环境之间的一致性。例如,在图1A中,进程102可在JAVA虚拟机上执行,所述JAVA虚拟机在一个版本的LINUX操作系统上运行。计算节点114和116可基于其在相同版本的LINUX操作系统上运行并且使用相同版本的JAVA虚拟机被例示或保留。
图2为描绘在编译之前的应用程序的方框图,其中应用程序中的至少一个类已经被注释以指示改变位置的可能性。应用代码200可包括定义多个类(诸如类202、204和206)的各种源文件。每个类可包括一个或多个方法,并且还可具有有时被称为成员数据的一个或多个关联数据片段。例如,类202可包括方法208和成员数据210,并且类204可包括方法212。
开发者(未示出)可为类202提供注释214,以便指示类202应当被视作改变位置的候选。应用代码200内的任何数目的类可以被注释为改变位置的候选。然而,为表示的简单性起见,图2仅描绘一个注释的类。
将注释的类202改变位置的可行性可取决于其依赖关系。例如,类202的方法208可取决于类204的方法212并且取决于库214中的一个或多个。依赖关系可以是直接的或间接的。例如,方法208可包含调用方法212的代码,并且可因此直接取决于方法212。方法208也可调用或依赖一个或多个库214的功能或特征。方法208可由于调用那些功能的方法212,间接取决于操作系统216的某些功能。各种依赖关系也可存在于一个或多个库214、操作系统216与硬件218之间。
将对象改变位置可包括在客户端装置与一个或多个远程计算节点之间、或在一个或多个远程计算节点之间的各种代码元素的同步化。同步化的方面可包含操作系统版本、库版本和应用版本。大体上,这可包含将对应于操作系统、库或应用的存储的可执行指令同步化。例如,客户端装置可在版本X.Y的操作系统Z下操作。操作系统Z的实例可在远程计算节点上操作。远程计算可使用被确定等效于版本X.Y的操作系统。在此背景下,可相对于等效性取决于的功能性来确定等效性。例如,在图2中,方法212可取决于操作系统216的不被从先前版本的操作系统Z到版本X.Y的更新影响的部件。在这种情况下,先前版本和版本X.Y可基于等效性被认为是等效的,还被认为是同步化的。库和应用程序代码可基于此形式的等效性来同步化。
将对象改变位置还可包括将数据元素同步化。在各种实施方案中,应用所存储的数据可以是同步化的,以使得改变位置的对象可直接访问其依赖的数据。实施方案还可将存储器中的数据同步化。使用图2作为示例,类202可包括成员数据210。此数据可以被方法208以及类202的附加方法(未描绘)使用。因此,一些实施方案可执行在客户端装置与一个或多个远程计算节点之间,或在两个或更多个远程计算节点之间的成员数据210的数据同步化。
图3为描绘用于执行类依赖关系的静态分析以便确定类改变位置的适合性的过程的图。树结构可用于存储程序的各种类300-306的表示。树结构可通过各种方式形成,诸如源或编译代码元素的解析或反射。在图3中,类300可取决于类302、304和306。类300的实例对于改变位置的适合性可取决于类300取决于的类实例的改变位置的适合性。
各种因素可影响改变位置的适合性。这些包括但不限于以下示例因素。一个因素可包含改变位置的适合性,其可能被可以是可改变位置的一个或多个类方法所施加的计算需求影响。可至少部分地基于本地装置与在执行时可以是可用的远程计算节点相比的计算能力的比较,分析计算复杂性。第二因素可包含可改变位置的类的方法的参数的尺寸。无参数的方法、或参数小的方法可比具有许多参数或大参数的方法更适合于改变位置。第三因素包含成员变量、全局变量、以及被可改变位置的类的方法引用的其他数据。取决于少量此类数据的方法可能比取决于大量此类数据的方法更适用于改变位置。第四因素包括状态信息之间的相互依赖程度,所述状态信息诸如在方法的调用期间可能被影响的成员变量和全局变量。例如,无状态的方法可能比不是无状态的方法更适用于改变位置。类似地,仅影响成员变量的方法可能比影响全局变量的方法更适用于改变位置,尤其如果附加方法的成员也取决于全局变量。
一些类可包含调用操作系统部件的方法。例如,图3描绘类302取决于OS部件308和310,并且类304取决于OS部件312。某些操作系统功能可能与类或方法的改变位置冲突。例如,在图3中,OS部件308被描绘成取决于相机314。因为对于客户端装置是本地的相机是此类功能的有意目标,除某些情况(诸如测试或装置模拟)之外,它们不应被改变位置。在其他情况下,操作系统功能可包含不应被改变位置的功能,诸如本地存储器管理、关闭、或本地功能性的其他方面。然而,一些装置可适用于改变位置。在图3中,存储装置316可适用于改变位置。实施方案可通过各种技术支持存储装置的改变位置,诸如将本地装置存储和远程装置存储的内容同步化。
分数可指派到程序中的类和方法,其指派类或方法对改变位置的适合性的初始估计。实施方案可将高分数指派到具有改变位置的最高优先级的类,并且将低分数指派到应当具有低改变位置优先级或不应改变位置的类。实施方案可基于指派到类和其他元件(诸如类取决于的OS部件和硬件)的分数,将分数指派到类。
在图3的示例中,类300由于通过具有分数320的类302和具有零分326的OS部件308对具有零分332的相机314的间接依赖,可能不是改变位置的良好候选。这可以由改变位置的低优先级反映,其可在与类300相关联的分数318的低值中反映。
在一些实施方案中,类300可仍通过安排对将在本地装置上执行的OS部件308的调用来改变位置。在此类情况下的控制流可按需在客户端装置与远程计算装置之间切换。实施方案可在指派时利用诸如接口时效、传送的数据量等的因素。
在一些情况和实施方案中,尽管依赖类、OS部件或装置接收低分数,类可以被指派高分数。这可能由于各种因素发生,诸如高得分类与低得分类、OS部件或装置之间的接口服从高得分类的改变位置。这可以是以下情况:例如,在远程位置上运行的益处与缺点相比是高的。这可以是以下情况:在高得分类与低得分类、OS部件或装置之间交互频率是相对低的。例如,执行一系列冗长复杂计算的类可得益于改变位置,即使它执行不能被改变位置的一些功能。在这种情况下,尽管用于执行非改变位置的功能的上下文切换成本,将类改变位置可以是有益的。此成本可包括因素,诸如在客户端装置与远程计算节点之间传送数据,将对应进程定位在适当的远程计算节点上等。
在一些情况和实施方案中,分数可基于替代性因素指派到类或方法,诸如允许重新定向对应于特定类别的所有方法或类的意图。例如,属于API的所有功能可以被标记成改变位置的候选。在此背景下可使用试探的或有条件的分数。例如,在运行时,可确定执行一个版本的API,该版本的API在远程位置处可用但在客户端上不可用。
实施方案也可基于类或方法直接或间接地调用外部API,将分数指派到类或方法。分数还可基于调用API的成本,其中成本可以指诸如数据传送成本、带宽利用等的各种因素。例如,改变位置的候选可调用基于互联网的网络服务。如果在移动装置上执行,调用网络服务可包含移动装置的用户基于传送数据量致使使用费。通过将调用网络服务的类或方法改变位置,可避免那些收费。
实施方案可基于指派到OS部件312和存储装置316的分数330和334,将分数322指派到类304。指派到装置的分数(诸如指派到存储装置316的分数334)可取决于多个因素,诸如开发者的意图以及装置与改变位置的兼容性。例如,开发者可指示某个类旨在使用远程定位的存储装置;可通过诸如注释或属性的机制进行指示。因此,在此类情况下,类304对存储装置316的间接依赖关系将是将有利分数指派到类304中的因素。换言之,分数322或类304可能被分数330和分数334影响。
不具有依赖关系的类(诸如类306)可接收在图3中描绘成分数324的高改变位置分数。分数324可以被各种附加因素影响,诸如开发者所提供的所述类应当优选用于改变位置的指示。可例如通过类或方法的注释来提供指示,所述类或方法指示开发者对类或方法的改变位置适合性的相信。
在一些实施方案中,指示改变位置的优先级的分数可通过静态分析来设置(如结合图3所描述的),并且可通过在运行时监测执行来调整。在其他实施方案中,静态分析可用于识别改变位置的候选,但得分可推迟直到运行时。在此类情况下,在静态分析期间指派到类的分数可用作用于在对象上设置初始分数的基础。在各种实施方案中,相同类的不同对象可具有不同分数。这可例如基于相同类的不同对象具有不同特征(诸如尺寸)而发生。较小尺寸的对象可例如是比较大对象更好的改变位置候选。
实施方案还可采用多个分数组,所述多个分数组被有条件地采用,例如,如果应用在移动装置上运行,那么使用一组分数;并且如果应用在个人计算机上运行,那么使用另一组分数。可部分地基于因素(诸如客户端装置的配置、或客户端装置在其中操作的环境),从与类相关联的一组可能分数选择指派到对象实例的分数。
图4为描绘在执行程序中的类的监测和改变位置、以及无状态方法和有状态方法的调用的图。可在客户端装置400上执行应用程序。应用程序可使用运行时402来运行。在一些实施方案中,运行时402可包括指令,以用于将中间语言指令或字代码指令转换到处理器指令、以及用于执行转换的指令。运行时402还可包括虚拟计算环境。
一个或多个调度程序404模块可在客户端装置400上执行。术语模块可以指用于执行本公开的方面的计算机可执行指令和电路的各种组合。模块可包括静态链接库和动态链接库、可执行程序、操作系统部件等。调度程序404模块可执行操作,所述操作包括追踪客户端装置400的性能特征、运行时402、和应用程序的性能。在各种实施方案中,用于监测和改变位置的指令可包括在一个或多个模块中,其各自包含用于执行本实施方案的各种方面的指令子集。尽管图4描绘由单个模块执行的监测和改变位置功能,所述描绘不应被视为将实施方案限于使用单个模块、或作为防止本文所描述的操作合并到其他单元中,诸如运行时或操作系统。
调度程序404模块可执行类与方法边界之间的数据传送的监测。实施方案可利用数据传送特征作为在确定将对象改变位置中的因素。在类或方法边界之间的相对低量的数据传送可指示将对象改变位置,而相对高量的数据传送可能显示改变位置是不当的。
调度程序404模块可执行识别改变位置候选的操作。可基于各种因素识别候选,所述因素包括在识别潜在候选的应用程序中包括的或与其相关联的信息。此信息可嵌入在应用程序中、或写入到可以被调度程序404模块读取的关联文件中。例如,实施方案可在应用程序的启动时扫描应用程序以便识别任何改变位置候选。在一些实施方案中,可在应用程序的启动之后识别改变位置候选。实施方案可例如刚好在类的实例被例示之前,确定类是否被标记成改变位置候选。
调度程序404可利用在监测期间收集的信息以便选择用于改变位置的类。实施方案可从被识别为候选的类中选择类。选择可基于分数,所述分数基于静态分析指派到候选类。选择还可基于调整的分数,其中基于监测信息来调整分数。例如,静态分析可指示类是良好的改变位置候选,而监测类可指示其在边界之间传送大量数据。在这种情况下,实施方案可减少指派到类的改变位置分数,以便指示调整的改变位置优先级。
在一些情况和实施方案中,客户端装置400或运行时402的性能可指示调整一些类的分数,以便指示其应当接收更大的改变位置优先级。例如,当客户端装置400的中央处理单元(“CPU”)过载时,对CPU施加更大需求的类可能比对CPU施加较少需求的类优先用于改变位置。
改变位置的类可在计算节点406上执行。可在计算节点406上采用运行时408。实施方案可将在客户端装置400上操作的运行时402的操作特征与在计算节点406上操作的运行时408的特征匹配。例如,计算节点406可操作运行时408,所述运行时408的版本与客户端上操作的运行时402的版本兼容。
调度程序410模块可在计算节点406上操作。在计算节点406上的调度程序410模块可执行操作,其类似于由客户端装置400上操作的调度程序404执行的操作。这些操作可包括监测计算节点406和运行时408的性能的各种方面。可在客户端装置400上操作的调度程序404与计算节点406上操作的调度程序410之间建立通信路径(指使用图4中的数据交换422箭头)。在调度程序404与调度程序410之间共享的信息可用于选择用于从客户端装置400改变位置到计算节点406的类,以及结束选择类的改变位置。例如,实施方案可监测计算节点406的CPU利用,并且确定它被过度利用,或它比客户端装置400的CPU更大量地利用。实施方案可基于性能因素和在客户端装置400和计算节点406两者上收集的其他数据的比较来区分类或对象对改变位置的优先级。成本效益或优化方法可以被利用,以便确定是否调整特定类或对象的改变位置分数,或确定多积极地选择类或对象以用于改变位置。
在计算节点406上的改变位置的对象与客户端装置400上的未改变位置的对象之间的交互可以被归类为无状态交互或有状态交互。无状态交互可以被描述成没有有意义的副作用的交互,诸如其执行除了返回值之外没有影响的方法。从另一方面来说,有状态交互是产生与同步化的需要相关联的副作用的交互。
在图4中,无状态交互通过无状态方法的调用412来描绘,所述调用412可能后面有回复414。回复414可包括执行无状态方法的结果。这可包括例如,使用由调用412提供的参数在计算节点406上执行的计算的结果。
有状态交互还可包括后面有回复418的调用416。然而,因为关联方法是有状态的,实施方案可执行同步化420,以便使计算节点406上进行的状态改变与客户端装置400上的数据协调并且反之亦然。实施方案可将有关同步化420的数据与调用416和回复418集束,以便减少为执行与有状态方法相关联的操作而进行的网络往返的数目。
在一些情况中,方法可能不更改状态信息,但然而可取决于状态。在一些实施方案中,此类型的方法可视为有状态方法。在其他实施方案中,它可作为无状态方法处理。一些实施方案可通过调用412来传送成员变量和其他状态信息。
将交互归类成有状态的或无状态的可影响类或对象针对改变位置的得分。在各种情况和实施方案中,无状态交互优选用于改变位置。交互可以基于应用的静态分析被分类成有状态的或无状态的。一些实施方案还可除静态分析之外或代替静态分析使用动态分析。
图5为描绘用于确定应用程序段对改变位置的适合性的应用程序的静态分析的流程图。尽管被描绘成操作序列,本领域普通技术人员将理解所描绘的顺序不应当解释为限制本公开的范围,并且所描绘的操作中的至少一些可以更改、省略、重新排序、增补附加操作、或并行执行。
操作500描绘识别应用程序中的可被认为是改变位置的候选的类或方法子集的实施方案。识别可基于使用属性、注释或由开发者采用的其他此类机制以便标记候选类或方法。实施方案可采用技术,诸如解析源代码或对编译代码采用反射技术以便识别已经被标记的类或方法。一些实施方案可扫描源代码或编译代码,以便基于预测的代码行为直接推断对改变位置的适合性,而不用使用诸如注释或属性的机制。
操作502描绘分析候选方法或与候选类相关联的方法的输入和输出特征。这些特征可包括作为输入供应到方法、或作为输出参数或作为返回值返回的类型的参数。复杂参数类型(诸如使用除基本类型之外的一些定义的参数类型)可不利于改变位置,而基本类型(诸如整数)可建议相反的。类似地,大参数可不利于改变位置,而小参数有益于改变位置。
操作504描绘分析候选类的存储器依赖关系。实施方案可识别候选类方法对方法参数、成员变量(潜在地包括静态变量和实例变量),全局变量等进行的引用。实施方案可分析与存储器访问相关的各种因素以便确定对改变位置的适合性。例如,实施方案可分析成员变量与其他方法(包括候选方法)之间的依赖关系。高度的依赖性可建议较低的改变位置优先级或对改变位置的不适合性,而低度的依赖性可建议相反的。也可考虑引用的数据量。在许多因素中的另一个可能因素是依赖关系是只读的,还是包括读取操作和写入操作两者。
操作506描绘分析应用程序之外的依赖关系的实施方案,诸如动态链接库、守护进程、网络服务等。在改变位置目的地处的这些类型的依赖关系的可用性可权衡有利于在外部依赖关系不是无状态的一些情况下的改变位置-可能期望避免在客户端装置和远程计算节点上运行的外部依赖关系的状态同步化。从另一方面来说,当依赖关系(诸如无状态网络服务)在改变位置目的地处运行时,可通过将调用它的方法改变位置,在一些实例中获得性能增强。另一个相关因素是兼容版本的服务是否存在于改变位置目的地处。
在操作508处,实施方案可分析操作系统和硬件依赖关系。可以单独或组合使用各种方法。实施方案可基于以上指出的因素来分析方法对改变位置的适合性。调用操作系统或硬件依赖关系的候选方法可基于操作系统或硬件依赖关系落入的类别来打分。然而应当理解,以下归类旨在是说明性的,并且不应被视为限制本公开的范围。第一类别可包含改变位置对于其总是不适合的操作系统功能。这可有关存储器管理功能、关闭电源等。第二类别包括除特别情况之外改变位置对于其是不适合的硬件和硬件访问功能。由于仅客户端装置的相机将能够捕获在该相机的视野中的图片,相机是此类型的装置的一个示例。然而,具体情况(诸如测试或模拟)可建议调用相机的功能可以被改变位置。第三类别可包含可改变位置的调用。一个示例是包含图形处理器调用的调用,这可在一些情况和实施方案中得益于改变位置。这可以是以下情况:例如远程计算节点具有比客户端装置更强大的图形处理单元。第四类别可包含旨在被改变位置的调用。此类别可包括对有关远程托管的存储服务的服务的调用。
操作510描绘分析改变位置候选的依赖关系链的实施方案。实施方案可分析相对于多个因素的依赖关系链。这些因素中的一个可包含依赖关系链的深度。没有依赖关系、或具有小数目的依赖关系的候选方法可比具有大数目的依赖关系的方法更适合于改变位置。另一个因素可包含可以被描述成依赖关系链的可分割性的因素。这可包含链中的可具有用于改变位置的合适边界的点,其中可基于包括但不限于以下的因素确定适合性:在候选方法执行期间期望跨越边界的频率、或期望传送的数据量。如果依赖关系链具有良好的可分割性点,在其依赖关系链中具有不利于改变位置的因素的候选方法然而可能是良好的总体改变位置候选。
基于因素(诸如被描绘成在操作502-510中分析的因素),实施方案可将分数指派到候选类或方法,如操作512所描绘的。分数可指示类或方法对改变位置的适合性或其对改变位置的优先级。注意为了分析的目的,类的特征可源自类的方法的特征。基于类的方法对改变位置的适合性,实施方案可将改变位置分数指派到类。
在操作514处,实施方案可将指示分数的信息存储在应用程序或在分析下的其他代码中。实施方案还可将信息存储在一个或多个外部文件中。调度程序或其他部件可在运行时利用分数信息,所述调度程序或其他部件可分析信息以便选择类和方法以用于改变位置。
图6为描绘用于基于指派的分数以及基于监测应用程序的执行调整的分数,选择类以用于改变位置的实施方案的流程图。尽管被描绘成操作序列,本领域普通技术人员将理解所描绘的顺序不应当解释为限制本公开的范围,并且所描绘的操作中的至少一些可以更改、省略、重新排序、增补附加操作、或并行执行。
如操作600所描绘的,实施方案可识别已经在应用程序中标记的候选类和方法。调度程序组件可接收指示程序开始执行的信息,并且作为响应开始应用程序代码或相关信息的检查,以便确定被标记成改变位置的候选的一组类或方法。实施方案还可通过检查确定由于静态分析指派到候选类和方法的分数。
操作602描绘选择改变位置的候选类的初始子集。实施方案可确定待执行的改变位置的初始程度或数量。这可包含接收调度程序模块在将类改变位置中应当是多积极的指示。例如,在各种实施方案中,信息可由调度程序模块接收,所述信息指示用于将类或方法改变位置的阈值分数。在一些实施方案中,阈值分数可由开发者指示并且被包括作为嵌入在应用程序中的信息。在其他实施方案中,阈值分数可以被以下因素确定:包括但不限于,应用程序在其上运行的客户端装置、在启动时的网络可用性、远程计算资源的可用性等。在各种实施方案中,可利用的另一个因素是电能利用的可能性。实施方案可确定某些方法、系统特征、程序构造等可能利用高于阈值水平的电量。这些可以被打分以便有利于在电力敏感的装置(诸如移动电话)上的改变位置。在一些实施方案中,基于诸如将在其上运行代码的装置的因素、或基于可能在运行时发生的各种情况,得分可以是有条件的。电池电量是一个示例。
实施方案可监测与应用程序的操作相关的各种因素,并且使用所收集的信息,修改被选择用于改变位置的类集合。操作604描绘监测客户端装置上的应用的性能。这可包括监测客户端装置的总体性能。性能方面可包括应用程序或客户端装置的操作系统的各种特征的执行时间。它还可包括其他度量,诸如存储器利用、CPU利用等。可考虑电能利用以及电池电量。在一些实施方案中,各种阈值可被定义用于作为比较基础使用。这些阈值可通过使用属性或注释以便与候选类或方法关联。阈值也可以被定义成对于应用程序是全局的参数。实施方案可采用各种公式或试探法,以便将客户端装置和应用程序性能度量与其他因素组合来确定候选类或方法是否应当被改变位置。
操作606描绘监测远程计算节点的性能,改变位置类或方法在所述远程计算节点上执行或可以被执行。实施方案可采用多个远程计算节点。远程计算节点性能的监测可考虑诸如执行时间、CPU利用、存储器利用等的度量。这可包括可直接归因于改变位置的类和方法的度量,诸如改变位置方法的执行时间。可考虑总体系统性能。
在一些实施方案中,类和方法可以被改变位置到远程计算节点,所述远程计算节点被设置以供顾客付费使用。在此类情况下,客户端成本可基于代表顾客利用远程计算节点的程度。操作608描绘监测服务器侧资源的利用或消费,以及可影响客户端成本的其他因素,用于允许改变位置类或方法在托管的远程计算节点上运行。例如,实施方案可将远程计算节点上的利用率与预算的利用率进行比较。如果实际利用超过预算利用,那么实施方案可确定将一个或多个改变位置的类返回客户端装置,以使得实际利用等于或小于预算利用。可考虑各种其他成本因素,诸如可为使用网络带宽而对用户施加的收费。大体上,可根据可用于执行改变位置功能的计算资源、以及终端用户、发布者或提供者使用那些资源的成本评估成本。
操作610描绘监测可用性、延迟、可用带宽、以及与客户端装置与远程计算节点之间的通信相关联的其他因素。可用性或其缺乏可以是在确定是否将类或方法改变位置中的控制因素。实施方案可监测可用性与不可用性之间的转变。当网络变得不可用时,实施方案可将任何改变位置的类重新定位返回客户端装置,直到网络变成可用的。
网络延迟可由各种实施方案在确定将类或方法改变位置中分析和考虑,或以便确定将改变位置的类重新定位返回对应的客户端装置。实施方案可分析相对于各种其他因素的网络延迟,诸如改变位置边界的时效,或换言之应用程序的未改变位置的部分与改变位置部分之间的交互频率。可相对于网络带宽采取类似方法。注意本文所描述的技术可允许对网络情况的动态适配。例如,当在具有高延迟的高带宽网络上操作时,为了改变位置可选择具有大块接口的方法。从另一方面来说,当低带宽、低延迟网络在使用中时,可选择具有闲聊接口的方法。
在操作604至操作610中描述的各种因素可以被采用以便调整与改变位置候选相关联的分数值。在一些实施方案中,这可包括穿过候选类的依赖关系树,以及调整树中的依赖关系的改变位置分数,并且基于其从属的分数重新计算候选类的总体改变位置分数。针对依赖关系链中的条目,对分数的调整可能被指示某些性能因素可如何影响分数的信息影响。例如,在应用程序的静态分析期间,实施方案可确定某些方法易受到高延迟网络的影响。这些方法可响应于监测高延迟网络情况,具有在量值上比其他方法更大的负分数调整。操作612描绘基于此类型的技术、或其他类似的分析技术调整分数。
实施方案可在客户端装置与一个或多个远程计算节点之间、或直接在计算节点之间传输性能信息。在一些实施方案中,可横跨多个执行实例聚合性能信息。历史性能信息可以被共享和利用以便调整初始改变位置分数。
操作614描绘基于调整的分数调整一组改变位置的类和方法的实施方案。在各种实施方案中,分数可以被视为改变位置的优先级。调度程序模块可例如确定将类从客户端装置改变位置到远程计算节点,直到远程计算节点处于期望的利用水平,在所述点处附加的类或方法可能不被改变位置直到利用减少。可替代地,调度模块可确定将类从客户端装置改变位置到远程计算装置,或到一个或多个远程计算装置,直到客户端装置的性能改善高于阈值水平。在这些情况中的任一种下,实施方案可基于指派到候选类和方法的分数将类改变位置。最高分数例如可首先被改变位置以及随后第二最高分数等。可采用相反过程以便减少改变位置的类和方法的数目,例如通过首先移除在改变位置的类中具有最低分数的改变位置的类,随后下一个最低的等。
在一些实施方案中,可相对于有关潜在改变位置位置(包括客户端装置)的性能因素计算改变位置分数。实施方案可比较分数并且基于最高分数确定将类或方法改变位置。
在客户端上执行的应用程序与改变位置的类或方法之间的交互可包含关联对象的同步化。这可例如包括将指示改变位置方法所访问的成员变量的值的数据同步化。图7为描绘用于分布式应用中的对象的对象版本追踪和承诺模型的流程图。尽管被描绘成操作序列,本领域普通技术人员将理解所描绘的顺序不应当解释为限制本公开的范围,并且所描绘的操作中的至少一些可以更改、省略、重新排序、增补附加操作、或并行执行。
操作700描绘识别用于追踪的对象。调度模块可识别改变位置的对象并且追踪对所述对象的改变。这可包括确定与改变位置对象相关联的哪些改变位置方法可影响对象的状态,例如通过识别哪些方法写入到成员变量。还可追踪对成员变量或其他共享状态执行只读操作的方法。实施方案可基于与方法或对象相关联的状态相关依赖关系,区分用于改变位置的方法或对象的优先次序。实施方案可采用此方法以便减少将追踪其状态的对象的数目。
操作702描绘响应于对改变位置对象的本地副本进行的状态改变,更新向量时钟。向量时钟可表示本地进行或已知的改变的累积列表。在更新以便表示本地改变之后,向量时钟可传输到客户端装置或远程计算节点,以便指示已经改变对象。这由操作704描绘。
在操作706处,更新向量时钟的接收者可施加信息来确定接收者的数据副本是否应当更新以便反映改变。可将向量时钟的接收副本与本地副本比较,以便确定已经对接收者的数据副本施加哪些改变。
操作708描绘提交对与改变位置对象相关联的数据副本进行的改变。这可例如包含客户端装置和远程计算节点使得对所述对象的改变永久。这可反映客户端装置和远程计算节点达成各自具有准确版本数据的协议。
可结合许多类型的数据库管理系统(“DBMS”)采用本公开的实施方案。DBMS是用于维持有组织的数据集合的软件和硬件系统,可对所述有组织的数据集合执行存储操作和检索操作。在DBMS中,通常通过键值与附加数据之间的关联来组织数据。关联的性质可基于存在于数据集合中的现实世界关系,或它可以是任意的。可由DBMS执行各种操作,包括数据定义、查询、更新和管理。一些DBMS使用查询语言(诸如结构化查询(“SQL”))提供与数据库的交互,而其他DBMS使用包含操作(诸如put和get等)的API。与数据库的交互也可基于各种协议或标准,诸如超文本标记语言(“HTML”)和可扩展标记语言(“XML”)。DBMS可包括各种架构组件,诸如用于将数据存储在一个或多个存储装置(诸如固态硬盘)上的存储引擎。
图8为描绘分布式计算环境的示例的图,可对所述分布式计算环境实践本发明的方面。各种用户800a可与各种客户端应用交互,从而对任何类型的计算装置802a进行操作,以便通过通信网络804与数据中心820内的各种计算节点810a、810b和810c上执行的进程通信。可替代地,客户端应用802b可在无用户干预的情况下通信。通信网络804可包括通信技术的任何组合,包括互联网、有线和无线局域网、光纤网、卫星通信等。可采用任何数目的联网协议。
与数据中心820内操作的计算节点810a、810b和810c上执行的进程的通信可通过网关806和路由器808来提供。也可采用许多其他网络配置。尽管在图8中未明确地描绘,可提供各种认证机构、网络服务层、业务对象、或其他中间层以便调节与计算节点810a、810b和810c上执行的进程的通信。这些中间层中的一些可自身包括在一个或多个计算节点上执行的进程。计算节点810a、810b和810c以及在其上执行的进程也可通过路由器808彼此通信。可替代地,可采用独立通信路径。在一些实施方案中,数据中心820可以被配置来与附加数据中心通信,以使得计算节点和在其上执行的进程可与其他数据中心内操作的计算节点和进程通信。
计算节点810a被描述成驻留在物理硬件上,所述物理硬件包括一个或多个处理器816、一个或多个存储器818、以及一个或多个存储装置814。计算节点810a上的进程可结合操作系统执行,或可替代地可执行作为与物理资源(诸如处理器816、存储器818、或存储装置814)直接交互的裸机过程。
计算节点810b和810c被描绘成在虚拟机主机812上操作,所述虚拟机主机812可向各种物理资源(诸如物理处理器、存储器和存储装置)提供共享访问。可采用任何数目的虚拟化机构以便托管计算节点。
图8中描绘的各种计算节点可以被配置来托管网络服务、数据库管理系统、业务对象、监测和诊断设备等。计算节点可以指各种类型的计算资源,诸如个人计算机、服务器、集群计算装置等。计算节点可例如指各种计算装置,诸如蜂窝电话、智能电话、平板计算机、嵌入式装置等。当以硬件形式实现时,计算节点通常与被配置来存储计算机可读指令的一个或多个存储器、以及被配置来读取和执行指令的一个或多个处理器相关联。基于硬件的计算节点也可包括一个或多个存储装置、网络接口、通信总线、用户接口装置等。计算节点还包括虚拟化计算资源(诸如通过或不通过管理程序实现的虚拟机)、虚拟化裸机环境等。基于虚拟化的计算节点可具有对硬件资源的虚拟化访问以及非虚拟化访问。计算节点可以被配置来执行操作系统以及一个或多个应用程序。在一些实施方案中,计算节点还可包括裸机应用程序。
在至少一些实施方案中,实现本文所述技术中的一种或多种的一部分或全部的服务器可包括通用计算机系统,所述通用计算机系统包括一个或多个计算机可访问介质或被配置来访问一个或多个计算机可访问介质。图9描绘包括或被配置来访问一个或多个计算机可访问介质的通用计算机系统。在示出的实施方案中,计算装置900包括经由输入/输出(I/O)接口930耦接至系统存储器920的一个或多个处理器910a、910b和/或910n(其在本文中以单数形式可被称为处理器910或以复数形式可被称为处理器910)。计算装置900还包括耦接至I/O接口930的网络接口940。
在各种实施方案中,计算装置900可为包括一个处理器910的单一处理器系统,或包括若干处理器910(例如两个、四个、八个或另一合适数目)的多处理器系统。处理器910可以是能够执行指令的任何处理器。例如,在各种实施方案中,处理器910可为实施各种指令集架构(ISA)中任何一种架构的通用或嵌入式处理器,所述架构例如x86、PowerPC、SPARC、或MIPS ISA或任何其他合适ISA。在多处理器系统中,每一个处理器910通常可以但不一定实现相同的ISA。
在一些实施方案中,图形处理单元(“GPU”)912可参与提供图形呈现和/或物理处理能力。GPU可例如包括专用于图解计算的高度并行处理器架构。在一些实施方案中,处理器910和GPU 912可以被实现为一个或多个相同类型的装置。
系统存储器920可被配置来存储可由处理器910访问的指令和数据。在各种实施方案中,系统存储器920可使用任何合适存储器技术来实施,所述存储器技术诸如静态随机存取存储器(“SRAM”)、同步动态RAM(“SDRAM”)、非易失性/型存储器或任何其他类型的存储器。在示出的实施方案中,实现一个或多个期望功能的程序指令和数据(如上述那些方法、技术以及数据)被示出作为代码925和数据926存储在系统存储器920内。
在一个实施方案中,I/O接口930可被配置来协调处理器910、系统存储器920和装置中的任何外围装置之间的I/O流量,所述外围装置包括网络接口940或其他外围接口。在一些实施方案中,I/O接口930可执行任何必需协议、时序或其他数据转换以将来自一个部件(例如,系统存储器920)的数据信号转变成适合于由另一个部件(例如,处理器910)使用的格式。在一些实施方案中,I/O接口930可包括对于通过各种类型的外围总线附接的装置的支持,所述外围总线诸如外围组件互连(PCI)总线标准或通用串行总线(USB)标准的改变形式。在一些实施方案中,I/O接口930的功能可分到两个或更多个单独的部件中,诸如北桥和南桥。另外,在一些实施方案中,I/O接口930的一些或所有功能,诸如到系统存储器920的接口,可直接并入处理器910中。
网络接口940可被配置来允许数据在计算装置900与附接至一个或多个网络950的其他一个或多个装置960(例如像其他计算机系统或装置)之间进行交换。在各种实施方案中,网络接口940可以支持经由任何合适的有线或无线通用数据网络(例如像以太网网络类型)进行通信。另外,网络接口940可以支持通过电信/电话网络(诸如模拟语音网络或数字光纤通信网络)、通过存储区域网络(诸如光纤通道SAN(存储区域网络))或通过任何其他合适类型的网络和/或协议进行通信。
在一些实施方案中,系统存储器920可以是计算机可访问介质的一个实施方案,所述计算机可访问介质被配置来存储如上文所述的用于实现对应方法和设备的实施方案的程序指令和数据。然而,在其他实施方案中,可以在不同类型的计算机可访问介质上接收、发送或存储程序指令和/或数据。一般来说,计算机可访问介质可包括非暂时性存储介质或存储器介质,如磁性或光学介质,例如经由I/O接口930耦接至计算装置900的磁盘或DVD/CD。非暂时性计算机可访问存储介质也可包括可作为系统存储器920或另一类型存储器而被包括在计算装置900的一些实施方案中的任何易失性或非易失性介质,如RAM(例如,SDRAM、DDR SDRAM、RDRAM、SRAM等)、ROM等。此外,计算机可访问介质可以包括传输介质或信号,如经由通信介质(如网络和/或无线链路)传送的电信号、电磁信号或数字信号,诸如可以经由网络接口940来实现的那些。多个计算装置(如图9中示出的那些装置)中的部分或全部可用来实现各种实施方案中的所描述功能;例如,在各种不同的装置和服务器上运行的软件组件可协作来提供所述功能。在一些实施方案中,除了或代替使用通用计算机系统来实现,所描述功能的部分可使用存储装置、网络装置或专用计算机系统来实现。如本文所使用,术语“计算装置”至少是指所有这些类型的装置并且不限于这些类型的装置。
也可以被称为计算节点(computing node)的计算节点(compute node)可在各种各样的计算环境上实现,所述计算环境诸如平板计算机、个人计算机、智能电话、游戏控制台、商品硬件计算机、虚拟机、网络服务、计算集群和计算设备。任何这些计算装置或环境可为方便起见描述成计算节点(compute node)或描述成计算节点(computing node)。
由如公司或公共部门组织的实体建立用于将可经由互联网和/或其他网络访问的一种或多种网络服务(如各种类型的基于云的计算或存储)提供至一组分布式客户端的网络可称为提供者网络。这种提供者网络可包括托管实现和分布由提供者网络提供的基础设施和网络服务所需的各种资源池的许多数据中心,如物理和/或虚拟化计算机服务器、存储装置、联网设备等的集合。在一些实施方案中,资源可以被提供到与网络服务相关的各种单元中的客户端,诸如用于存储的存储容量的量、用于处理的处理能力、例如相关服务集合等。虚拟计算实例例如可包括具有指定的计算容量(所述计算容量可通过指示CPU的类型和数目、主存储器大小等进行指定)和指定的软件栈(例如,特定版本的操作系统,其进而可在管理程序顶上运行)的一个或多个服务器。
许多不同类型的计算装置可单独或组合使用以实现在不同的实施方案中的提供者网络的资源,所述不同类型的计算装置包括通用的或专用的计算机服务器、存储装置、网络装置等。在一些实施方案中,例如可通过给予用户管理员登录名和密码来向客户端或用户提供对资源实例的直接访问。在其他实施方案中,提供者网络操作员可允许客户端指定针对指定的客户端应用的执行要求并且代表客户端安排在适合于应用的执行平台(如应用服务器实例、JavaTM虚拟机(JVM)、通用或专用操作系统、支持各种解释的或编译的编程语言(如Ruby、Perl、Python、C、C++等)的平台或高性能计算平台)上执行应用,而例如不需要客户端直接访问实例或执行平台。给定的执行平台在一些实现方式中可利用一个或多个资源实例;在其他实现方式中,多个执行平台可被映射到单个资源实例。
在许多环境中,实现不同类型的虚拟化计算、存储和/或其他网络可访问功能的提供者网络的操作员可允许客户在各种资源获取模式下保留或购买对资源的访问。计算资源提供者可为客户提供设施来选择和启动所需的计算资源、将应用组件部署到计算资源并且维持在环境中执行应用。另外,由于对应用的需求或应用的容量要求改变,计算资源提供者还可为客户提供设施来手动地或通过自动扩展快速且容易地放大或缩小分配到应用的资源的数目和类型。可以离散的单元形式来获得由计算资源提供者提供的计算资源,所述单元可称为实例。实例可表示物理服务器硬件平台、在服务器上执行的虚拟机实例或这两者的某种组合。可以获得各种类型和配置的实例,包括执行不同操作系统和/或管理程序且具有各种安装的软件应用、运行时等的不同大小的资源。例如,实例还可用于特定的可用性区中,所述可用性区表示例如逻辑区域、容错区域、数据中心或基础计算硬件的其他地理位置。实例可在可用性区内或横跨可用性区复制,以便改善实例的冗余,并且实例可在特定可用性区内或横跨可用性区迁移。作为一个示例,与可用性区中的特定服务器的客户端通信的延迟可小于与不同服务器的客户端通信的延迟。这样,实例可从较高延迟服务器迁移到较低延迟服务器以便改善总体客户端体验。
在一些实施方案中,提供者网络可被组织成多个地理区域,并且每个区域可包括一个或多个可用性区。可用性区(其也可称为可用性容器)进而可包括一个或多个不同的位置或数据中心,以这样的方式进行配置使得:给定的可用性区中的资源可与其他可用性区中的故障隔离或绝缘。也就是说,预期一个可用性区中的故障可能不会引起其他可用性区中的故障。因此,所意图的是,一个资源实例的可用性配置文件独立于不同可用性区中的资源实例的可用性配置文件。客户端可能够通过在相应的可用性区中启动多个应用实例来保护其应用免受在单个位置处的出现故障。同时,在一些实现方式中,可以提供驻留在同一地理区域内的资源实例之间的廉价且低延迟的网络连通性(并且同一可用性区的资源之间的网络传输可以更快)。
在前述部分中所述的过程、方法和算法中的每一个可体现在由一个或多个计算机或计算机处理器执行的代码模块中,并且完全或部分地由所述代码模块自动进行。所述代码模块可存储在任意类型的非暂时性计算机可读介质或计算机存储装置(诸如硬盘、固态存储器、光盘和/或类似装置)上。所述过程和算法可部分地或全部地以专用电路实现。所公开的过程和处理步骤的结果可永久地或以其他方式存储在任何类型的非暂时性计算机存储装置(例如像易失性或非易失性存储装置)中。
上文所述的各种特征和过程可彼此独立地使用或可以各种方式进行组合。全部可能的组合和子组合意图落入本公开的范围内。此外,某些方法和过程块可在一些实现方式中省略掉。本文所述的方法和过程也不限于任意特定的顺序,并且与之相关的块或状态可按其他适当的顺序执行。例如,所述的块或状态可按不同于已明确公开的次序的次序执行,或多个块或状态可组合在单个块或状态中。示例块或状态可串行地、并行地或以其他方式执行。块或状态可被添加至所公开的示例实施方案或可从这些实施方案中移除。本文所述的示例系统和部件可以不同于所述方式的方式被配置。例如,与所公开的示例实施方案相比,元件可被添加、移除或重新排列。
还将理解的是,尽管各种项目被示出为在使用时存储在存储器中或者存储装置上,但是为了存储器管理和数据完整性的目的,可在存储器与其他存储装置之间传递这些项目或其部分。或者,在其他实施方案中,软件模块和/或系统中的一些或全部可在另一装置上的存储器中执行,并且经由计算机间的通信来与所示出的计算机系统通信。此外,在一些实施方案中,一些或所有系统和/或模块可能以其他方式来实现或提供,诸如至少部分地以固件和/或硬件来实现或提供,包括但不限于一个或多个应用专用集成电路(ASIC)、标准集成电路、控制器(例如,通过执行适当指令,并且包括微型控制器和/或嵌入式控制器)、现场可编程门阵列(FPGA)、复合可编程逻辑装置(CPLD)等。模块、系统和数据结构中的一些或所有也可存储(例如,作为软件指令或结构化数据)在计算机可读介质上,诸如硬盘、存储器、网络、或通过适当的装置或经由适当的连接读取的便携式介质物件。所述系统、模块和数据也可作为所生成的数据信号(例如,作为载波或其他模拟或数字传播信号的一部分)在各种计算机可读传输介质(包括基于无线的介质和基于有线/电缆的介质)上传输,并且可采取多种形式(例如,作为单一模拟信号或多路复用的模拟信号的一部分,或作为多个离散的数字分组或帧)。在其他实施方案中,这种计算机程序产品也可采取其他形式。因此,本发明可用其他计算机系统配置来实践。
除非另外特别说明,或者在所用上下文中另外加以理解,否则诸如尤其是“可(can)”、“可能(could)”、“可能(might)”、“可以(may)”、“例如(e.g.)”等等本文所使用的条件语言通常意图表达:某些实施方案包括某些特征、要素和/或步骤,而其他实施方案不包括这些特征、要素和/或步骤。因此,这种条件语言通常并非意图暗示所述特征、要素和/或步骤无论如何都是一个或多个实施方案所必需的,或者并非暗示一个或多个实施方案必须包括用于在借助或不借助作者输入或者提示的情况下决定是否包括这些特征、要素和/或步骤或是否在任意特定实施方案中实施这些特征、要素和/或步骤的逻辑。术语“包括”、“包含”、“具有”等是同义的,并以开放的方式包含性地使用,而且不排除额外要素、特征、动作、操作等等。另外,术语“或者”以其包含性意义(并且不以其排除性意义)使用,从而使得当(例如)用来连接一列表要素时,术语“或者”意味着所述列表中要素的一个、一些或全部。
尽管已经描述某些示例实施方案,但是这些实施方案仅仅通过示例呈现,且并非意图限制本文所公开的发明的范围。因此,在前文描述中没有内容意在暗示任意特定特征、特性、步骤、模块或方框是必须的或不可缺少的。实际上,本文所述的新颖方法和系统可以多种其他形式体现;此外,在不脱离本文所公开的发明的精神的情况下,可以对本文所述的方法和系统做出各种省略、替代和形式变化。所附权利要求书和其等效物意图涵盖将会落在本文所公开的某些发明的范围和精神内的这类形式或修改。
本公开的实施方案可鉴于以下条款来描述:
1.一种计算装置,其包括:
网络接口,其用于将所述计算装置通信地联接到远程计算节点;
一个或多个存储器,其具有存储在其上的计算机可读指令,所述计算机可读指令在被所述计算装置执行时致使所述计算装置至少进行以下:
在所述计算装置上开始应用程序的执行,所述应用程序包括多个功能,所述多个功能包括第一功能,其中所述应用程序的第一副本存储在所述计算装置上,并且所述应用程序的第二副本存储在所述远程计算节点上;
选择用于在所述远程计算节点上执行的所述多个功能中的所述第一功能,所述选择至少部分地基于指示在所述远程计算节点上执行所述第一功能的优先级高于在所述远程计算节点上执行所述多个功能中的第二功能的第二优先级的信息,并且至少部分地基于指示所述计算装置执行所述第一功能的能力或环境的信息;以及
从所述远程计算节点接收指示在所述远程计算节点上执行所述第一功能的结果的信息。
2.如条款1所述的计算装置,其还包括具有存储在其上的计算机可读指令的一个或多个存储器,所述计算机可读指令在被所述计算装置执行时致使所述计算装置至少进行以下:
重新计算在所述远程计算节点上执行所述第一功能的所述优先级,所述重新计算至少部分地基于指示所述计算装置的所述能力的所述信息;以及
确定在所述远程计算节点上执行所述应用程序的第二功能,所述确定至少部分地基于在所述远程计算节点上执行所述第一功能的所述重新计算的优先级。
3.如条款1所述的计算装置,其还包括具有存储在其上的计算机可读指令的一个或多个存储器,所述计算机可读指令在被所述一个或多个计算装置执行时致使所述计算装置至少进行以下:
至少部分地基于指示所述远程计算节点执行所述第一功能的能力的信息,确定在所述计算装置上执行所述第一功能。
4.如条款1所述的计算装置,其中指示在对于所述计算装置是远程的所述计算节点上执行所述第一功能的优先级的所述信息至少部分地基于所述第一功能的硬件装置依赖关系。
5.一种方法,其包括:
在第一计算节点上开始程序的执行,所述程序包括多个功能,所述多个功能包括第一功能;
处理指示在对于所述第一计算节点是远程的第二计算节点上执行所述第一功能的信息,所述信息指示在所述第二计算节点而不是所述第一计算节点上执行所述第一功能的优先级,所述优先级相对于在所述第二计算节点上执行所述多个功能中的其他功能的优先级;
确定在所述第二计算节点上执行所述第一功能,所述确定至少部分地基于指示在所述第二计算节点上执行所述第一功能的优先级的所述信息,并且至少部分地基于指示所述第一计算节点执行所述第一功能的能力的信息;
致使所述第一功能在所述第二计算节点上执行;
至少部分地基于接收指示所述第二计算节点执行所述第一功能的所述能力的附加信息,确定在所述第一计算节点上执行所述第一功能;以及
致使所述第一功能在所述第一计算节点上执行。
6.如条款5所述的方法,其还包括:
确定在所述第二计算节点上执行所述程序的第二功能,所述确定至少部分地基于监测所述第一计算节点的性能特征。
7.如条款5所述的方法,其中指示在所述第二计算节点上执行所述第一功能的所述信息包括指示所述第一功能的状态特征的值。
8.如条款5所述的方法,其中指示在所述第二计算节点上执行所述第一功能的所述信息包括指示所述第一功能的装置依赖关系的值。
9.如条款5所述的方法,其中指示在所述第二计算节点上执行所述第一功能的所述信息对应于开发者的所述第一功能是用于在所述第二计算节点上执行的候选的指示。
10.如条款5所述的方法,其还包括:
使维持在所述第一计算节点上的成员数据的第一副本与维持在所述第二计算节点上的所述成员数据的第二副本同步化,其中所述成员数据在执行所述第一功能期间被引用。
11.如条款5所述的方法,其中所述附加信息对应于所述第二计算节点或所述第一计算节点与所述第二计算节点之间的连接中的至少一个的性能特征的改变。
12.如条款5所述的方法,其中指示在所述第二计算节点上执行所述第一功能的优先级的所述信息是至少部分地基于所述第一计算节点的性能、所述第二计算节点的性能和网络性能中的至少一个计算的值。
13.如条款5所述的方法,其中指示在所述第二计算节点上执行所述第一功能的优先级的所述信息是至少部分地基于所述程序的发布者或用户中的至少一个的成本计算的值,所述成本至少部分地基于可用于执行所述第一功能的计算资源。
14.一种非暂时性计算机可读存储介质,其具有存储在其上的指令,所述指令在被一个或多个计算装置执行时,致使所述一个或多个计算装置至少进行以下:
处理对应于包括多个功能的程序的第一功能的信息,所述程序在第一计算节点上执行,所述信息指示在第二计算节点上执行所述第一功能的适合性;
确定所述第一计算节点执行所述第一功能的能力;以及
确定在所述第二计算节点上执行所述第一功能,所述确定至少部分地基于指示可在所述第二计算节点上执行所述第一功能的所述信息、以及所述第一计算节点执行所述第一功能的所述能力;以及
至少部分地基于将所述程序的状态信息从所述第一计算节点上运行的第二功能传送到所述第二计算节点上运行的所述第一功能,致使所述第一功能在所述第二计算节点上执行。
15.如条款14所述的非暂时性计算机可读存储介质,其还包括指令,所述指令在被所述一个或多个计算装置执行时,致使所述一个或多个计算装置至少:
致使对应于所述第一功能的参数的数据从所述第一计算节点传输到所述第二计算节点;以及
致使对应于执行所述第一功能的结果的数据从所述第二计算节点传输到所述第一计算节点。
16.如条款14所述的非暂时性计算机可读存储介质,其还包括指令,所述指令在被所述一个或多个计算装置执行时,致使所述一个或多个计算装置至少:
至少部分地基于将所述第一计算节点执行所述第一功能的所述能力与所述第二计算节点执行所述第一功能的能力比较,致使所述第一功能在所述第一计算节点上执行。
17.如条款14所述的非暂时性计算机可读存储介质,其还包括指令,所述指令在被所述一个或多个计算装置执行时,致使所述一个或多个计算装置至少:
使维持在所述第一计算节点上的成员数据的第一副本与维持在所述第二计算节点上的所述成员数据的第二副本同步化,其中所述成员数据在执行所述第一功能期间被引用。
18.如条款14所述的非暂时性计算机可读存储介质,其还包括指令,所述指令在被所述一个或多个计算装置执行时,致使所述一个或多个计算装置至少:
确定在所述第二计算节点上执行所述程序的附加功能,所述确定至少部分地基于监测所述第一计算节点的性能特征。
19.如条款14所述的非暂时性计算机可读存储介质,其中在所述第二计算节点上执行所述第一功能的适合性至少部分地基于注释或属性中的至少一个。
20.如条款14所述的非暂时性计算机可读存储介质,其中所述第二计算节点包括与所述第一计算节点的执行环境兼容的虚拟机。
21.一种方法,其包括:
处理指示第一功能的信息,所述第一功能是用于从执行包括所述第一功能的程序的第一计算节点改变位置到对于所述第一计算节点是远程的第二计算节点的候选,其中将所述第一功能改变位置包括在所述第二计算节点上执行所述第一功能;
分析所述第一功能的依赖关系,其中分析依赖关系包括识别由所述第一功能调用的附加方法,识别由所述第一功能和所述附加方法使用的数据,并且识别由所述第一功能和所述附加方法使用的硬件;
形成指示将所述第一功能从所述第一计算节点改变位置到所述第二计算节点的优先级的值;并且
存储在所述值与所述第一功能之间的关联。
本公开的各种实施方案还可鉴于以下条款来描述:
1.一种系统,其包括:
第一计算节点,其通信地联接到客户端装置;
一个或多个存储器,其具有存储在其上的计算机可读指令,所述计算机可读指令在被计算装置执行时致使所述计算装置至少进行以下:
在虚拟机实例可访问的存储装置上存储应用程序的副本,其中所述应用程序的所述副本对应于在客户端装置上可执行的所述应用程序的实例;
确定在所述虚拟机实例上执行所述应用程序的第一部分,其中所述确定至少部分地基于将所述第一计算节点的第一性能特征与所述客户端装置的第二性能特征比较,其中至少部分地基于所述第一部分相对于其他部分对在所述虚拟机实例上执行的适合性,所述应用程序的所述第一部分选自所述应用程序的多个部分;
至少部分地基于所述应用程序的所述第一副本,在所述虚拟机实例上执行所述应用程序的所述第一部分;以及
将执行所述应用程序的所述第一部分的结果传输到所述客户端装置,以用于被所述应用程序的第二部分处理。
2.如条款1所述的系统,其还包括具有存储在其上的计算机可读指令的一个或多个存储器,所述计算机可读指令在被所述计算装置执行时致使所述系统至少进行以下:
至少部分地基于确定所述客户端装置的操作特征等效于所述虚拟机实例的操作特征,选择所述虚拟机实例。
3.如条款1所述的系统,其还包括具有存储在其上的计算机可读指令的一个或多个存储器,所述计算机可读指令在被所述计算装置执行时致使所述系统至少进行以下:
至少部分地基于所述应用程序已经下载到客户端装置的次数,保留所述虚拟机实例。
4.如条款1所述的系统,其还包括具有存储在其上的计算机可读指令的一个或多个存储器,所述计算机可读指令在被所述计算装置执行时致使所述系统至少进行以下:
至少部分地基于具有所述第二性能特征的客户端装置的预测数目,保留所述虚拟机实例。
5.如条款1所述的系统,其还包括具有存储在其上的计算机可读指令的一个或多个存储器,所述计算机可读指令在被所述计算装置执行时致使所述系统至少进行以下:
至少部分地基于在所述虚拟机实例上执行所述应用程序的第三部分的成本,确定在所述客户端装置上执行所述应用程序的所述第三部分。
6.如条款1所述的系统,其还包括具有存储在其上的计算机可读指令的一个或多个存储器,所述计算机可读指令在被所述计算装置执行时致使所述系统至少进行以下:
至少部分地基于执行所述应用程序的所述第一部分的成本,确定在所述虚拟机实例上停止执行所述应用程序的所述第一部分。
7.一种用于执行应用程序的计算机实现方法,所述方法包括:
通过计算机确定在虚拟机实例上执行应用程序的第一部分,其中所述应用程序的实例也在客户端装置上执行,其中所述确定至少部分地基于将所述客户端装置的第一特征与所述虚拟机实例的第二特征比较,其中所述应用程序的所述第一部分由所述计算机从所述应用程序的多个部分选择;
至少部分地基于所述应用程序的所述第一副本,在所述虚拟机实例上执行所述应用程序的所述第一部分;以及
返回执行所述应用程序的所述第一部分的结果以供所述应用程序的第二部分处理,所述应用程序的所述第二部分在所述客户端装置上执行。
8.如条款7所述的计算机实现方法,其还包括:
至少部分地基于将所述客户端装置的特征与所述虚拟机实例的特征匹配,选择所述虚拟机实例。
9.如条款7所述的计算机实现方法,其还包括:
至少部分地基于所述应用程序的所述第一副本下载到所述客户端装置,保留所述虚拟机实例。
10.如条款9所述的计算机实现方法,其还包括:
至少部分地基于具有所述客户端装置的所述第一特征的客户端装置的比率,保留所述虚拟机实例。
11.如条款7所述的计算机实现方法,其还包括:
至少部分地基于在所述虚拟机实例上执行所述应用程序的第三部分的成本,确定在所述客户端装置上执行所述应用程序的所述第三部分。
12.如条款7所述的计算机实现方法,其还包括:
至少部分地基于执行所述应用程序的所述第一部分的成本,确定在所述虚拟机实例上停止执行所述应用程序的所述第一部分。
13.如条款7所述的计算机实现方法,其中所述虚拟机实例模拟物理计算装置。
14.一种非暂时性计算机可读存储介质,其具有存储在其上的指令,所述指令在被计算装置执行时,致使所述计算装置至少进行以下:
致使第一计算节点执行虚拟机实例;
接收指示在对于所述第一计算节点是远程的第二计算节点上执行的应用程序的信息,所述应用程序包括第一部分和第二部分;
确定在所述虚拟机实例上执行所述应用程序的所述第一部分,其中所述确定至少部分地基于将所述第一计算节点的第一特征与所述第二计算节点的第二特征比较,所述第一部分选自所述应用程序的多个部分是至少部分地基于所述第一部分相对于所述应用程序的其他部分对在所述虚拟机实例上执行的适合性;
在所述虚拟机实例上执行所述应用程序的所述第一部分;以及
将执行所述应用程序的所述第一部分的结果传输到所述第二计算节点以供所述应用程序的所述第二部分处理。
15.如条款14所述的非暂时性计算机可读存储介质,其中所述虚拟机实例可操作来执行中间语言指令。
16.如条款14所述的非暂时性计算机可读存储介质,其还包括指令,所述指令在被所述一个或多个计算装置执行时,致使所述一个或多个计算装置至少:
至少部分地基于将所述第二计算节点的特征与所述虚拟机实例的特征匹配,选择所述虚拟机实例。
17.如条款14所述的非暂时性计算机可读存储介质,其还包括指令,所述指令在被所述一个或多个计算装置执行时,致使所述一个或多个计算装置至少:
至少部分地基于所述应用程序的副本下载到所述第二计算节点,保留所述虚拟机实例。
18.如条款14所述的非暂时性计算机可读存储介质,其还包括指令,所述指令在被所述一个或多个计算装置执行时,致使所述一个或多个计算装置至少:
至少部分地基于具有所述第二计算节点的所述第二特征的计算节点的比率,保留所述虚拟机实例。
19.如条款14所述的非暂时性计算机可读存储介质,其还包括指令,所述指令在被所述一个或多个计算装置执行时,致使所述一个或多个计算装置至少:
至少部分地基于在所述虚拟机实例上执行所述应用程序的第三部分的成本,确定在所述第二计算节点上执行所述应用程序的所述第三部分。
20.如条款14所述的非暂时性计算机可读存储介质,其还包括指令,所述指令在被所述一个或多个计算装置执行时,致使所述一个或多个计算装置至少:
至少部分地基于执行所述应用程序的所述第一部分的成本,确定在所述虚拟机实例上停止执行所述应用程序的所述第一部分。
21.如条款14所述的计算机可读介质,其中所述虚拟机实例模拟物理计算装置。
Claims (14)
1.一种用于执行应用程序的系统,其包括:
第一计算节点,其通信地联接到客户端装置;
一个或多个存储器,其具有存储在其上的计算机可读指令,所述计算机可读指令在被计算装置执行时致使所述计算装置至少进行以下:
在虚拟机实例可访问的存储装置上存储应用程序的副本,其中所述应用程序的所述副本对应于在客户端装置上可执行的所述应用程序的实例;
确定在所述虚拟机实例上执行所述应用程序的第一部分,其中所述确定至少部分地基于将所述第一计算节点的第一性能特征与所述客户端装置的第二性能特征比较,其中至少部分地基于所述第一部分相对于其他部分对在所述虚拟机实例上执行的适合性,所述应用程序的所述第一部分选自所述应用程序的多个部分;
至少部分地基于所述应用程序的第一副本,在所述虚拟机实例上执行所述应用程序的所述第一部分;以及
将执行所述应用程序的所述第一部分的结果传输到所述客户端装置,以至少部分地基于存储在所述客户端装置上的应用程序的第二副本由所述应用程序的第二部分处理。
2.如权利要求1所述的系统,所述系统还包括具有存储在其上的计算机可读指令的一个或多个存储器,所述计算机可读指令在被所述计算装置执行时致使所述系统至少进行以下:
至少部分地基于确定所述客户端装置的操作特征等效于所述虚拟机实例的操作特征,选择所述虚拟机实例。
3.如权利要求1所述的系统,所述系统还包括具有存储在其上的计算机可读指令的一个或多个存储器,所述计算机可读指令在被所述计算装置执行时致使所述系统至少进行以下:
至少部分地基于在所述虚拟机实例上执行所述应用程序的第三部分的成本,确定在所述客户端装置上执行所述应用程序的所述第三部分。
4.如权利要求1所述的系统,所述系统还包括具有存储在其上的计算机可读指令的一个或多个存储器,所述计算机可读指令在被所述计算装置执行时致使所述系统至少进行以下:
至少部分地基于执行所述应用程序的所述第一部分的成本,确定在所述虚拟机实例上停止执行所述应用程序的所述第一部分。
5.一种用于执行应用程序的计算机实现方法,所述方法包括:
通过计算机确定在虚拟机实例上执行应用程序的第一部分,其中所述应用程序的实例也在客户端装置上执行,其中所述确定至少部分地基于将所述客户端装置的第一特征与所述虚拟机实例的第二特征比较,其中所述应用程序的所述第一部分由所述计算机从所述应用程序的多个部分选择;
至少部分地基于所述应用程序的第一副本,在所述虚拟机实例上执行所述应用程序的所述第一部分;以及
返回执行所述应用程序的所述第一部分的结果以供所述应用程序的第二部分处理,至少部分地基于存储在所述客户端装置上的应用程序的第二副本在所述客户端装置上执行所述应用程序的所述第二部分。
6.如权利要求5所述的计算机实现方法,其还包括:
至少部分地基于将所述客户端装置的特征与所述虚拟机实例的特征匹配,选择所述虚拟机实例。
7.如权利要求5所述的计算机实现方法,其还包括:
至少部分地基于所述应用程序的所述第一副本下载到所述客户端装置,保留所述虚拟机实例。
8.如权利要求7所述的计算机实现方法,其还包括:
至少部分地基于具有所述客户端装置的所述第一特征的客户端装置的比率,保留所述虚拟机实例。
9.如权利要求5所述的计算机实现方法,其还包括:
至少部分地基于在所述虚拟机实例上执行所述应用程序的第三部分的成本,确定在所述客户端装置上执行所述应用程序的所述第三部分。
10.一种用于执行应用程序的方法,其包括:
在第一计算节点上开始程序的执行,所述程序包括多个功能,所述多个功能包括第一功能;
处理指示在对于所述第一计算节点是远程的第二计算节点上执行所述第一功能的信息,所述信息指示在所述第二计算节点而不是所述第一计算节点上执行所述第一功能的优先级,所述优先级相对于在所述第二计算节点上执行所述多个功能中的其他功能的优先级;
确定在所述第二计算节点上执行所述第一功能,所述确定至少部分地基于指示在所述第二计算节点上执行所述第一功能的优先级的所述信息,并且至少部分地基于指示所述第一计算节点执行所述第一功能的能力的信息;
致使所述第一功能在所述第二计算节点上执行;
至少部分地基于接收指示所述第二计算节点执行所述第一功能的所述能力的附加信息,确定在所述第一计算节点上执行所述第一功能;
致使所述第一功能在所述第一计算节点上执行;以及
其中所述方法还包括:
使维持在所述第一计算节点上的成员数据的第一副本与维持在所述第二计算节点上的所述成员数据的第二副本同步化,其中所述成员数据在执行所述第一功能期间被引用。
11.如权利要求10所述的方法,其还包括:
确定在所述第二计算节点上执行所述程序的第二功能,所述确定至少部分地基于监测所述第一计算节点的性能特征。
12.如权利要求10所述的方法,其中指示在所述第二计算节点上执行所述第一功能的所述信息包括指示所述第一功能的状态特征的值。
13.如权利要求10所述的方法,其中所述附加信息对应于所述第二计算节点或所述第一计算节点与所述第二计算节点之间的连接中的至少一个的性能特征的改变。
14.如权利要求10所述的方法,其中指示在所述第二计算节点上执行所述第一功能的优先级的所述信息是至少部分地基于以下中的至少一个计算的值:所述第一计算节点的性能、所述第二计算节点的性能、网络性能、所述程序的发布者或用户中的至少一个的至少部分地基于可用于执行所述第一功能的计算资源的成本。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/306,173 | 2014-06-16 | ||
US14/306,168 US9880918B2 (en) | 2014-06-16 | 2014-06-16 | Mobile and remote runtime integration |
US14/306,168 | 2014-06-16 | ||
US14/306,173 US10185590B2 (en) | 2014-06-16 | 2014-06-16 | Mobile and remote runtime integration |
PCT/US2015/035848 WO2015195561A1 (en) | 2014-06-16 | 2015-06-15 | Mobile and remote runtime integration |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106575241A CN106575241A (zh) | 2017-04-19 |
CN106575241B true CN106575241B (zh) | 2021-05-25 |
Family
ID=53674255
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201580031975.3A Active CN106575241B (zh) | 2014-06-16 | 2015-06-15 | 移动和远程运行时集成 |
Country Status (6)
Country | Link |
---|---|
EP (1) | EP3155523B1 (zh) |
JP (1) | JP6385471B2 (zh) |
CN (1) | CN106575241B (zh) |
AU (1) | AU2015277400B2 (zh) |
CA (1) | CA2951429C (zh) |
WO (1) | WO2015195561A1 (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2018022627A1 (en) * | 2016-07-25 | 2018-02-01 | Jadhav Ajay | Cloud device system |
CN109213546B (zh) * | 2017-06-30 | 2021-09-07 | 武汉斗鱼网络科技有限公司 | 用于windows客户端程序的登录处理方法和装置 |
WO2021076692A1 (en) * | 2019-10-15 | 2021-04-22 | Idac Holdings, Inc. | METHODS, APPARATUS AND SYSTEMS FOR DECOMPOSING MOBILE APPLICATIONS INTO MICRO-SERVICES (MSs) AT RUNTIME FOR DISTRIBUTED EXECUTION |
CN112347125A (zh) * | 2020-11-16 | 2021-02-09 | 李增国 | 一种设备数据处理的方法及物联网数据处理方法 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103713951A (zh) * | 2006-03-31 | 2014-04-09 | 亚马逊技术有限公司 | 管理由多个计算系统执行程序 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8442015B2 (en) * | 2007-07-20 | 2013-05-14 | Broadcom Corporation | Method and system for an atomizing function of a mobile device |
JP5211766B2 (ja) * | 2008-03-10 | 2013-06-12 | 富士通株式会社 | 資源割り当て装置及びプログラム |
US20100121904A1 (en) * | 2008-11-11 | 2010-05-13 | Cray Inc. | Resource reservations in a multiprocessor computing environment |
US9239740B2 (en) * | 2009-06-16 | 2016-01-19 | Microsoft Technology Licensing, Llc | Program partitioning across client and cloud |
US20130073600A1 (en) * | 2011-09-21 | 2013-03-21 | Jonathan A. Jenkins | Remote process execution management |
US9098309B2 (en) * | 2011-09-23 | 2015-08-04 | Qualcomm Incorporated | Power consumption optimized translation of object code partitioned for hardware component based on identified operations |
US8276140B1 (en) * | 2011-11-14 | 2012-09-25 | Google Inc. | Adjustable virtual network performance |
-
2015
- 2015-06-15 WO PCT/US2015/035848 patent/WO2015195561A1/en active Application Filing
- 2015-06-15 JP JP2016573866A patent/JP6385471B2/ja active Active
- 2015-06-15 AU AU2015277400A patent/AU2015277400B2/en active Active
- 2015-06-15 EP EP15739048.5A patent/EP3155523B1/en active Active
- 2015-06-15 CN CN201580031975.3A patent/CN106575241B/zh active Active
- 2015-06-15 CA CA2951429A patent/CA2951429C/en active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103713951A (zh) * | 2006-03-31 | 2014-04-09 | 亚马逊技术有限公司 | 管理由多个计算系统执行程序 |
Also Published As
Publication number | Publication date |
---|---|
EP3155523B1 (en) | 2023-08-02 |
WO2015195561A1 (en) | 2015-12-23 |
CA2951429A1 (en) | 2015-12-23 |
JP2017522658A (ja) | 2017-08-10 |
CA2951429C (en) | 2023-05-02 |
AU2015277400A1 (en) | 2017-02-02 |
AU2015277400B2 (en) | 2020-12-24 |
CN106575241A (zh) | 2017-04-19 |
EP3155523A1 (en) | 2017-04-19 |
JP6385471B2 (ja) | 2018-09-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10185590B2 (en) | Mobile and remote runtime integration | |
Yang et al. | Techniques to minimize state transfer costs for dynamic execution offloading in mobile cloud computing | |
CN101667138B (zh) | 混合计算环境以及混合计算环境中的数据处理方法 | |
US20150051942A1 (en) | Smart cloud workload balancer | |
KR102183185B1 (ko) | 애플리케이션 프로그래밍 인터페이스들에 대한 런타임 액세스의 제어 | |
US20140245319A1 (en) | Method for enabling an application to run on a cloud computing system | |
US11442835B1 (en) | Mobile and remote runtime integration | |
US10671384B1 (en) | Proactive seeding of build Artifacts | |
CN106575241B (zh) | 移动和远程运行时集成 | |
US9729610B2 (en) | Method for intercepting an instruction produced by an application on a computer | |
US20160156715A1 (en) | Optimal allocation of dynamically instantiated services among computation resources | |
CN109697121B (zh) | 用于向应用分配处理资源的方法、设备和计算机可读介质 | |
US20220164216A1 (en) | VIRTUALIZING HARDWARE COMPONENTS THAT IMPLEMENT Al APPLICATIONS | |
Mousavi Khaneghah et al. | A mathematical multi-dimensional mechanism to improve process migration efficiency in peer-to-peer computing environments | |
Mamidala et al. | MXNET-MPI: Embedding MPI parallelism in parameter server task model for scaling deep learning | |
US20230083849A1 (en) | Parsing tool for optimizing code for deployment on a serverless platform | |
WO2022078060A1 (en) | Tag-driven scheduling of computing resources for function execution | |
Cai et al. | Deployment and verification of machine learning tool-chain based on kubernetes distributed clusters: This paper is submitted for possible publication in the special issue on high performance distributed computing | |
Krawczyk et al. | Mobile offloading framework: Solution for optimizing mobile applications using cloud computing | |
Tobler | Gpuless–serverless gpu functions | |
US9195457B1 (en) | Interactive application programming interface documentation | |
Jung et al. | Oneos: Middleware for running edge computing applications as distributed posix pipelines | |
Lordan et al. | Enabling GPU support for the COMPSs-Mobile framework | |
US11755359B2 (en) | Methods and apparatus to implement intelligent selection of content items for provisioning | |
US20240069944A1 (en) | Coordinated hooking mechanism for checkpointing virtual machines |
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 |