CN108701034B - 向适于托管与用户相关联的一组应用程序的虚拟机供应计算资源 - Google Patents

向适于托管与用户相关联的一组应用程序的虚拟机供应计算资源 Download PDF

Info

Publication number
CN108701034B
CN108701034B CN201680076813.6A CN201680076813A CN108701034B CN 108701034 B CN108701034 B CN 108701034B CN 201680076813 A CN201680076813 A CN 201680076813A CN 108701034 B CN108701034 B CN 108701034B
Authority
CN
China
Prior art keywords
application
virtual machine
user
computer system
computing resource
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201680076813.6A
Other languages
English (en)
Other versions
CN108701034A (zh
Inventor
N·B·托马斯
S·S·科史奇
Y·林
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Amazon Technologies Inc
Original Assignee
Amazon Technologies Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Amazon Technologies Inc filed Critical Amazon Technologies Inc
Priority to CN202111226550.1A priority Critical patent/CN114116088A/zh
Publication of CN108701034A publication Critical patent/CN108701034A/zh
Application granted granted Critical
Publication of CN108701034B publication Critical patent/CN108701034B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/451Execution arrangements for user interfaces
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/61Installation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44505Configuring for program initiating, e.g. using registry, configuration files
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/451Execution arrangements for user interfaces
    • G06F9/452Remote windowing, e.g. X-Window System, desktop virtualisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5077Logical partitioning of resources; Management or configuration of virtualized resources
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets
    • H04L65/70Media network packetisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45562Creating, deleting, cloning virtual machine instances
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/4557Distribution of virtual machine instances; Migration and load balancing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45595Network integration; Enabling network access in virtual machine instances

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Multimedia (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

通过识别用户所使用的应用程序并且供应适于所述识别的应用程序的资源需求的虚拟计算资源来向所述用户提供计算资源。所述识别的应用程序的所述资源需求可以组合成单组资源需求并且用来获取能够托管所述识别的应用程序的虚拟机。在其他实例中,可以针对每个识别的应用程序来获取虚拟机。每个虚拟机经由流传输代理来生成显示流。所述显示流由所述用户的客户端计算机系统上的应用程序流传输客户端接收,并且在客户端显示器上显示给所述用户。多个虚拟机可以生成多个显示流,所述多个显示流可以被所述应用程序流传输客户端组合并且在单个客户端显示器上呈现给所述用户。

Description

向适于托管与用户相关联的一组应用程序的虚拟机供应计算 资源
相关申请的交叉引用
本申请要求2015年12月28日提交的标题为“COMPUTING RESOURCE MANAGEMENT”的美国专利申请No.14/981,774的优先权,该专利申请的内容以其全文引用的方式并入本文中。
背景
在企业环境中,许多员工需要访问计算资源以便执行他们的工作职能。例如,行政助理可能需要访问文字处理、数据处理和数据访问功能。工程师可能需要计算机辅助绘图(“CAD”)应用程序和复杂的模拟软件。一些企业通过为每位员工购买个人计算机来为其员工提供计算资源。个人计算机可以被配置有不同数量的内存、存储和处理能力。为每位员工确定适当的配置是一个难题。如果将显著超过员工的计算需求的计算资源提供给该员工,则可能会浪费多余的资源。如果将不足的计算资源提供给员工,那么员工执行工作职能的能力可能会受损,并且计算机系统可能需要提前更换或昂贵的升级。
一些企业选择通过按需从在线服务提供商那里获取计算资源来解决这些问题。在线服务提供商可以经由瘦客户端或终端来为员工提供计算服务。尽管此模型在调整所提供的计算资源的量方面提高了某种程度的灵活性,但仍然难以确定提供给每位员工的最佳计算资源量,并且仍然易出现上面讨论的问题等等。
附图说明
将参考附图来描述各种技术,在附图中:
图1示出可以实践各种实施方案的环境的说明性实例;
图2示出根据一个实施方案的作为被执行的结果而至少部分地基于一组选定的应用程序来确定客户端的计算资源需求的过程的说明性实例;
图3示出根据一个实施方案的作为被执行的结果而向用户分配一种类型的虚拟实例的过程的说明性实例;
图4示出根据一个实施方案的向客户端提供适于托管指定的一组应用程序的计算资源的客户端-服务器计算机系统的说明性实例;
图5示出根据一个实施方案的作为由客户端计算机系统执行的结果而从服务器供应计算资源并从在服务器上运行的应用程序接收显示流的过程的说明性实例;
图6示出根据一个实施方案的以多个虚拟机的形式向客户端提供计算资源的客户端-服务器计算机系统的说明性实例,并且每个虚拟机适于托管由客户端指定的具体应用程序;
图7示出根据一个实施方案的从多个计算资源接收多个显示流并将显示流组合成客户端显示器上的统一屏幕的客户端-服务器计算机系统的说明性实例;
图8示出根据一个实施方案的作为由客户端计算机系统执行的结果而从服务器供应一组虚拟机并将来自虚拟机的显示信息流合并到统一显示屏幕中的过程的说明性实例;
图9示出根据一个实施方案的通过提供托管支持多个会话的单个应用程序的虚拟机来向多个客户端提供计算资源的客户机-服务器计算机系统的说明性实例;以及
图10示出可以实施各种实施方案的环境。
详细描述
本文件描述了通过向用户分配一个或多个虚拟机(“VM”)并将来自托管在虚拟机上的应用程序的显示信息流传输到在客户端计算机系统上运行的应用程序流传输客户端来向用户提供计算资源。通过识别用户使用的一组应用程序并将一定量的计算资源分配给适于托管所识别的一组应用程序的虚拟机来确定虚拟机的特性。每个应用程序都有一组相关联的计算资源需求,所述计算资源需求描述托管应用程序所需的计算资源。每组需求指定各种类型的计算资源的量,诸如,磁盘存储、空余内存、视频内存和处理器速度。
在一些环境中,单个虚拟机托管已识别的应用程序。已识别的应用程序的多组需求合并成单组需求,并且所述单组需求被用于根据组合需求来生成能够托管已识别应用程序的虚拟机。在另一实例中,单组需求被用于从一组预先限定的资源简档中选择资源简档,并且所选择的资源简档被用于为用户生成虚拟机。在虚拟机上运行的流传输代理对由被托管的应用程序提供的显示信息进行编码,并且经由应用程序流传输客户端将已编码显示信息传输到属于用户的客户端计算机系统。用户能够经由客户端计算机系统与虚拟机进行交互,并且通常,响应于管理员或另一方改变用户需要或改变应用程序需求,可以维护、升级或更改由虚拟机提供的计算资源。
应用程序需求的组合可以基于预测或观察到的应用程序使用模式进行调整。例如,多组应用程序需求可以按假定用户不同时运行多个应用程序或者只有指定的应用程序可以同时运行的方式进行组合。如果同时运行两个应用程序,则向托管应用程序的虚拟机分配等于每个应用程序的内存需求总和的内存量。如果多个应用程序不同时运行,则向托管应用程序的虚拟机分配等于每个应用程序所需的最大内存量的内存量。无论应用程序是否在运行,都会使用某些类型的计算资源,诸如磁盘存储,因此,向托管多个应用程序的虚拟机分配等于应用程序的磁盘存储需求总和的磁盘存储量。处理需求可以使用混合方法进行组合,因为应用程序的处理器需求往往基于最大处理器使用而不是稳定的平均使用量。在一些实例中,向托管多个应用程序的虚拟机分配等于任何单个应用程序所请求的最大处理资源量的处理资源量。在另一实例中,向托管多个应用程序的虚拟机分配等于单个应用程序所请求的最大处理资源量的处理资源量,以及等于剩余应用程序所请求的处理资源的一部分的附加处理资源量。
在其他环境中,可以使用多个虚拟机为用户托管应用程序。在一个实施方式中,为所识别的应用程序中的每一者供应虚拟机,并且每个虚拟机适于虚拟机所托管的具体应用程序的资源需求。流传输代理在每个虚拟机上运行,并且将显示信息从虚拟机所托管的应用程序流传输到客户端计算机系统。在客户端计算机系统上运行的应用程序流传输客户端包括流组合器,所述流组合器从每个虚拟机接收显示流,并将显示流组合到呈现给用户的单个显示器中。虚拟机可以在用户打开和关闭应用程序时关闭启动,并且可以基于虚拟机托管的具体应用程序的需求为每个虚拟机分配计算资源。
在另一个环境中,多个用户共享对单个虚拟机的访问。虚拟机托管支持多个同时用户会话的应用程序实例。应用程序的每个会话都利用在虚拟机内运行的单独流传输代理。每个流传输代理连接到在服务用户的客户端计算机系统上运行的应用程序流传输客户端。单个虚拟计算机环境上的流传输代理可以通过共享与诸如工具栏、静态显示区域或在多个用户会话上共有的其他用户界面部件等显示部件相关联的已编码信息来协调对显示信息的编码。应用程序会话可以共享常见的操作部件,诸如,静态和动态库、资源文件和数据库。
当流传输代理对显示信息进行编码以传输到客户端计算机系统时,编码操作可以以多种方式进行优化。应用程序显示屏幕的静态或不频繁改变的部分可能会被流传输代理保留并重新使用。如果在客户端计算机系统上运行的应用流传输客户端是应用程序感知的,那么应用程序流传输客户端可以向流传输代理提供信息,指示应用程序显示流的某些部分不需要由流传输代理提供。在一些实施方式中,客户端计算机系统上的窗口管理器将一个或多个流传输代理所提供的一个或多个显示流组合,并且一个或多个显示流的一部分在客户端显示器上可能会被遮盖。窗口管理器将视口信息提供给流传输代理,所述视口信息识别显示流的在客户端上不可见的部分,且因此不需要编码或传输。
供用户使用的应用程序可以由用户或管理员手动地识别,或者通过利用在客户端计算机系统上运行的代理监控用户的应用程序使用来自动地识别。例如,可以供应计算资源并将其提供给允许执行所有应用程序的用户。代理监控应用程序的实际使用,并且在一段时间后,由代理获取的信息将用于识别用户可用但未使用的应用程序。未使用的应用程序从用户的简档中删除,并且基于实际使用的具体应用程序,减少分配给用户的虚拟机的计算资源量。在另一实例中,向用户提供一组应用程序,并且代理识别何时同时使用一个以上的应用程序。作为检测到同时应用程序使用的结果,根据同时应用程序使用来重新计算用户的计算资源需求,并将适当增加的计算资源分配给用户的虚拟机。
可以至少部分地基于分配给用户的预算来调整计算资源。通常,向用户提供虚拟机,所述虚拟机被配置成提供被识别为供用户使用的应用程序的最佳性能。随着计算资源被使用,与用户相关联的预算由计算资源服务提供商拨定。随着预算被消耗,计算资源服务提供商将确定剩余预算在预算期限到期之前是否会耗尽。如果剩余预算将在预算期限到期之前耗尽,则计算资源服务提供商定量供应分配给用户虚拟机的计算资源,以确保预算持续到预算期限到期。当基于预算限制进行调整时,可以向用户和管理员发送通知,请求增加计算资源预算。
图1示出可以实践各种实施方案的环境的说明性实例。环境100包括客户端计算机系统102,所述客户端计算机系统由用户104使用以经由计算机网络108来访问计算资源服务提供商106。计算资源服务提供商106包括托管用户104的虚拟机112的一个或多个服务器计算机系统。计算资源服务提供商106通过将计算资源从服务器计算机系统分配到虚拟机并将来自应用程序商店110的一个或多个应用程序安装到虚拟机上来配置虚拟机。应用程序商店110以在虚拟机上运行来安装应用程序的安装文件的形式存储应用程序,或者以可被转移到虚拟机上的虚拟存储资源的可执行图像的形式存储应用程序。虚拟机112托管文字处理应用程序114、实体建模应用程序116和视频编辑应用程序118。应用程序生成显示信息,所述显示信息被在虚拟机112上运行的流传输代理120编码成显示流。显示流经由计算机网络108流传输到客户端计算机系统102。客户端计算机系统102使用应用程序流传输客户端(诸如,被配置有应用程序流传输软件的web浏览器或独立的流传输应用程序)来接收显示流。应用程序流传输客户端对显示流进行解码并且在连接到客户端计算机系统102的显示屏幕上显示应用程序用户界面。
用户104通过访问客户端计算机系统102上的应用程序代理界面来启动应用程序流传输过程。应用程序代理界面以菜单的形式显示用户可用的应用程序列表,如桌面上的图标、主屏幕上的图块或其他应用程序需要的界面。在一些实例中,经由命令行来提供应用程序代理界面。应用程序代理界面通过访问在计算资源服务提供商106上运行的应用程序代理服务来填充可用应用程序的列表。应用程序代理服务维护数据库,所述数据库指定可供用户使用的一组应用程序。数据库由计算资源服务的管理员填充。
作为用户启动应用程序流传输客户端的结果,计算资源服务提供商106启动具有适于运行用户104已被授权访问的那组应用程序的计算资源的虚拟机112。用户104已被授权访问的应用程序从应用程序商店110安装在虚拟机112上,并且在虚拟机与客户端计算机系统102之间建立显示流,从而为用户104提供针对托管在虚拟机112上的应用程序的用户界面。用户104可以执行所安装的应用程序中的一者或多者,所述应用程序共享虚拟机112上的计算资源。
在另一实施方式中,当用户启动应用程序流传输客户端时,计算资源服务提供商106并不启动虚拟机,直到或者除非用户104选择要运行的应用程序。在客户端计算机系统102上运行的应用程序流传输客户端生成桌面界面并将其呈现给用户104。用户104被授权的应用程序可以经由图标、菜单或其他用户界面元素从桌面界面启动。从桌面界面选择应用程序会向计算资源服务提供商106发送命令,所述计算资源服务提供商启动被配置有适于执行所选应用程序的计算资源的虚拟机。如果从桌面界面选择附加应用程序,则计算资源服务提供商106启动具有适于执行附加应用程序的计算资源的附加虚拟机。如果应用程序关闭,则释放相应的虚拟机和相关联的计算资源。每个虚拟机都含有对由在虚拟机上运行的应用程序提供的显示信息进行编码的流传输代理。客户端计算机系统102从每个虚拟机接收显示流。显示流由应用程序流传输客户端内的流组合器部件接收并组合,并且呈现在统一的桌面界面上。
图2示出根据一个实施方案的作为被执行的结果而至少部分地基于一组选定的应用程序来确定客户端的计算资源需求的过程的说明性实例。过程图200示出由计算资源服务提供商维护的信息,所述信息允许计算资源服务提供商配置适于对用户可用的具体一组应用程序的虚拟机。计算机应用程序与一组计算资源需求相关联。资源需求描述各种计算资源类型的最低和推荐量,诸如,永久存储、内存、处理能力、网络带宽、图形内存、图形能力、外围设备需求、支持软件的需求或其他需求。处理能力可以被指定为最低和推荐的时钟速度,或者时钟速度和处理器类型的组合。在一些实例中,可以以通用术语来指定处理能力,诸如,每秒操作次数、每秒浮点操作次数或操作执行速率。图形功能可能是应用程序需求的一部分,并且可以指定最低量的图形内存和/或最低速度或图形处理器类型。一些应用程序可能需要存在某些外围设备或界面,并且一些应用程序需要与应用程序一起安装具体的支持软件,诸如,具有最低版本号的具体类型的操作系统。通过使虚拟机配置有与应用程序的计算资源需求相对应的虚拟资源等效物,可以使用虚拟机来满足应用程序需求。
应用程序模板202指定由计算资源服务提供商使其对用户可用的一组应用程序。计算资源服务提供商可以从用户或从负责向用户提供计算服务的管理员那里获取应用程序模板202。在一些实施方案中,通过分析由在用户的客户端计算机系统上执行的监控代理收集的信息来获取应用程序模板202。监控代理记录应用程序使用模式,并且标识所使用的一组应用程序以及记录同时使用的应用程序的组合。应用程序模板202链接到三个选定的应用程序简档。文字处理简档204描述用于在主机计算机系统上执行对应的文字处理应用程序的一组需求。实体建模简档206描述用于执行对应的实体建模应用程序和主机计算机系统的一组需求。视频编辑简档208描述用于在计算机系统上执行对应的视频编辑应用程序的一组需求。这三个应用程序简档分别指定最低CPU速度、最小内存量、最小磁盘存储量、最小图形内存量以及最小可用网络带宽量。
计算资源服务提供商将在应用程序模板202中选择的应用程序的简档组合,以生成一组虚拟机需求210。如果预计一次运行一个应用程序,则可以通过识别最小CPU、内存、图形内存和网络带宽限制的最大值来组合需求。由于即使在应用程序未运行时磁盘存储需求通常也适用,因此添加每个应用程序的磁盘存储需求以确定那组虚拟机需求210的磁盘存储需求。如果预计应用程序同时运行,则通过添加将要同时运行的应用程序的需求来确定虚拟机需求210。例如,在图2的实例中,如果文字处理应用程序和实体建模应用程序将要同时运行,则虚拟机需求为3GHz CPU、600MB内存、1.15GB磁盘存储、700kB网络带宽和3GB图形内存。
在一些实例中,应用程序的计算资源需求表示最大暂时资源使用而非一贯使用,因此小于所述资源需求的总和对于同时应用程序执行可能是必需的。对于将要同时运行的一组应用程序,可以通过以下方式来确定虚拟机需求210的各个项:为每个应用程序识别每个资源类型的最小所需资源的最大值,并且添加所识别的最大值与所有应用程序资源的总和之间的差值的一小部分。例如,在图2中,对于将要同时运行三个选定的应用程序,可以通过以下方式来确定针对内存的虚拟机需求210:识别三个应用程序所需的最大内存量(1GB),并且添加剩余应用程序的需求(400MB+200MB)的一小部分(在本实例中为一半),以达到虚拟机内存需求1.3GB(1GB+(0.5x(400MB+200MB))=1.3GB)。所述小部分可以至少部分地基于应用程序的实际计算资源使用的可变性来调整。
图3示出根据一个实施方案的作为被执行的结果而向用户分配一种类型的虚拟实例的过程的说明性实例。过程图300示出计算资源服务提供商可如何使用虚拟机需求302来识别用于配置虚拟机的适当虚拟机简档模板。在一些实施方式中,计算资源服务提供商使用多个预先限定的虚拟机简档模板向客户端提供虚拟机。虚拟机简档模板指定充当用于供应虚拟机的模板的计算资源的配置。通过提供多个预先限定的虚拟机配置,在一些实施方案中,计算资源服务提供商可以在任何客户端请求之前生成和维护虚拟机池。结果,当计算资源服务提供商接收到执行应用程序的请求时,可以从现有的虚拟机池中供应虚拟机,并且可以更快速地安装和启动应用程序。
在图3所示的实例中,通过识别满足或超过虚拟机需求302的虚拟机简档模板来选择虚拟机简档模板。计算资源服务提供商支持三个虚拟机简档模板。第一VM简档模板304是不合适的,因为处理能力、磁盘存储、图形内存和网络带宽的量小于虚拟机需求302中指定的最小量。第二VM简档模板306是合适的,因为简档中的每种类型的计算资源的量满足或超过虚拟机需求302中指定的最小量。第三VM简档模板308是不合适的,因为处理能力的量小于虚拟机需求302中指定的最小量。如果有一个以上的VM简档模板满足虚拟机需求302,则计算资源服务提供商使用多个标准从满意的VM简档模板中进行选择。在一些实例中,计算资源服务提供商至少部分地基于与根据每个VM简档模板操作虚拟机的成本基本上成比例的度量从一组满意的VM简档模板中选择具体的VM简档模板。将所述度量应用于在VM简档模板中指定的每种计算资源类型,并且分析每个VM简档模板以确定VM简档的总体度量。例如,以下度量可以应用于各种类型的计算资源:
CPU 50/Ghz
内存 0.2/Mb
磁盘存储 0.5/GB
图形内存 100/GB
网络带宽 0.1/MB
应用上述度量会产生图3中所示的VM简档模板的以下总体度量。
资源 比率 VM简档1 资源度量
CPU 50/Ghz 1Ghz 50
内存 0.2/Mb 1GB 200
磁盘存储 0.5/GB 2GB 1
图形内存 100/GB 1GB 100
网络带宽 0.1/MB 5MB/s 0.5
总度量=351.5
资源 比率 VM简档2 资源度量
CPU 50/Ghz 3Ghz 150
内存 0.2/Mb 2GB 400
磁盘存储 0.5/GB 6GB 3
图形内存 100/GB 2GB 200
网络带宽 0.1/MB 20MB/s 2
总度量=755
资源 比率 VM简档3 资源度量
CPU 50/Ghz 2Ghz 100
内存 0.2/Mb 1GB 200
磁盘存储 0.5/GB 10GB 5
图形内存 100/GB 4GB 400
网络带宽 0.1/MB 50MB/s 5
总度量=710
出于从多个满意的VM简档(满足或超过期望需求的VM简档)中选择具体VM简档的目的,针对每个VM简档确定的总度量允许将各个VM简档彼此进行比较。在以上所示的实例中,第一VM简档模板304是优选的,只要它满足最低需求即可。接下来优选第二VM简档模板306,随后是第三VM简档模板308。
在某些实施方式中,预先配置的虚拟机的可用性可以影响或推翻对具体VM简档模板的选择。当计算资源服务提供商从预先存在的虚拟机池中供应虚拟机时,可以使用具有具体VM简档模板的池中存在或不存在虚拟机来为新客户端请求选择具体VM简档模板。例如,如果多个VM简档模板满足或超过虚拟机需求302,但是多个VM简档模板中仅有一个在可用VM池中具有对应的虚拟机,那么计算资源服务提供商将从池中分配现有的虚拟机,而不是创建新的虚拟机。
在一些实施方案中,计算资源服务提供商至少部分地直接基于虚拟机需求302来生成虚拟机,并且不依赖一组有限的VM模板。可以创建与虚拟机需求302匹配的VM简档模板,或者可以从虚拟机需求302中直接生成虚拟机。一旦VM已经被计算资源服务提供商获取,则所述VM被分配给用户310。当与图2的过程结合时,向用户310提供适于托管用户所使用的具体应用程序的虚拟机。
图4示出根据一个实施方案的向客户端提供适于托管指定的一组应用程序的计算资源的客户端-服务器计算机系统的说明性实例。系统图400包括客户端计算机系统402,所述客户端计算机系统由用户404使用来访问由主机服务器406提供的计算资源。至少部分地基于所识别的一组由用户404使用的应用程序来确定一组虚拟机需求408。这组虚拟机需求408包括识别具体计算资源的各种量和特性的规格410。应用程序流传输客户端在客户端计算机系统402上运行。应用程序流传输客户端是与主机服务器406交互的应用程序,以便获取对主机服务器406托管的一个或多个虚拟机的访问形式的计算资源。应用程序流传输客户端412处理由用户404执行的输出界面数据,诸如,击键、鼠标移动、3-D鼠标移动和位置以及鼠标点击,并将界面数据传输到主机服务器406。在主机服务器406上运行的虚拟机执行由用户404请求的应用程序,并且由所述应用程序产生的显示信息被编码并流传输到应用程序流传输客户端412。应用程序流传输客户端412对接收到的流传输显示信息进行解码并向用户404呈现操作用户界面,所述操作用户界面允许用户与在虚拟机上运行的应用程序进行交互。
在一些实例中,主机服务器406至少部分地基于足以托管由用户使用的应用程序的单组组合的VM需求来向用户404提供单个虚拟机。用户404启动应用流传输客户端412。应用程序流送客户端412向用户404呈现允许用户请求执行应用程序的显示器。应用程序流传输客户端412将虚拟机需求408提供给在主机服务器406上运行的计算资源服务提供商。在一些实施方式中,计算资源服务提供商访问VM模板414的数据库。VM模板414的数据库保留计算资源服务提供商支持的多个VM简档模板。计算资源服务提供商将提供的虚拟机需求408与VM模板414的数据库上保留的VM简档模板进行比较,并且选择具体的VM简档以满足用户的请求。计算资源服务提供商根据所选择的VM简档来启动虚拟机实例416。在另一实施方式中,计算资源服务提供商直接从虚拟机需求408生成虚拟机实例416。
一个或多个应用程序通常由计算资源服务提供商从应用程序商店418安装到虚拟机实例416上。通过执行由应用程序的制造商提供的安装程序(installation program)或安装器(installer),或者通过将应用程序的预先安装的磁盘映像复制到虚拟机实例416上,可以将应用程序安装到虚拟机实例416上。在一些实施方式中,通过允许虚拟机实例416在虚拟机实例416之外执行应用程序的远程副本,将应用程序提供给虚拟机实例416。作为用户404请求执行具体应用程序的结果,可以根据需要安装应用程序。
虚拟机实例416上的流传输代理捕获由在虚拟机实例416上运行的应用程序生成的显示信息,将所述显示信息编码为显示流,所述显示流被传输到客户端计算机系统402上的应用程序流传输客户端412。应用程序流传输客户端412对显示信息进行解码并向用户404呈现允许用户与应用程序交互的用户界面。在一些实施方式中,计算资源服务提供商向用户404提供不止一个虚拟机实例。例如,在一些实施方案中,针对用户404可用的每个应用程序来创建虚拟机实例。在每个虚拟机上运行的流传输代理将显示流提供给应用流传输客户端412。应用程序流传输客户端412将显示流组合并向用户404呈现单个用户界面。
流传输代理能够基于可用网络带宽和性能来适配用于编码显示信息的编码算法。当额外的带宽可用时,流传输代理增加已编码显示信息的分辨率,从而导致已编码显示流的较高比特率。如果网络带宽变得受限,那么流传输代理可以通过降低已编码显示信息的分辨率或降低已编码显示信息的帧速率来降低已编码显示屏幕的速率。在一些实施方式中,流传输代理至少部分地基于其显示被编码的应用程序来适配编码算法。例如,文字处理应用程序可以用更高的分辨率和更低的帧速率来编码,而视频游戏可以用更低的分辨率和更高的帧速率来编码以保持平滑的运动。对编码算法的调整可以由流传输代理或由在客户端计算机系统上运行的流传输客户端来完成。对编码算法的调整可以包括对与视频显示信息相关联的音频编码的调整。例如,可以调整音频编码以在立体声音频与单声道音频之间选择,以及在语音质量、无线电质量与CD质量音频之间进行选择。音频编码可以是至少部分地基于客户端计算机系统402可用的音频回放设施。
图5示出根据一个实施方案的作为由客户端计算机系统执行的结果而从服务器供应计算资源并从在服务器上运行的应用程序接收显示流的过程的说明性实例。过程图500在框502处开始,其中用户在本地客户端计算机系统上安装应用程序流传输客户端。在一些实例中,应用程序流传输客户端是web浏览器或配置有提供应用程序流传输功能的插件的web浏览器。在另一实例中,应用程序流传输客户端是安装在客户端计算机系统上的独立应用程序。在框504处,用户登录到应用程序流传输客户端,所述应用程序流传输客户端利用充当计算资源服务提供商的服务来认证用户。将用户简档提供给识别用户使用的应用程序的应用程序流传输客户端。在一些实例中,用户简档包括描述所识别的应用程序的使用模式的信息,诸如识别同时使用的应用程序。在框506处,通过使用用户简档中含有的信息,客户端计算机系统确定适应用户简档中描述的应用程序使用的一组虚拟机需求。
在框508处,客户端计算机系统根据确定的虚拟机需求来启动虚拟机。在一些实例中,客户端计算机系统请求由计算资源服务提供商创建虚拟机。计算资源服务提供商可以创建与提供的虚拟机需求匹配的虚拟机。在其他实例中,计算资源服务提供商从满足或超过确定的虚拟机需求的多个机器简档中的一者创建虚拟机。在又一实例中,计算资源服务提供商从可供使用的先前创建的虚拟机池中选择虚拟机。在框510处,客户端计算机系统在所提供的虚拟机上安装应用程序。应用程序可以由客户端或计算资源服务提供商根据客户端的请求而安装在提供的虚拟机上。
在框512处,客户端计算机系统经由流传输代理来建立到所提供的虚拟机的筛选连接。流传输代理安装在提供的虚拟机上,并对来自安装的应用程序的显示信息进行编码,并且将得到的显示流传输到客户端计算机系统以显示给用户。在框514处,客户端计算机系统接收已编码显示信息,并将所述显示信息显示给用户。来自用户的诸如击键、鼠标移动、3-D鼠标移动和定向以及鼠标点击的用户输入由应用程序流传输客户端编码并被传输到流传输代理。除了视频显示信息之外,附加信号可以由流传输代理编码并流传输到应用程序流传输客户端。在一些实例中,由操作系统和应用程序产生的音频信息被编码并发送到应用程序流传输客户端。
图6示出根据一个实施方案的以多个虚拟机的形式向客户端提供计算资源的客户端-服务器计算机系统的说明性实例,并且每个虚拟机适于托管由客户端指定的具体应用程序。计算环境600包括由用户604操作的客户端计算机系统602。客户端计算机系统602与提供对多个虚拟机的访问的虚拟机主机服务器606通信。客户端计算机系统602包括应用程序流传输客户端608。应用程序流传输客户端608包括VM管理器610和应用程序流拼接器612。VM管理器610与虚拟机主机服务器606上的计算资源服务提供商连接。VM管理器610从用户604接收对计算资源的请求,并将这些请求转换成来自虚拟机主机服务器606的对虚拟机的请求。当用户604关闭应用程序时,VM管理器610通知虚拟机主机服务器606虚拟机不再使用。在一些实例中,虚拟机主机服务器606停止使用虚拟机并且释放分配给虚拟机的资源。在另一实例中,虚拟机主机服务器606将停用的虚拟机放入可供重新使用的虚拟机池中。在一些实施方案中,计算资源服务提供商在客户端计算机系统请求它们之前生成多个虚拟机,并将虚拟机放置在可用虚拟机池中。如果可用虚拟机池消耗超过预定量的资源,或者如果虚拟机主机服务器606在资源上不足以分配两个附加虚拟机,那么可以回收虚拟机池内的虚拟机,并且恢复对应的计算资源。
应用程序流拼接器612包括窗口管理器614和流组合器616。流组合器616从由虚拟机主机服务器606分配给用户604的虚拟机接收显示流。流组合器616对显示流中的信息进行解码,并生成可以由用户604查看和交互的单个显示屏幕。窗口管理器614协助用户604并管理组合的显示屏幕。窗口管理器614允许用户604选择用于查看的显示流、在单个屏幕上查看多个显示流、布置和定位用于显示显示流的用户界面窗口,以及最小化和最大化与显示流相关联的窗口。窗口管理器614可以向虚拟机上的流传输代理提供信息,所述信息允许流传输代理优化显示流中提供的信息。例如,窗口管理器614可以向流传输代理提供信号,所述信号指示对应的显示信息何时对用户604不可见(诸如,对应的窗口何时在另一窗口后面或被最小化)。在一些实施方式中,窗口管理器614可以指示对应显示信息的一部分何时不可见或被显示屏幕的另一元素隐藏。
虚拟机主机服务器606可以由被配置成提供多个虚拟机的单个物理服务器或一组服务器构成。虚拟机主机服务器606托管适于具体应用程序并运行它们适合的具体应用程序的虚拟机。虚拟机主机服务器606托管一组文字处理VM实例618、一组实体建模VM实例620、一组视频编辑VM实例622以及一组数据库VM实例624。应用程序由虚拟机主机服务器606从应用程序存储626安装到新创建的虚拟机上。这些应用程序可以以可执行安装程序的形式或者以映像文件的形式来维护,这些映像文件可以用于快速配置用于托管应用程序的虚拟机。客户端计算机系统602被提供有用于每个正在运行的应用程序的VM实例。例如,在图6中,客户端计算机系统602配备有文字处理VM实例、实体建模VM实例和视频编辑VM实例。从在这三个VM实例上运行的应用程序中生成的显示流被提供给应用程序流拼接器612,所述应用程序流拼接器将来自三个应用的显示信息组合为呈现给用户604的单个显示屏幕。
图7示出根据一个实施方案的从多个计算资源接收多个显示流并将显示流组合成客户端显示器上的统一屏幕的客户端-服务器计算机系统的说明性实例。计算环境700包括与由计算资源服务提供商提供的三个虚拟机通信的客户端计算机系统702。虚拟机包括文字处理VM实例704、实体建模VM实例706和视频编辑VM实例708。文字处理VM实例704托管文字处理应用程序710和流传输代理712,所述流传输代理对来自文字处理应用程序710的显示信息和其他输出进行编码并将流传输到客户端计算机系统702。实体建模VM实例706托管实体建模应用程序714和流传输代理716,所述流传输代理对显示信息进行编码并将其传输到客户端计算机系统702。视频编辑VM实例708托管视频编辑应用程序718和流传输代理720,所述流传输代理对来自视频编辑应用程序718的显示信息进行编码并将其流传输到客户端计算机系统702。
客户端计算机系统702运行应用程序流传输客户端722,其可以是独立的应用程序或者可以基于web浏览器。应用程序流传输客户端722包括虚拟机管理器724和应用程序流拼接器726。应用程序流拼接器726包括窗口管理器728和流组合器730。流组合器730从流传输代理712、716和720接收显示流,并对显示流进行解码以产生组合式用户界面。组合式用户界面包括显示文字处理显示窗口734、视频编辑显示窗口736和实体建模显示窗口738。组合式用户界面显示在连接到客户端计算机系统702的显示屏幕732上。窗口管理器728与流组合器730连接以识别由于与其他流组合或因客户端计算机系统702的用户的操纵而隐藏、最小化或遮盖的显示信息。窗口管理器728向流传输代理712、716和720提供描述对应显示信息的被遮盖区域的显示边界信息。使用这个信息,流传输代理能够避免对当前不可见的信息进行编码并将其传输给客户端计算机系统702。
在一些实例中,使用服务器侧应用程序流拼接器而将由流传输代理生成的显示信息合并在计算资源服务提供商上。服务器侧应用程序流拼接器合并显示信息并将合并后的显示信息传输到客户端计算机系统702上的应用程序流传输客户端722。服务器侧应用程序流拼接器将视口信息发送到流传输代理,所述视口信息识别作为合并过程的结果而被遮盖或隐藏的显示信息区域。流传输代理使用视口信息来避免针对不可见的显示区域对显示数据进行编码,并且也避免为不可见的显示区域提供显示信息。
图8示出根据一个实施方案的作为由客户端计算机系统执行的结果而从服务器供应一组虚拟机并将来自虚拟机的显示信息流合并到统一显示屏幕中的过程的说明性实例。过程图800开始于在客户端计算机系统上安装应用程序流传输客户端。应用程序流传输客户端向客户端计算机系统的用户呈现允许用户选择一个或多个应用程序的菜单、图标或其他界面。在框804处,用户选择一个或多个应用程序,并且应用程序流传输客户端将选择传送给计算资源服务提供商。在框806处,由计算资源服务提供商为每个应用程序启动虚拟机,并且虚拟机被配置有适于托管由每个虚拟机托管的应用程序的计算资源。在框808处,计算资源服务提供商在其对应的虚拟机上安装应用程序,并且还安装流传输代理以向客户端计算机系统提供来自由虚拟机托管的应用程序的显示信息。
在框810处,客户端计算机系统建立到每个流传输代理的流传输连接。视口信息可以由客户端计算机系统提供,所述信息帮助流传输代理编码信息并将信息传输到客户端计算机系统。在框812处,客户端计算机系统经由流传输代理从每个应用程序接收更新的显示信息。在框814处,更新的显示信息由应用程序流传输代理内的流组合器组合成单个显示屏幕。在框816处,应用程序流传输客户端内的窗口管理器部件识别显示信息的作为将更新的显示信息组合成单个显示屏幕的结果而被保护、隐藏或最小化的区域。在框818处,所识别的区域被表征为一组显示视口信息,所述视口信息被提供给虚拟机上的流传输代理。流传输代理可以使用这个信息来避免对在显示屏幕上不可见的信息进行编码和传输。
图9示出根据一个实施方案的通过提供托管支持多个会话的单个应用程序的虚拟机来向多个客户端提供计算资源的客户机-服务器计算机系统的说明性实例。环境900包括由主机计算机系统上的计算资源服务提供商托管的文字处理VM实例902。文字处理VM实例902托管多个文字处理应用程序会话903、904和905。文字处理应用程序会话903、904和905在相同的VM实例902上执行。每个文字处理应用程序会话都具有相关联的流传输代理来提供与会话相关联的显示信息。在图9中,文字处理VM实例902托管第一流传输代理906、第二流传输代理908和第三流传输代理910。第一流传输代理906将显示流提供给由第一用户916操作的第一客户端计算机系统914托管的第一应用程序流传输客户端912。第二流传输代理908将显示流提供给由第二用户922操作的第二客户端计算机系统920托管的第二应用程序流传输客户端918。第三流传输代理910将显示流提供给由第三用户928操作的第三客户端计算机系统926托管的第三应用程序流传输客户端924。
当用户登录到客户端计算机系统并且经由应用程序流传输客户端来请求访问文字处理应用程序时,应用程序流传输客户端联系在文字处理VM实例902上创建文字处理应用程序会话的计算资源服务提供商。文字处理应用程序会话引起在文字处理VM实例902上将对应的流传输代理实例化。在应用程序流传输客户端与流传输代理之间创建流传输会话,并且文字处理应用程序针对与用户的文字处理请求对应的新会话来提供显示信息。通过使用单个应用程序实例,可以在文字处理会话上共享许多资源。例如,文字处理应用程序用户界面的元素可以被一个流传输代理编码,并被剩余的代理重新使用,由此消除对诸如菜单、带状条和图标的常见UI元素的重新编码。
另外,可以鉴于以下条款来描述本公开的实施方案:
1.一种计算机实施的方法,所述计算机实施的方法包括:
在被配置有可执行指令的一个或多个计算机系统的控制下,
识别与用户身份相关联的一组应用程序;
通过检索所述一组应用程序中的每个应用程序的资源简档来获取一组应用程序资源简档;
至少部分地基于所述一组应用程序资源简档来生成虚拟机简档;
创建具有满足所述虚拟机简档的计算资源的配置的虚拟机;
将所述一组应用程序安装在所述虚拟机上;
启动来自所述一组应用程序的至少一个应用程序;以及
致使所述虚拟机与客户端计算机系统之间建立流传输连接,所述流传输连接将已编码显示信息从所述虚拟机传输到所述客户端计算机系统。
2.如条款1所述的计算机实施的方法,所述计算机实施的方法还包括至少部分地基于所述虚拟机简档从一组虚拟机简档模板中选择简档模板,其中:
所述一组虚拟机简档模板与计算资源服务提供商可支持的虚拟机配置相关联;并且
所述虚拟机根据所述简档模板进行配置。
3.如条款1或2所述的计算机实施的方法,其中至少部分地通过以下方式来完成识别与所述用户身份相关联的所述一组应用程序:
从所述客户端计算机系统中检索应用程序使用信息;
识别已经在所述客户端计算机系统上使用所述用户身份运行的具体应用程序;并且
将所述具体应用程序添加到所述一组应用程序。
4.如条款1至3中任一项所述的计算机实施的方法,所述计算机实施的方法还包括:
识别可以同时运行的第二组应用程序;
针对所述第二组应用程序来生成组合的资源简档;以及
至少部分地基于所述组合的资源简档来更改所述虚拟机简档。
5.一种非暂时性计算机可读存储介质,所述非暂时性计算机可读存储介质上存储有可执行指令,作为由计算机系统的一个或多个处理器执行的结果,所述可执行指令致使所述计算机系统至少:
向计算资源服务提供商发送使用第一应用程序的请求,使用所述第一应用程序的所述请求致使所述计算资源服务提供商供应第一虚拟机,所述第一虚拟机至少部分地基于所述第一应用程序的计算资源需求进行配置;
使用应用程序流传输客户端接收来自所述第一虚拟机的第一已编码显示信息流;
向计算资源服务提供商发送使用第二应用程序的请求,使用所述第二应用程序的所述请求致使所述计算资源服务提供商供应第二虚拟机,所述第二虚拟机至少部分地基于所述第二应用程序的计算资源需求进行配置;
使用所述应用程序流传输客户端接收来自所述第二虚拟机的第二已编码显示信息流;
将所述第一已编码显示信息流和所述第二已编码显示信息流组合以产生用于所述第一应用程序和所述第二应用程序的组合式用户界面;以及
在连接到所述计算机系统的显示器上呈现所述组合式用户界面。
6.如条款5所述的非暂时性计算机可读存储介质,其中所述指令还包括作为由所述一个或多个处理器执行的结果而致使所述计算机系统进行以下操作的指令:
识别在所述用户界面上不可见的所述第一已编码显示信息流的至少一部分;以及
向所述计算资源服务提供商发送描述所述第一流的所述部分的视口信息。
7.如条款5或6所述的非暂时性计算机可读存储介质,其中所述指令还包括作为由所述一个或多个处理器执行的结果而致使所述计算机系统进行以下操作的指令:
确定到所述计算资源服务提供商的网络连接已丢失;并且
作为确定网络连接已丢失的结果,致使所述计算资源服务提供商取消分配所述虚拟机。
8.如条款5至7中任一项所述的非暂时性计算机可读存储介质,其中所述组合式用户界面包括显示来自所述第一虚拟机的已编码显示信息的第一窗口和显示来自所述第二虚拟机的已编码信息的第二窗口。
9.如条款5至8中任一项所述的非暂时性计算机可读存储介质,其中所述指令还包括作为由所述一个或多个处理器执行的结果而致使所述计算机系统进行以下操作的指令:
将来自连接到所述计算机系统的一个或多个装置的用户输入编码成输入流;以及
将所述输入流传输到所述计算资源服务提供商。
10.如条款9所述的非暂时性计算机可读存储介质,其中所述一个或多个装置包括键盘、鼠标、3-D鼠标、麦克风和相机中的一者或多者。
11.如条款5至10中任一项所述的非暂时性计算机可读存储介质,其中一个或多个服务包括Web浏览器,所述Web浏览器被配置有:虚拟机管理器,所述虚拟机管理器控制所述计算资源服务提供商对虚拟机的提供;以及应用程序流拼接器,所述应用程序流拼接器接收所述已编码显示信息流并将其集成到所述用户界面中。
12.如任何条款5至11中任一项所述的非暂时性计算机可读存储介质,其中:
所述第一已编码显示信息流包括由所述第一应用程序产生的音频信息;
所述第二已编码显示信息流包括由所述第二应用程序产生的音频信息;以及
所述用户界面包括来自所述第一应用程序和所述第二应用程序的音频信息。
13.一种系统,所述系统包括实施一个或多个服务的至少一个计算装置,其中所述一个或多个服务:
从客户端计算机系统接收提供应用程序的请求;
至少部分地基于与所述应用程序相关联的资源需求从一组虚拟机简档中选择虚拟机简档;
向所述虚拟机分配至少部分地基于所述虚拟机简档的配置;
在所述虚拟机上执行所述应用程序;以及
在所述虚拟机与所述客户端计算机系统之间建立连接,所述连接将与所述应用程序相关联的显示信息传输到所述客户端计算机系统。
14.如条款13所述的系统,其中:
所述显示信息以适于所述客户端计算机系统可用的网络带宽量的分辨率和帧速率来编码;以及
所述显示信息包括音频信息,所述音频信息以至少部分地基于与所述客户端计算机系统相关联的音频回放设施的特性来编码。
15.如条款13或14所述的系统,其中所述显示信息以适于所述应用程序的分辨率和帧速率来编码。
16.如条款13至15中任一项所述的系统,其中所述一个或多个服务通过至少部分从在主机计算机系统上运行的可用虚拟机池中选择虚拟机来分配所述虚拟机。
17.如条款13至16中任一项所述的系统,其中所述一个或多个服务进一步:
接收向所述客户端计算机系统提供附加应用程序的附加请求;
至少部分地基于与所述附加应用程序相关联的资源需求来确定附加虚拟机简档;
至少部分地基于所述附加虚拟机简档来分配附加虚拟机;
在所述附加虚拟机上执行所述附加应用程序;以及
在所述附加虚拟机与所述客户端计算机系统之间建立附加连接,所述附加连接将与所述附加应用程序相关联的显示信息传输到所述客户端计算机系统。
18.如条款13至17中任一项所述的系统,其中所述一个或多个服务进一步:
接收向附加客户端计算机系统提供所述应用程序的附加请求;
针对在所述虚拟机上运行的所述应用程序来生成附加应用程序会话;以及
在所述虚拟机上的附加应用程序会话与所述客户端计算机系统之间建立附加连接,所述附加连接将与所述附加应用程序会话相关联的显示信息传输到所述客户端计算机系统。
19.如条款18所述的系统,其中至少部分地从与所述应用程序会话相关联的显示信息提供与所述附加应用程序会话相关联的显示信息。
20.如条款13至19中任一项所述的系统,其中所述一个或多个服务进一步:
接收识别在所述客户端计算机系统上不可见的所述显示信息的一部分的视口信息;以及
从传输到所述客户端计算机系统的所述显示信息中排除所述显示信息的所述部分。
图10示出用于实施根据各种实施方案的方面的示例性环境1000的方面。应理解,尽管为了说明的目的使用基于web的环境,但是在适当的情况下可以使用不同的环境来实施各种实施方案。环境包括电子客户端装置1002,所述电子客户端装置可以包括可操作来通过适当网络1004发送和/或接收请求、消息或信息并且在一些实施方案中将信息传送回装置的用户的任何适当装置。此类客户端装置的实例包括个人计算机、手机、手持式消息传送装置、膝上型计算机、平板计算机、机顶盒、个人数据助理、嵌入式计算机系统、电子书阅读器以及类似者。网络可以包括任何适当网络,包括内联网、因特网、蜂窝网络、局域网、卫星网络或任何其他此类网络和/或上述网络的组合。用于这种系统的部件可以至少部分地取决于所选择的网络和/或环境的类型。用于通过这样的网络进行通信的协议和部件是公知的,并且将不在此详细讨论。经由网络的通信可以通过有线或无线连接以及其组合来实现。在此实例中,网络包括互联网,因为环境包括用于接收请求并且响应于所述请求而服务内容的网络服务器1006,但是对于其他网络来说,可以使用服务类似目的的替代装置,如本领域的普通技术人员将显而易见。
说明性环境包括至少一个应用程序服务器1008和数据存储区1010。应理解,可以存在可链接起来或以其他方式配置的若干应用程序服务器、层或其他元件以及进程或部件,它们可交互来执行诸如从适当数据存储区获得数据的任务。如本文所使用的服务器可以以各种方式来实现,诸如硬件装置或虚拟计算机系统。在一些情况下,服务器可以指代正在计算机系统上执行的编程模块。如本文中所使用,除非另有说明或从上下文中清楚,否则术语“数据存储区”是指能够存储、访问并检索数据的任何装置或装置的组合,所述装置或装置的组合可以包括在任何标准、分布式、虚拟或群集环境中的数据服务器、数据库、数据存储装置以及数据存储介质的任何组合和任何数量的所述数据服务器、数据库、数据存储装置以及数据存储介质。应用程序服务器可以包括任何适当的硬件、软件和固件,所述硬件、软件和固件用于根据需要与数据存储区集成以执行客户端装置的一个或多个应用程序的方面、处理应用程序的数据访问和业务逻辑中的一些或全部。应用程序服务器可以与数据存储区协作来提供访问控制服务,并且能够生成包括但不限于以下各项的内容:文本、图形、音频、视频和/或可用于提供给用户的其他内容,所述内容可由web服务器以超文本标记语言(“HTML”)、可扩展标记语言(“XML”)、JavaScript、层叠样式表(“CSS”)或另一适当的客户端侧结构化语言的形式服务于用户。传送到客户端装置的内容可以由客户端装置处理,以便提供呈一种或多种形式的内容,所述形式包括但不限于用户可通过听觉、视觉和/或通过其他感觉(包括触觉、味觉和/或嗅觉)来感知的形式。所有请求和响应的处理以及客户端装置1002与应用程序服务器1008之间的内容递送可以由web服务器使用以下PHP来处理:在这个实例中为超文本预处理器(“PHP”)、Python、Ruby、Perl、Java、HTML、XML或另一适当的服务器侧结构化语言。应理解,web和应用服务器不是必要的,并且仅仅是示例性部件,因为本文中讨论的结构化代码可以在任何适当的装置或主机上执行,如本文其他地方所讨论。此外,除非另外从上下文中清楚,否则在本文中被描述为由单个装置执行的操作可以由可能形成分布式和/或虚拟系统的多个装置共同地执行。
数据存储区1010可以包括若干单独的数据表、数据库、数据文档、动态数据存储方案和/或用于存储与本公开的具体方面相关的数据的其他数据存储机制和介质。例如,所示数据存储区可以包括用于存储生产数据1012和用户信息1016的机构,所述生产数据和用户信息可以用于服务生产侧的内容。所示数据存储区还包括用于存储日志数据1014的机构,所述机构可以用于报告、分析或其他此类目的。应理解,可能存在可需要存储在数据存储区中的许多其他方面,诸如页面图像信息和访问权信息,所述方面可以视情况存储在上文列出的机构中的任何机构中或存储在数据存储区1010中的另外机构中。数据存储区1010可以通过与其相关联的逻辑来操作,以便从应用程序服务器1008接收指令,并且响应于所述指令获得数据、更新数据或以其他方式处理数据。应用程序服务器1008可以响应于所接收指令而提供静态、动态数据或静态和动态数据的组合。诸如在web日志(博客)、购物应用程序、新闻服务以及其他此类应用程序中使用的数据的动态数据可以由如本文所描述的服务器侧结构化语言生成或者可以由在应用程序服务器上操作或在其控制下的内容管理系统(“CMS”)提供。在一个实例中,通过由用户操作的装置,用户可以提交针对某一类型的项目的搜索请求。在这种情况下,数据存储区可能访问用户信息来验证用户的身份,并且可以访问目录详细信息以获得有关所述类型的项目的信息。接着可以将信息以诸如网页上的结果列表的形式返回给用户,用户能够通过客户端装置1002上的浏览器来查看所述网页。可以在专用浏览器页面或窗口中查看感兴趣的特定项目的信息。然而,应注意,本公开的实施方案不一定限于网页的上下文,而是可以更普遍地适用于处理一般的请求,其中请求不一定是对内容的请求。
每个服务器通常将包括提供用于服务器的一般管理和操作的可执行程序指令的操作系统,并且通常将包括存储指令的计算机可读存储介质(例如,硬盘、随机存取存储器、只读存储器等),所述指令在由服务器的处理器执行时允许服务器执行其预期的功能。服务器的操作系统和一般功能的合适实施方式是已知或可商购的,并且易于由本领域的普通技术人员实施,尤其是鉴于本文中的公开内容来实施。
在一个实施方案中,环境是利用若干计算机系统和部件的分布式和/或虚拟机,所述计算机系统和部件使用一个或多个计算机网络或直接连接经由通信链路进行互连。然而,本领域普通技术人员应理解,此类系统可以在具有比图10所示的部件更少或更多数量的部件的系统中同样顺利地操作。因此,图10中的系统1000的描绘本质上应视为说明性的,并且不限于本公开的范围。
各种实施方案还可以在各种各样的操作环境中实施,所述操作环境在一些情况下可以包括可用于操作多个应用程序中的任一者的一个或多个用户计算机、计算装置或处理装置。用户或客户端装置可以包括多个通用个人计算机中的任一者,诸如运行标准操作系统的台式计算机、膝上型计算机或平板计算机,以及运行移动软件并且能够支持多个网络和消息传递协议的蜂窝式、无线和手持装置。这样的系统还可以包括多个工作站,所述工作站运行多种可商购的操作系统和其他已知应用程序中的任一者,以用于诸如开发和数据库管理的目的。这些装置还可以包括其他电子装置,诸如虚拟终端、瘦客户端、游戏系统以及能够经由网络进行通信的其他装置。这些装置还可以包括虚拟装置,诸如虚拟机、管理程序和能够经由网络进行通信的其他虚拟装置。
本公开的各种实施方案利用本领域技术人员可能熟悉的至少一种网络来支持使用多种可商购的协议中的任一种的通信,所述协议诸如传输控制协议/互联网协议(“TCP/IP”)、用户数据报协议(“UDP”)、在开放系统互连(“OSI”)模型的各个层中操作的协议、文件传送协议(“FTP”)、通用即插即用(“UpnP”)、网络文件系统(“NFS”)、公共互联网文件系统(“CIFS”)以及AppleTalk。网络可以是例如局域网、广域网、虚拟专用网、互联网、内联网、外联网、公用交换电话网、红外网络、无线网、卫星网络以及上述网络的任何组合。在一些实施方案中,面向连接的协议可以用于在网络端点之间进行通信。面向连接的协议(有时被称为基于连接的协议)能够以有序流的形式传输数据。面向连接的协议可以是可靠或不可靠的。例如,TCP协议是一种可靠的面向连接的协议。异步传输模式(“ATM”)和帧中继是不可靠的面向连接的协议。面向连接的协议与面向包的协议(诸如UDP)形成对比,所述面向包的协议在没有保证排序的情况下传输包。
在利用web服务器的实施方案中,web服务器可以运行各种服务器或中间层应用程序中的任一者,包括超文本传输协议(“HTTP”)服务器、FTP服务器、通用网关接口(“CGI”)服务器、数据服务器、Java服务器、Apache服务器以及业务应用程序服务器。服务器还可以能够响应于来自用户装置的请求而执行程序或脚本,诸如,通过执行可以实施为用任何编程语言(诸如,
Figure GDA0003397605140000191
C、C#或C++)或任何脚本语言(诸如,Ruby、PHP、Perl、Python或TCL)以及其组合编写的一个或多个脚本或程序的一个或多个web应用程序。服务器还可以包括数据库服务器,包括但不限于可商购自
Figure GDA0003397605140000192
以及
Figure GDA0003397605140000193
的那些服务器以及开源服务器,诸如MySQL、Postgres、SQLite、MongoDB,以及能够存储、检索和访问结构化或非结构化数据的任何其他服务器。数据库服务器可以包括基于表的服务器、基于文档的服务器、非结构化服务器、关系服务器、非关系服务器或这些和/或其他数据库服务器的组合。
环境可以包括各种数据存储区以及其他内存和存储介质,如上文所论述。这些可以驻留在各种位置,诸如,在计算机中的一者或多者的本地(或驻留在所述计算机中)或者远离跨网络的计算机中的任何或全部的存储介质上。在一组特定的实施方案中,信息可以驻留在本领域技术人员熟悉的存储区域网络(“SAN”)中。类似地,用于执行归因于计算机、服务器或其他网络装置的功能的任何必要文件可以在适当的情况下本地和/或远程存储。在系统包括计算机化装置的情况下,每一个这种装置可以包括可经由总线电耦合的硬件元件,所述元件包括例如至少一个中央处理单元(“CPU”或“处理器”)、至少一个输入装置(例如,鼠标、3-D鼠标、键盘、控制器、触摸屏或小键盘)以及至少一个输出装置(例如,显示装置、打印机或扬声器)。此类系统还可以包括一个或多个存储装置,诸如磁盘驱动器、光存储装置和固态存储装置,诸如随机存取存储器(“RAM”)或只读存储器(“ROM”),以及可移动媒体设备、存储卡、闪存卡等。
此类装置还可以包括计算机可读存储介质读取器、通信装置(例如,调制解调器、网卡(无线或有线的)、红外通信装置等)以及如上文所描述的工作内存。计算机可读存储介质读取器可以与计算机可读存储介质连接或被配置成接收计算机可读存储介质,所述计算机可读存储介质表示远程、本地、固定和/或可移除的存储装置,以及用于临时和/或更永久地含有、存储、传输和检索计算器可读信息的存储介质。系统和各种装置通常还将包括位于至少一个工作内存装置内的多个软件应用程序、模块、服务或其他元件,包括操作系统和应用程序,诸如客户端应用程序或web浏览器。应理解,替代实施方案可以具有与上述实施方案不同的变化。例如,还可以使用自定义硬件和/或特定元件可以在硬件、软件(包括便携式软件,例如小应用程序)或这两者中实现。此外,可以采用到诸如网络输入/输出装置的其他计算装置的连接。
用于含有代码或代码部分的存储介质和计算机可读介质可以包括本领域中已知或使用的任何适当的介质,包括存储介质和通信介质,诸如但不限于,用于存储和/或传输信息(诸如,计算机可读指令、数据结构、程序模块或其他数据)的任何方法或技术中实施的易失性和非易失性、可移动和不可移动介质,包括RAM、ROM、电可擦除可编程只读存储器(“EEPROM”)、闪存或其他存储技术、光盘只读存储器(“CD-ROM”)、数字通用光盘(DVD)或其他光学存储设备、磁带盒、磁带、磁盘存储设备或其他磁存储装置,或者可以用于存储所需信息且可由系统装置访问的任何其他介质。基于本文中提供的公开和教导,本领域普通技术人员将理解用于实施各种实施方案的其他方式和/或方法。
在前面和后面的描述中,描述了各种技术。出于解释的目的,将阐述特定的配置和细节,以便提供对实施所述技术的可能方式的透彻理解。然而,还显而易见的是,本文件中描述的技术可以在不具有特定细节的情况下以不同配置来实践。此外,可以省略或简化众所周知的特征,以避免模糊所描述的技术。
因此,应以说明性意义而不是限制性意义来理解本说明书和附图。然而,显而易见的是,在不脱离如权利要求所述的本发明的更广泛精神和范围的情况下,可以进行各种修改和改变。
其他变化在本公开的精神内。因此,虽然所公开的技术易受各种修改和替代构造,但是在附图中示出了其某些示出的实施方案,并且在上文已经详细描述。然而,应理解,并不意图将本发明限于所公开的一种或多种特定形式,相反,本发明旨在覆盖落入本发明的精神和范围内的所有修改、替代构造和等效物,如所附权利要求中所限定。
除非本文另有说明或明确地与上下文矛盾,否则在描述所公开的实施方案的上下文中(特别是在所附权利要求书的上下文中)对术语“一个”和“一种”和“所述”以及类似指称对象的使用应被解释为涵盖单数和复数两者。除非另有说明,否则术语“包括”、“具有”、“包括”和“含有”将被解释为开放式术语(即,意味着“包括但不限于”)。在未经修改且涉及物理连接的情况下,术语“连接”应被解释为部分或全部包含在内、附接到或接合在一起,即使存在某些介入。除非本文另有说明,否则本文中值的范围的列举仅意图用作单独提及落在该范围内的每个单独值的速记方法,并且每个单独的值并入本说明书中,如同在本文中单独列举一样。除非另有说明或与上下文矛盾,否则术语“集合”(例如,“一组项目”)或“子集”的使用应被解释为包括一个或多个成员的非空集合。此外,除非另有指出或与上下文矛盾,否则术语对应集合的“子集”未必表示对应集合的真子集,而是子集和对应集合可以相等。
除非另有具体陈述或另外明确地与上下文矛盾,否则连接语言诸如形式短语“A、B和C中的至少一个”或“A、B和C中的至少一个”可以在一般使用的上下文中被理解为表示某一项目、项等可以是A或B或C,或者A和B与C的集合的任何非空子集。例如,在具有三个成员的集合的说明性实例中,连接短语“A、B和C中的至少一个”和“A、B和C中的至少一个”是指以下集合中的任一者:{A}、{B}、{C}、{A,B}、{A,C}、{B,C}、{A,B,C}。因此,此类连接语言通常并不意图暗示某些实施方案需要A中的至少一个、B中的至少一个和C中的至少一个各自存在。
除非本文另有说明或另外明确地与上下文矛盾,否则本文所述的过程的操作可以以任何合适的顺序执行。本文中描述的过程(或其变化和/或其组合)可以在配置有可执行指令的一个或多个计算机系统的控制下执行,并且可以被硬件或其组合实施为在一个或多个处理器上共同地执行的代码(例如,可执行指令、一个或多个计算机程序或者一个或多个应用程序)。代码可以存储在计算机可读存储介质上,例如以包括可由一个或多个处理器执行的多个指令的计算机程序的形式存储。计算机可读储存介质可以是非暂时性的。此外,在一些实例中,计算机系统被配置成实施共同地执行本文中描述的过程的操作的一个或多个服务。此类计算机系统可以例如被配置有能够执行操作的适用硬件和/或软件。此外,实施本公开的各种实施方案的计算机系统在一些实例中可以是单个装置,并且在其他实例中,是包括不同地操作的多个装置的分布式计算机系统,使得分布式计算机系统执行本文中描述的操作。
除非另有说明,否则对本文所提供的任何和所有实例或示例性语言(例如,“诸如”)的使用仅意图更好地说明本发明的实施方案,而非对对本发明的范围构成限制。本说明书中的语言不应被解释为表示任何未要求保护的元素是实践本发明所必需的。
本公开的实施方案在本文中描述,包括发明人已知的用于实施本发明的最佳模式。在阅读前面的描述之后,这些实施方案的变化对于本领域的普通技术人员可变得显而易见。本发明人期望本领域技术人员适当地使用此类变化,并且发明人意图以与本文中的具体描述不同的方式实践本公开的实施方案。因此,本公开的范围包括如适用法律所允许的对所附权利要求中叙述的主题的所有修改和等效物。此外,除非本文中另有说明或另外明确地与上下文矛盾,否则本公开的范围涵盖其全部可能变化中的上述元素的任何组合。
本文中引用的所有参考文献(包括公开案、专利申请和专利)在此通过引用并入本文中,到了如同每个参考文献被单独且具体地指示为通过引用并入并且以其全文在本文中阐述一样的程度。

Claims (5)

1.一种非暂时性计算机可读存储介质,所述非暂时性计算机可读存储介质上存储有可执行指令,作为由计算机系统的一个或多个处理器执行的结果,所述可执行指令致使所述计算机系统至少:
向计算资源服务提供商发送使用第一应用程序的请求,使用所述第一应用程序的所述请求致使所述计算资源服务提供商供应第一虚拟机,所述第一虚拟机至少部分地基于所述第一应用程序的计算资源需求进行配置;
使用应用程序流传输客户端接收来自所述第一虚拟机的第一已编码显示信息流;
向计算资源服务提供商发送使用第二应用程序的请求,使用所述第二应用程序的所述请求致使所述计算资源服务提供商供应第二虚拟机,所述第二虚拟机至少部分地基于所述第二应用程序的计算资源需求进行配置;
使用所述应用程序流传输客户端接收来自所述第二虚拟机的第二已编码显示信息流;
将所述第一已编码显示信息流和所述第二已编码显示信息流组合以产生用于所述第一应用程序和所述第二应用程序的组合式用户界面;以及
在连接到所述计算机系统的显示器上呈现所述组合式用户界面。
2.如权利要求1所述的非暂时性计算机可读存储介质,其中所述指令还包括作为由所述一个或多个处理器执行的结果而致使所述计算机系统进行以下操作的指令:
识别在所述用户界面上不可见的所述第一已编码显示信息流的至少一部分;以及
向所述计算资源服务提供商发送描述所述第一已编码显示信息流的所述部分的视口信息。
3.如权利要求1所述的非暂时性计算机可读存储介质,其中所述指令还包括作为由所述一个或多个处理器执行的结果而致使所述计算机系统进行以下操作的指令:
确定到所述计算资源服务提供商的网络连接已丢失;并且
作为确定网络连接已丢失的结果,致使所述计算资源服务提供商取消分配所述虚拟机。
4.如权利要求1所述的非暂时性计算机可读存储介质,其中所述指令还包括作为由所述一个或多个处理器执行的结果而致使所述计算机系统进行以下操作的指令:
将来自连接到所述计算机系统的一个或多个装置的用户输入编码成输入流;以及
将所述输入流传输到所述计算资源服务提供商。
5.如权利要求1所述的非暂时性计算机可读存储介质,其中一个或多个服务包括Web浏览器,所述Web浏览器配置有:虚拟机管理器,所述虚拟机管理器控制所述计算资源服务提供商对虚拟机的供应;以及应用程序流拼接器,所述应用程序流拼接器接收所述已编码显示信息流并将其集成到所述用户界面中。
CN201680076813.6A 2015-12-28 2016-12-21 向适于托管与用户相关联的一组应用程序的虚拟机供应计算资源 Active CN108701034B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111226550.1A CN114116088A (zh) 2015-12-28 2016-12-21 向适于托管与用户相关联的一组应用程序的虚拟机供应计算资源

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/981,774 US10083054B2 (en) 2015-12-28 2015-12-28 Application-based computing resource management
US14/981,774 2015-12-28
PCT/US2016/068095 WO2017116914A2 (en) 2015-12-28 2016-12-21 Computing resource management

Related Child Applications (1)

Application Number Title Priority Date Filing Date
CN202111226550.1A Division CN114116088A (zh) 2015-12-28 2016-12-21 向适于托管与用户相关联的一组应用程序的虚拟机供应计算资源

Publications (2)

Publication Number Publication Date
CN108701034A CN108701034A (zh) 2018-10-23
CN108701034B true CN108701034B (zh) 2022-04-12

Family

ID=57868344

Family Applications (2)

Application Number Title Priority Date Filing Date
CN201680076813.6A Active CN108701034B (zh) 2015-12-28 2016-12-21 向适于托管与用户相关联的一组应用程序的虚拟机供应计算资源
CN202111226550.1A Pending CN114116088A (zh) 2015-12-28 2016-12-21 向适于托管与用户相关联的一组应用程序的虚拟机供应计算资源

Family Applications After (1)

Application Number Title Priority Date Filing Date
CN202111226550.1A Pending CN114116088A (zh) 2015-12-28 2016-12-21 向适于托管与用户相关联的一组应用程序的虚拟机供应计算资源

Country Status (4)

Country Link
US (2) US10083054B2 (zh)
CN (2) CN108701034B (zh)
DE (1) DE112016006083T5 (zh)
WO (1) WO2017116914A2 (zh)

Families Citing this family (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9110699B2 (en) * 2013-09-19 2015-08-18 International Business Machines Corporation Determining optimal methods for creating virtual machines
WO2016043530A1 (en) * 2014-09-18 2016-03-24 Samsung Electronics Co., Ltd. System and method for providing service via application
US11075976B2 (en) 2014-12-24 2021-07-27 Vmware, Inc. Remoting application user interfaces
US10693923B2 (en) 2015-01-28 2020-06-23 Vmware, Inc. Establishing streaming sessions during remote sessions
US10547711B2 (en) 2015-03-25 2020-01-28 Vmware, Inc. Using off-screen user interface data during remote sessions
US10970101B2 (en) 2016-06-03 2021-04-06 Vmware, Inc. System and method for dynamically configuring virtual displays and virtual inputs for different remote sessions that each present content for a virtual machine
US10469562B2 (en) * 2016-06-24 2019-11-05 Vmware, Inc. Virtual machine pixel remoting
US10942760B2 (en) 2017-02-03 2021-03-09 Microsoft Technology Licensing, Llc Predictive rightsizing for virtual machines in cloud computing systems
US10423455B2 (en) * 2017-02-03 2019-09-24 Microsoft Technology Licensing, Llc Method for deploying virtual machines in cloud computing systems based on predicted lifetime
US10296367B2 (en) 2017-02-03 2019-05-21 Microsoft Technology Licensing, Llc Resource management for virtual machines in cloud computing systems
US10176550B1 (en) * 2017-03-20 2019-01-08 Nutanix, Inc. GPU resource usage display and dynamic GPU resource allocation in a networked virtualization system
US10838776B2 (en) * 2017-07-20 2020-11-17 Vmware, Inc. Provisioning a host of a workload domain of a pre-configured hyper-converged computing device
US11520609B2 (en) * 2017-09-15 2022-12-06 International Business Machines Corporation Template-based software discovery and management in virtual desktop infrastructure (VDI) environments
US11048538B2 (en) * 2018-02-26 2021-06-29 Amazon Technologies, Inc. Autonomous cell-based control plane for scalable virtualized computing
US11847479B2 (en) 2018-03-23 2023-12-19 Vmware, Inc. Allocating a host of a pre-configured hyper-converged computing device to a workload domain
FR3086425B1 (fr) 2018-09-20 2021-03-05 Blade Procede d'execution d'un programme d'application dans un systeme informatique
US10936443B2 (en) 2018-09-26 2021-03-02 EMC IP Holding Company LLC System and method for tag based backup infrastructure
US10922122B2 (en) * 2018-09-26 2021-02-16 EMC IP Holding Company LLC System and method for virtual machine resource tagging
US10831543B2 (en) * 2018-11-16 2020-11-10 International Business Machines Corporation Contention-aware resource provisioning in heterogeneous processors
WO2020106907A1 (en) * 2018-11-21 2020-05-28 Amazon Technologies, Inc. Method and system for robotics application development
CN111314799A (zh) * 2018-12-11 2020-06-19 中兴通讯股份有限公司 终端系统构架、通信系统及通信方法、存储介质
US11003431B2 (en) * 2019-03-18 2021-05-11 Vmware, Inc. Generating predictive metrics for virtualized deployments
US11625488B2 (en) * 2019-04-05 2023-04-11 Tausight, Inc. Continuous risk assessment for electronic protected health information
EP4239952A1 (en) * 2019-06-24 2023-09-06 Amazon Technologies Inc. Serverless packet processing service with isolated virtual network integration
JP7084894B2 (ja) * 2019-06-26 2022-06-15 株式会社日立製作所 リソース管理システム、リソース割当方法
US11343354B2 (en) * 2019-10-23 2022-05-24 Nvidia Corporation Increasing user engagement during computing resource allocation queues for cloud services
CN111400033B (zh) * 2020-03-03 2024-04-19 京东科技控股股份有限公司 平台资源成本分摊方法、装置、存储介质及计算机设备
CN112083996A (zh) * 2020-09-16 2020-12-15 努比亚技术有限公司 屏幕控制方法、移动终端及计算机可读存储介质
US11574639B2 (en) * 2020-12-18 2023-02-07 Microsoft Technology Licensing, Llc Hypothesis stitcher for speech recognition of long-form audio

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101877043A (zh) * 2009-11-30 2010-11-03 英业达股份有限公司 虚拟机的应用程序的管理系统与其方法
US20130232497A1 (en) * 2012-03-02 2013-09-05 Vmware, Inc. Execution of a distributed deployment plan for a multi-tier application in a cloud infrastructure
CN103493016A (zh) * 2011-04-21 2014-01-01 惠普发展公司,有限责任合伙企业 将应用程序安装到虚拟化环境中

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8112513B2 (en) * 2005-11-30 2012-02-07 Microsoft Corporation Multi-user display proxy server
US20070174429A1 (en) * 2006-01-24 2007-07-26 Citrix Systems, Inc. Methods and servers for establishing a connection between a client system and a virtual machine hosting a requested computing environment
US7971182B1 (en) * 2006-05-09 2011-06-28 Vmware, Inc. Application environment specifications for provisioning application specific runtime environments using undefined symbols
US8224885B1 (en) * 2009-01-26 2012-07-17 Teradici Corporation Method and system for remote computing session management
US9043454B2 (en) * 2009-08-26 2015-05-26 Red Hat Israel, Ltd. Auto suspense of virtual machine on client disconnection
US8490087B2 (en) 2009-12-02 2013-07-16 International Business Machines Corporation System and method for transforming legacy desktop environments to a virtualized desktop model
US8849941B2 (en) 2010-09-30 2014-09-30 Microsoft Corporation Virtual desktop configuration and operation techniques
US8793377B2 (en) 2011-05-03 2014-07-29 International Business Machines Corporation Identifying optimal virtual machine images in a networked computing environment
US10313345B2 (en) 2013-03-11 2019-06-04 Amazon Technologies, Inc. Application marketplace for virtual desktops
US10623243B2 (en) 2013-06-26 2020-04-14 Amazon Technologies, Inc. Management of computing sessions

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101877043A (zh) * 2009-11-30 2010-11-03 英业达股份有限公司 虚拟机的应用程序的管理系统与其方法
CN103493016A (zh) * 2011-04-21 2014-01-01 惠普发展公司,有限责任合伙企业 将应用程序安装到虚拟化环境中
US20130232497A1 (en) * 2012-03-02 2013-09-05 Vmware, Inc. Execution of a distributed deployment plan for a multi-tier application in a cloud infrastructure

Also Published As

Publication number Publication date
WO2017116914A2 (en) 2017-07-06
US20190026145A1 (en) 2019-01-24
US11340927B2 (en) 2022-05-24
WO2017116914A3 (en) 2017-08-10
DE112016006083T5 (de) 2018-09-06
CN108701034A (zh) 2018-10-23
CN114116088A (zh) 2022-03-01
US10083054B2 (en) 2018-09-25
US20170185438A1 (en) 2017-06-29

Similar Documents

Publication Publication Date Title
CN108701034B (zh) 向适于托管与用户相关联的一组应用程序的虚拟机供应计算资源
CN109804352B (zh) 受管理的容器实例
US10454938B2 (en) Dynamic permission roles for cloud based applications
CA2936074C (en) On-premises agent for mobile cloud service
US8676984B2 (en) Live directory of cloud tenants to enable inter-tenant interaction via cloud
US11418603B2 (en) Dynamic backoff and retry attempts based on incoming request
US10705690B1 (en) Sending virtual desktop information to multiple devices
US9720800B2 (en) Auto-generating representational state transfer (REST) services for quality assurance
US9996381B1 (en) Live application management workflow using metadata capture
KR20110063617A (ko) 다양한 타입의 컴퓨팅 장치들을 통하여 다수의 정보 형태들과 상호작용하기 위한 장치 및 방법들
CN111602118B (zh) 实现虚拟机的音频,视频和控制系统
AU2015321610B2 (en) Computing environment selection techniques
US9535723B2 (en) Methods and apparatuses for generating desktop cloud instances based upon mobile device user file selections
KR20120096741A (ko) 가상단말 클라우드 네트워크 시스템 및 이기종 단말 플랫폼 어플리케이션 제공방법
KR102102169B1 (ko) 가상 데스크탑 서비스를 위한 장치 및 가상 데스크탑 서비스 방법
US20200066304A1 (en) Device-specific video customization
US20130282560A1 (en) Application accessibility system and method
US20200073628A1 (en) Content collaboration
US10411960B1 (en) Detaching instances from auto-scaling group
US10812565B2 (en) Systems and methods to configure metadata
US11770423B2 (en) Remote access for resource links shared during web conference session
US20220147506A1 (en) Dynamic namespace modification for virtual agents
von Oven et al. Getting Started with VMware Horizon
Haines et al. Kismet hacking

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