计算机系统当前被广泛使用。一些计算机系统是本地计算机系统,而其他系统在远程服务器环境中使用。
公司或另一个组织在计算机系统的本地(内部)实现与计算机系统的远程服务器实现(例如基于云的实现)之间进行切换不是不常见的。作为示例,公司有时候在它们的电子邮件系统、它们的文档管理系统、或者它们的商业系统的本地实现与远程服务器实现之间进行切换。商业系统的一些示例包括:企业资源规划(ERP)系统、客户关系管理(CRM)系统、经营范围(LOB)系统等。这些仅仅是其中公司在本地的、内部的实现与远程服务器或基于云的实现之间进行切换的计算机系统的类型的一些示例。
类似地,一些组织具有混合的实现。服务中的一些服务是由计算机系统的本地的、内部的组件执行的,而其他服务是在远程服务器或基于云的环境中执行的。在混合的系统中,组织将某些服务从内部实现迁移至基于云的实现不是不常见的。
具有远程服务器或基于云的实现的一些公司是相对大型的。企业组织例如可以具有数千雇员。因此,它们的计算机系统的远程服务器或基于云的实现必须服务大量个体。对计算机系统进行的许多业务或改变涉及对大量用户账户或大量用户数据进行改变。
作为示例,当企业组织想要将一些计算系统功能从内部实现迁移至基于云的实现时,这可能涉及对企业的计算机系统的许多不同的更新。作为示例,如果企业正在迁移其电子邮件系统,则这可能涉及大量雇员账户的创建。账户创建通常以序列化的方式完成,这可能花费大量时间。另外,在进行一些改变的情况下,那些改变会消耗远程服务器或基于云的实现的大量处理和存储器开销,以及带宽。
许多基于云的或远程的服务器实现还是多租户系统。即,它们为多个不同的租户提供一定等级的服务,所述多个租户通常是多个不同的组织。当一个租户进行大量改变时,这可能负面地影响其他租户所体验的性能。
以上讨论仅仅是针对一般的背景信息而提供的,而不旨在用来帮助确定所要求保护的主题的范围。
技术实现要素:
在多租户服务处接收租户改变。将租户改变划分成多个部分。在多租户服务处、跨已经请求了改变的所有租户来处理租户改变的多个部分,以跨所有进行请求的租户而均匀地分配处理资源。
提供了该发明内容以用简化的形式引入在以下的具体实施方式中进一步描述的概念的选择。该发明内容不旨在标识所要求保护的主题的关键特征或必要特征,也不旨在用来帮助确定所要求保护的主题的范围。所要求保护的主题不限于解决了在
背景技术:
中所提出的任何或所有缺点的实现。
附图说明
图1是基于云的多租户服务架构的一个示例的框图。
图2是更加详细地示出了改变调度组件的一个示例的框图。
图3A和图3B(统称为图3)示出了在图1中所示出的架构的操作的一个示例的流程图。
图4是图示了多租户云架构的一个示例中的不同等级的多租户的框图。
图5-图7示出了移动设备的示例。
图8是计算环境的一个示例的框图。
具体实施方式
图1是基于云的多租户服务架构100的一个示例的框图。架构100包括能够由多个不同的租户系统104-106来访问的基于云的多租户服务系统102。如在下文中参考图4更加详细地描述的,基于云的多租户服务系统102向使用租户系统104-106的租户提供某等级的多租户服务。所述租户说明性地是分离的组织,以使得由系统102提供的多租户服务在期望的等级处是每租户分离或隔离的。另外,如以下参考图4更加详细地描述的,可以在基础设施等级、在应用平台等级、或者在应用软件等级等处提供多租户服务。因此,取决于由系统102所提供的多租户的特定等级,与特定的客户端(或租户)相对应的信息将在该等级处是分离的并且被隔离,从而其不能由其他客户端(或租户)来访问。
作为示例,如果系统102提供基础设施即服务,则系统102的基础设备组件由租户104-106共享,但是它们的信息以其他方式保持为分离的。如果系统102提供平台即服务,则平台组件由租户104-106共享。如果系统102提供应用软件即服务,则通用应用由系统102运行,以对租户104-106进行服务。在这些实现中的任何实现中,由于系统102提供某等级的多租户,因此与不同的租户104-106相对应的信息保持为分离的。这在下文中关于图4更加详细地进行了描述。
在图1中所示出的系统102的示例中,租户系统104-106访问对它们对应的租户数据108-110进行操作的应用。租户系统104-106可以提供改变请求112-114以改变它们对应的租户数据108-110。作为示例,租户104可以将多个用户从内部系统迁移至基于云的系统102。因此,改变请求112可以用于为租户系统104而添加内部系统102中的大量电子邮件账户。在另一个示例中,租户系统106可以已经获取了另一个组织,并且因此可能需要将大量电子邮件账户添加至系统102中的其基于云的实现。在另一个示例中,可以已经重新组织了使用租户系统104的组织。因此,可能需要改变大量雇员记录以示出他们不再是人力资源部的一部分,而现在是市场部的一部分。在这些示例或者宽泛的多种其他示例中的任何示例中,对租户的基于云的实现的改变在数量上可以是相对大的。然而,在一个示例中,系统102以将在服务其他租户时不影响系统102的性能的方式来处理这些改变。
以下关于图2和图3提供了对进行租户更新或改变时系统102的操作的更加详细的描述。现在将提供简要概述以加强理解。
系统102说明性地包括改变请求处理系统116、改变调度组件118、租户行为监视系统120、以及其他云实现组件122。其还可以包括公平策略119。改变调度组件118(其在图2中更加详细地示出)从租户系统104-106接收改变请求并且访问租户行为监视系统120,该租户行为监视系统120提供由改变调度组件118用来调度改变请求的信息。在一个示例中,改变调度组件118将从各个租户系统104-106接收到的改变请求划分成部分,并跨各个租户而分配改变请求处理系统116的资源,以使得可能提交相对大数量的改变请求的单个租户不会压制(overwhelm)这些资源而损害其他租户。
在对改变进行调度时,组件118访问由租户行为系统120所提供的信息。租户行为系统120本身说明性地包括租户类型识别器124、流入业务监视器126、流出业务监视器128、以及其他识别器组件130。租户类型识别器124可以识别进行请求的租户104的不同的特性。例如,其可以确定租户是对基于云的服务付费的租户还是具有试用账户的租户。其可以识别租户的大小(例如,座位和活跃用户的数量)并且其还可以通过监视流入和流出业务来考虑当前的业务等级或者改变请求处理系统116上的负载。其可以计算由各个租户104-106当前观察到的延迟(例如,通过测量改变请求与实际进行的改变之间的时间),其可以分析历史业务数据、以及宽泛的多种其他数据。在任何情况下,改变调度组件118说明性地控制提交至改变请求处理系统116的改变,以使得租户的任何集合的行为都不会压制系统或者以其他方式显著地降低其他租户所体验的性能。
图2是改变调度组件的一个示例的更加详细的框图。组件118说明性地包括改变切分(slice)组件132、下一改变识别器组件134、调度器通信组件136、以及未决改变储存138。组件118还可以包括其他项目140。组件118说明性地从各个租户系统104-106接收改变请求112-114。组件118还从租户行为监视系统120接收进行请求的租户行为特性142。改变切分组件132接着按租户来划分所请求的改变,并将它们作为租户改变144-146保存在未决改变储存138中。基于当前正请求的改变的数量(和其他信息),改变切分组件132可以针对租户中的每个租户将改变144-146切分成多个不同的部分148-150。每个部分都可具有相同数量的改变,并且该数量可以是预先定义的或动态地确定的。下一改变识别器组件134识别部分148-150中的哪个部分是应当被处理以便确保各个租户系统104-106看到可接受的性能的下一个部分。它将这向调度器通信组件136进行指示,调度器通信组件136接着向改变请求处理系统116发送接下来的改变152。通过将针对每个租户的改变请求分割成常见尺寸的部分,并且接着通过对待由改变请求处理系统116进行的改变的那些部分进行调度,改变调度组件118可以控制由租户系统104-106中的每个租户系统在进行他们所请求的改变时所观察到的性能等级(例如,延迟)。组件118可以根据预先定义的公平策略119或者以其他方式来完成该动作。因此,组件118可以确保没有单个租户或租户的分组压制改变请求处理系统116从而极大地损害其他租户。替代地,组件118可以根据可以由管理员或其他人员设置或者以其他方式确定的公平策略119来对改变进行调度。
图3A和图3B(统称为图3)示出了在进行租户改变时基于云的多租户服务系统102的改变调度组件118和其他组件的操作的一个示例。系统102首先接收针对租户的改变请求。这由图3中的框156指示。改变请求将说明性地包括识别正在进行改变的租户系统104-106的租户识别器,以及对对应的租户数据的一组所请求的改变。
一旦接收到改变请求,改变调度组件118中的改变切分组件132就访问租户行为监视系统120以获得进行请求的租户行为特性和其他数据142。这由框158指示。如在上文中简要地讨论的,那些特性可以包括租户类型160。租户类型可以指示租户是付费租户还是具有试用账户的租户。租户类型还可以指示已经由进行请求的租户购买的、或者被许可给进行请求的租户的服务的等级。另外,租户类型识别器124可以提供对被许可给进行请求的租户的座位的数量162以及进行请求的租户的活动用户的数量164的指示。其也可以包括识别特定的类型的租户的多种其他识别器。
流入业务监视器126和流出业务监视器128可以提供指示当前正请求改变的租户的数量的信息。这由框166指示。其可以识别流入和流出业务168的单位(例如,已经接收到的改变请求的数量、每个改变请求中的改变的数量等)、正被请求的改变的类型、以及分别由流入和流出业务监视器126和128所执行的其他分析结果。
其他行为监视组件130也可以提供其他项目。例如,它们可以监视或测量由租户104-106所进行的改变请求与其中由改变请求处理系统116实际所进行的写操作之间的延迟。延迟由图3中的框170来指示。其他组件130可以提供指示延迟如何随着时间改变的历史数据172。所述数据可以是滚动的平均数、或者其他历史数据172。另外,租户行为监视系统120可以提供可以由改变调度组件118用来调度待进行的改变的其他特性174。
基于由改变调度组件118所接收到的改变请求以及行为特性和其他数据142,改变切分组件132确定是否需要将当前接收到的改变请求切分成部分。这由图3中的框176来指示。这可以参考公平策略119来完成。公平策略119可以采用宽泛的多种不同的形式。例如,公平策略119可以被实施为标识在由数据142所指示的某些条件下改变请求将如何被切分和调度的一组规则。公平策略119可以是静态策略或者是随着可用资源的等级、随着被服务的租户的数量等而改变的动态策略。
例如,如果当前接收到的改变请求是针对对租户的电子邮件系统的大量增加的,则改变切分组件132可以确定,如果请求这些改变中的所有改变,则这将压制改变请求处理系统116的资源,以使得其他进行请求的租户将在延迟方面遭受性能降低。因此,改变切分组件132可以将刚接收到的改变请求切分成较小的部分148,以使得针对该进行请求的租户的改变仅仅每次一个部分地被提供给改变请求处理系统116,以与来自其他进行请求的租户的改变请求部分交织。以该方式,可以以交织的方式将来自其他进行请求的租户的改变的部分提供至处理系统116,以使得在进行所请求的改变时所有进行请求的租户都关于改变请求处理系统116的性能而受到公平的对待。在一些示例中,可以不以相同的速率(例如,每个租户一个部分)将不同租户的部分提供至处理系统116。替代地,可以针对某些类型的租户而优先地提供部分。例如,针对已经对服务付费的进行请求的租户、针对从具有试用账户的进行请求的租户提供的每一个部分,可以将两个部分提供至处理系统116。可以在公平策略196中或者在其他地方陈述这些类型的优先化的处理。类似地,改变切分组件132也可以改变每个进行请求的租户的部分的大小,以获得期望的公平。
如果改变切分组件132确定(基于当前所接收到的请求中的改变的数量或者基于其他特性和数据142)不需要将请求切分成部分,则将改变请求视为单个部分。这由框178来指示。
然而,如果需要将改变请求切分,则改变切分组件132将改变请求切分成部分并且以每个租户为基础将它们储存在未决改变储存138中。将改变请求切分成部分由图3中的框180来指示。
接着,下一改变识别器组件134确定待处理部分的顺序。即,下一改变识别器组件134对数据储存器138中的各个部分进行调度,以用于由改变请求处理系统116来处理。下一改变识别器组件134以这样的方式来进行操作:其以公平的方式跨所有进行请求的租户来分配改变请求处理系统116的处理资源。在一个示例中,其按顺序每租户调度一个部分,并且重复该调度过程直到针对所有进行请求的租户进行了改变的部分中的所有部分为止。在另一个示例中,如在上文中所提及的,其可以针对付费租户调度多个部分而针对具有试用账户的租户调度较少部分。当然,其也可以以其他方式在租户间进行区分。其说明性地根据可以由管理员或者以其他方式确定的公平策略119来对改变进行调度。对部分进行调度由图3中的框182来指示。
一旦调度了改变的部分,下一改变识别器组件134就选择待进行的改变的下一部分并将其识别至调度器通信组件136。调度器通信组件136向改变请求处理系统116发送该部分,或者将其识别至改变请求处理系统116,以使得系统116可以从未决改变储存138中拉取那些改变请求。在两种情况中的任一情况下,系统116进行与待针对其进行改变的下一部分相对应的改变。选择下一部分并且在所选择的部分中进行改变由图3中的框184和186来指示。
下一改变识别器组件134接着确定是否存在待处理的更多部分。这由框188来指示。如果存在,则改变切分组件132确定其他租户是否同时具有所请求的更多改变。这由框190来指示。如果没有,则处理便回到框184,其中,下一所调度的部分被识别并且被提供至改变请求处理系统116。
然而,如果在框190处确定一个或多个额外的租户已经请求了改变,则改变切分组件132再次接收与进行请求的租户相对应的特性142,并且确定新进行请求的租户的请求是否也需要被切分。这由框192来指示。如果不需要,则处理回到框182,其中,对新的改变请求进行调度。然而,如果新的改变请求中的改变需要被切分,则改变切分组件132将那些改变请求切分成部分并且将它们置于未决改变储存138中。这由图3中的框194来指示。同样,在框182处,新切分的改变请求与已经存在的改变请求一起被调度,并且处理继续直到在框188处确定不需要处理更多的改变请求为止。
因此,可以看到改变调度组件118和监视系统120确保大租户不会耗尽(starve)较小的租户的规定的资源。其调度板载(onboarding)活动和其他改变请求活动,以使得以公平的方式来分配由所有租户所体验的性能。改变调度组件118是可扩展的以迎合不同的商业场景,例如基于使用系统102的租户的类型的差异化行为。同样,系统并不依赖于租户的良好的行为。即,系统不依赖于租户控制它们自身的改变请求,以便不造成其他租户的性能上的降低。替代地,系统可以调度系统的资源,以使得相比于其他的、较大的租户,较小的租户不受影响(例如,它们不体验较高的延迟)。系统实时地或接近实时地监视租户的行为,并且系统决定对于给定的租户一次处理多少改变。这使得系统能够针对板载或其他改变处理活动而为所有租户提供公平的量的带宽和其他计算资源。
本讨论已经提及了处理器和服务器。在一个实施例中,处理器和服务器包括具有相关联的存储器和定时电路(没有分别地示出)的计算机处理器。它们是其所属的系统或设备的功能部件,并且由这些系统或设备来激活,并且它们促进这些系统中的其他部件或项目的功能。
同样,还讨论了多个用户界面显示。所述用户界面显示可以采用宽泛的多种不同的形式,并可以具有布置在其上的宽泛的多种不同的用户可致动输入机制。例如,用户可致动输入机制可以是文本框、勾选框、图标、链接、下拉菜单、搜索框等。它们还可以以宽泛的多种不同的方式来致动。例如,它们可以使用指向和点击设备(例如,轨迹球或鼠标)来致动。它们可以使用硬件按键、开关、操纵杆或键盘、拇指开关或者拇指垫等来致动。它们还可以使用虚拟键盘或者其他虚拟致动器来致动。另外,在显示这些用户界面的屏幕是触摸感应屏幕的情况下,它们可以使用触摸手势来致动。同样,在显示它们的设备具有语音识别组件的情况下,它们可以使用语音命令来致动。
还讨论了多个数据存储。应当注意的是,可以将它们中的每个数据存储分成多个数据存储。所有这些数据存储可以对访问这些数据存储的系统而言是本地的,所有这些数据存储可以是远程的,或者可以一些是本地的而其他的是远程的。在本文中构想所有这些配置。
同样,附图示出了具有归属于每个框的功能的多个框。应当注意的是,可以使用更少的框因此由更少的组件来执行功能。此外,可以使用具有分布在更多组件之间的功能的更多的框。
图4是示出了其中可以实现系统102的多租户云架构196(云196)的更加详细的示例的框图。图4示出了更加详细的其他云实现组件122(在图1中所示出的)的一个示例。
云计算提供了不需要末端用户了解传递服务的系统的物理位置或配置的计算、软件、数据访问、和存储服务。在各种实施例中,云计算使用合适的协议而通过诸如互联网之类的广域网来传递服务。例如,云计算提供者通过广域网传递应用并且可以通过网络浏览器或任何其他计算组件对它们进行访问。可以将架构100的软件或组件以及对应的数据存储在远程位置处的服务器上。可以在远程数据中心位置处对云计算环境中的计算资源进行整合,或者它们可以是分散的。云计算基础设施可以通过共享的数据中心来传递服务,即使它们对用户而言表现为单个访问点。因此,在本文中所描述的组件和功能可以使用云计算架构从远程位置处的服务提供者来提供。可替代地,它们可以从传统服务器来提供,或者它们可以直接安装在客户端设备上,或者以其他方式来提供。
该描述旨在包括公共云计算和私有云计算两者。云计算(公共的和私有的两者)提供大体上资源的无缝集中化(pooling),而且降低了管理和配置底层硬件基础设施的需求。
公共云是由供应者所管理的,并且通常支持多个客户使用相同的基础设施。同样,与私有云相反,公共云可以使得末端用户免于对硬件进行管理。私有云可以由组织自行管理并且设施通常并不与其他组织共享。该组织仍然要在一定程度上维护硬件,例如安装和维修等。
图4示出了系统102中的组件122,其说明性地包括虚拟化系统198、基础设施组件200、应用平台组件202、和应用软件组件204。基础设施组件200可以包括安全组件206、硬件/软件基础设施208、服务器210、负载平衡组件212、网络组件214,并且其也可以包括其他组件216。
应用平台组件202可以包括执行运行时组件218、操作系统组件220、数据库组件222、网络服务器组件224,并且其也可以包括其他组件226。应用软件组件204说明性地包括用户接口组件228、应用工作流230、应用逻辑232、数据库系统234,并且其可以包括其他项目236。
取决于由云196所实现的多租户的等级,虚拟化系统198将把物理计算设备组件122电子地分隔成一个或多个虚拟设备。可以使用和管理这些设备中的每个设备以执行计算任务。
多租户云计算架构196可以根据多个不同的模型而在多个不同的等级处提供服务。所述服务可以包括例如基础设施即服务(IaaS)、平台即服务(PaaS)、和软件即服务(SaaS)等。IaaS是最基础的,并且较高等级的模型中的每个模型(分别为PaaS和SaaS)是从较低等级的模型的细节中提取的。
在IaaS中,提供了物理机或虚拟机、以及其他资源。监督组件(有时也被称为管理程序)运行虚拟机。多个不同的管理程序可以用于运行相对大数量的虚拟机,并且根据各个租户的需求来按比例缩放。IaaS模型还可以按需求供应额外的资源(例如,其他基础设施组件200)。为了使租户部署它们的应用,它们在云基础设施组件200上安装操作系统映像以及它们的应用软件。接着,租户负责维护操作系统和应用软件。
PaaS涉及云架构196提供应用平台组件202即服务。应用开发者可以在云平台组件202上开发并运行他们的软件,而不需要管理底层硬件和软件层。
SaaS涉及架构196提供对应用组件204中的应用软件和数据库的访问。云架构196管理基础设施组件200和运行应用的平台组件202。云196还安装并操作在应用组件204中的应用软件,并且租户对软件进行访问但不管理云基础设施组件200或应用在其中运行的平台组件202。在这样的实现中,虚拟化系统198在运行时提供多个虚拟机以满足变化的工作负荷。负载平衡器跨虚拟机来分配工作。该过程对于仅看到至应用的单个接入点的租户而言常常是透明的。
在多租户环境中,任何机器都可以对部署租户系统104-106的多于一个的用户组织进行服务。然而,多租户可以应用于云架构的所有三个层(IaaS、PaaS、和SaaS)。精确的多租户的程度可以基于核心应用(或应用组件204)中有多少被设计为跨租户104-106共享。相对高程度的多租户允许数据库方案被共享,并且支持商业逻辑、工作流、和用户接口层的自定义。在相对低程度的多租户中,IaaS和PaaS组件200和202分别由具有专用于每个租户的专用虚拟化组件的应用组件204共享。
已经关于供应软件即服务的基于云的多租户服务系统102进行了以上的讨论。因此,虚拟化系统198将提供分离的虚拟机以在应用软件层上为每个租户104-106提供它们自己的、安全的、和分离的虚拟计算环境。因此,每个租户104-106可以对它们自己的应用(例如,它们自己的电子邮件应用、文档管理系统、商业系统等)进行改变。当如在上文中关于图1-图3所描述的那样完成时,它们可以这样做而不会不公平地影响由其他租户所观察到的性能。
还预期到的是,系统102的一些元件可以被设置在云中,而其他元件可以不被设置在云中。作为示例,数据库和数据储存器可以被设置在云196外部,并且通过云196来访问。在另一个示例中,其他组件可以位于云196外部。无论它们位于何处,它们都可以由租户系统104-106中的设备通过网络300(广域网或局域网)直接地访问,它们可以由服务托管在远程站点处,或者它们可以通过云被提供为服务或者由驻留在云中的连接服务来访问。在本文中预期到这些架构中的所有架构。
还应当注意的是,可以将架构100或其部分设置在宽泛的多种不同的设备上。这些设备中的一些设备包括:服务器、台式计算机、膝上型计算机、平板计算机、或其他移动设备,例如掌上计算机、蜂窝电话、智能电话、多媒体播放机、个人数字助理等。
图5提供了可以运行架构100或租户104-106的组件或者与架构100进行交互、或两者的客户端设备16的组件的总体框图。在设备16中,提供允许手持设备与其他计算设备进行通信的通信链路13,并且在某些实施例中,提供用于自动地接收信息(例如,通过扫描)的信道。通信链路13的示例包括红外端口、串行/USB端口、诸如以太网端口之类的有线网络端口、以及允许通过一个或多个通信协议进行通信的无线网络端口,其中所述一个或多个通信协议包括通用分组无线服务(GPRS)、LTE、HSPA、HSPA+和其他3G与4G无线协议、1Xrtt和短消息服务(其是用于提供至网络的蜂窝接入的无线服务)、以及提供至网络的本地无线连接的Wi-Fi协议和蓝牙协议。
在其他实施例中,在连接至可移动安全数字(SD)卡接口15的SD卡上接收应用或系统。SD卡接口15和通信链路13沿着总线19与处理器17(其也可以实施在其他附图中所描述的处理器或服务器)进行通信,其中总线19也连接至存储器21和输入/输出(I/O)组件23、以及时钟25和定位系统27。
在一个实施例中,提供I/O组件23以促进输入和输出操作。设备16的各种实施例的I/O组件23可以包括诸如按键、触摸传感器、多点触摸传感器、光学或视频传感器、语音传感器、触摸屏、接近度传感器、麦克风、倾斜传感器、以及重力开关之类的输入组件和诸如显示设备、扬声器、和/或打印机端口之类的输出组件。也可以使用其他I/O组件23。
时钟25说明性地包括输出时间和日期的实时时钟组件。还可以说明性地为处理器17提供定时功能。
定位系统27说明性地包括输出设备16的当前地理位置的组件。这可以包括例如全球定位系统(GPS)接收机、LORAN系统、航位推算系统、蜂窝三角测量系统、或其他定位系统。还可以包括例如生成期望的地图、导航路线、和其他地理功能的地图软件或者导航软件。
存储器21存储操作系统29、网络设置31、应用33、应用配置设置35、数据存储37、通信驱动器39、以及通信配置设置41。存储器21可以包括所有类型的有形的易失性和非易失性计算机可读存储器设备。其还可以包括计算机存储介质(在下文中所描述的)。存储器21存储计算机可读指令,当由处理器17执行时,所述计算机可读指令使得该处理器根据这些指令来执行计算机实现的步骤或功能。类似地,设备16可以具有客户端商业系统24,其可以运行各种商业应用或者实施租户系统104-106的部分或全部。也可以由其他组件来激活处理器17以促进它们的功能。
网络设置31的示例包括诸如代理信息、互联网连接信息、以及映射之类的事情。应用配置设置35包括针对具体的企业或用户来定制应用的设置。通信配置设置41提供用于与其他计算机进行通信的参数,并包括诸如GPRS参数、SMS参数、连接用户名和密码之类的项目。
应用33可以是先前已经存储在设备16上的应用,或者在使用期间安装的应用,尽管这些应用也可以是操作系统29的一部分,或者托管在设备16外部。
图6示出了在其中设备16是平板计算机600的一个实施例。在图6中,计算机600被示为具有用户界面显示屏602。屏幕602可以是触摸屏(因此可以使用来自用户的手指的触摸手势来与应用进行交互),或者是从笔或者触摸笔接收输入的支持笔的界面。其也可以使用屏上虚拟键盘。当然,也可以通过合适的附接机制(例如,无线链路或者USB端口)来附接至键盘或者其他用户输入设备。计算机600也可以说明性地接收语音输入。
也可以使用设备16的额外的示例。它们可以包括功能电话、智能电话、或移动电话。电话可以包括用于拨打电话号码的一组键盘、能够显示包括应用图像、图标、网页、照片、和视频在内的图像的显示器、以及用于选择在显示器上所示出的项目的控制按钮51。电话包括用于接收诸如通用分组无线服务(GPRS)和1Xrtt之类的蜂窝电话信号以及短消息服务(SMS)信号的天线。在一些实施例中,电话还包括接受安全数字(SD)卡57的SD卡插槽55。
移动设备也可以是个人数字助理(PDA)或多媒体播放器或平板计算设备、等等(在下文中成为PDA)。PDA包括感应屏,其感测当触摸笔(或者其他指向器,例如用户的手指)位于该屏幕上时该触摸笔的位置。这允许用户选择、突出显示和移动屏幕上的项目、以及画和写。PDA还包括多个用户输入键或者按钮,其允许用户滚动浏览在显示器上所显示的菜单选项或其他显示选项,并且允许用户在不接触显示器的情况下改变应用或者选择用户输入功能。尽管没有示出,但PDA可以包括内置天线和支持与其他计算机进行无线通信的红外发射机/接收机、以及支持至其他计算设备的硬件连接的连接端口。通常而言,这样的硬件连接是通过支架(cradle)来实现的,该支架通过串行或USB端口连接至其他计算机。因此,这些连接是非网络连接。
图7示出了智能电话71。智能电话71具有显示图标或区块(tile)或者其他用户输入机制75的触摸感应显示器73。用户可以使用机制75来运行应用、进行通话、执行数据传输操作等。通常而言,智能电话71构建在移动操作系统上,并且提供比特征电话更先进的计算能力和连通性。
应当注意的是,其他形式的设备16是可能的。
图8是其中可以部署架构100或其部分的计算环境的一个示例。参考图8,用于实现一些实施例的示例系统包括以计算机810为形式的通用计算设备。计算机810的组件可以包括但不限于:处理单元820(其可以包括在上文中所讨论的处理器或服务器)、系统存储器830、以及将包括系统存储器的各种系统组件耦合至处理单元820的系统总线821。系统总线821可以是几种类型的总线结构中的任何一种,包括使用多种总线架构中的任何一种的存储器总线或存储器控制器、外围总线、以及本地总线。作为示例而非限制,这样的架构包括工业标准结构(ISA)总线、微通道架构(MCA)总线、增强型ISA(EISA)总线、视频电子标准关联(VESA)本地总线、以及外围组件互连(PCI)总线(也被称为Mezzanine总线)。关于图1所描述的存储器和程序可以部署在图8的对应的部分中。
计算机810通常包括宽泛的多种计算机可读介质。计算机可读介质可以是能够由计算机810来访问的任何可用的介质,并且包括易失性介质和非易失性介质两者、可移动介质和不可以移动介质两者。作为示例而非限制,计算机可读介质可以包括计算机存储介质和通信介质。计算机存储介质不同于并且不包括经调制的数据信号或载波。计算机存储介质包括硬件存储介质,所述硬件存储介质包括以用于存储信息(例如,计算机可读指令、数据结构、程序模块、或其他数据)的任何方法或技术来实现的易失性和非易失性的、可以移动和不可移动的介质。计算机存储介质包括但不限于:RAM、ROM、EEPROM、闪速存储器或其他存储器技术、CD-ROM、数字通用盘(DVD)或者其他光盘存储、盒式磁带、磁带、磁盘存储或其他磁存储设备、或者可以用于存储期望的信息并且可以由计算机810来访问的任何其他介质。通常而言,通信介质实施计算机可读指令、数据结构、程序模块、或传输机制中的其他数据,并且包括任何信息传递介质。术语“已调制的数据信号”是指这样的信号:具有使该信号的特性中的一个或多个以如将信息编码在信号中的方式来设置或改变的信号。作为示例而非限制,通信介质包括诸如有线网络或直接有线连接之类的有线介质,以及诸如声学、RF、红外、和其他无线介质之类的无线介质。上文中的任何组合也应当被包括在计算机可读介质的范围内。
系统存储器830包括以易失性存储器和/或非易失性存储器为形式的计算机存储介质,例如只读存储器(ROM)831和随机存取存储器(RAM)832。通常将基本输入/输出系统833(BIOS)(其包含有助于例如在启动期间,在计算机810中的元件之间传输信息的基本例程)存储在ROM 831中。RAM 832通常包含可以由处理单元820立即访问和/或目前由处理单元820操作的数据和/或程序模块。作为示例而非限制,图8示出了操作系统834、应用程序835、其他程序模块836、以及程序数据837。
计算机810还可以包括其他可移动/不可移动易失性/非易失性计算机存储介质。仅仅作为示例,图8示出了从不可移动、非易失性磁介质中读取信息或者向其写入信息的硬盘驱动器841、用于从可移动、非易失性磁盘852中读取信息或者向其写入信息的磁盘驱动器851、以及用于从可移动、非易失性光盘856(例如,CD ROM或其他光学介质)中读取信息或者向其写入信息的光盘驱动器855。可以在示例性操作环境中使用的其他可移动/不可移动、易失性/非易失性计算机存储介质包括但不限于:盒式磁带、闪速存储器卡、数字通用盘、数字视频磁带、固态RAM、固态ROM等。硬盘驱动器841通常通过不可移动存储器接口(例如,接口840)而连接至系统总线821,磁盘驱动器851和光盘驱动器855通常通过可移动存储器接口(例如,接口850)连接至系统总线821。
可替代地或额外地,在本文中所描述的功能可以至少部分地由一个或多个硬件逻辑组件来执行。作为示例而非限制,可以使用的说明性类型的硬件逻辑组件包括:现场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、片上系统(SOC)、复杂可编程逻辑器件(CPLD)等。
在上文中讨论并在图8中示出的驱动器及其相关联的计算机存储介质提供对计算机可读指令、数据结构、程序模块、和针对计算机810的其它数据的存储。例如,在图8中,硬盘驱动器841被示出为对操作系统844、应用程序845、其它程序模块846、以及程序数据847进行存储。应当注意的是,这些组件可以与操作系统834、应用程序835、其它程序模块836、以及程序数据837相同或不同。在这里,给操作系统844、应用程序845、其它程序模块846、以及程序数据847以不同的标号从而说明至少它们是不同的复本。
用户可以通过诸如键盘862、麦克风863、以及指向设备861(例如,鼠标、轨迹球、或触摸板)之类的输入设备来向计算机810中输入命令和信息。其它输入设备(未示出)可以包括:操纵杆、游戏垫、碟式卫星天线、扫描仪等。这些和其它输入设备通常通过耦合至系统总线的用户输入接口860而连接至处理单元820,但也可以通过诸如并行端口、游戏端口、或通用串行总线(USB)之类的其它接口和总线结构而连接。可视显示器891或者其它类型的显示设备也经由诸如视频接口890之类的接口而连接至系统总线821。除了监视器之外,计算机还可以包括其它外围输出设备,例如扬声器897和打印机896,它们可以通过输出外围接口895而连接。
使用至一个或多个远程计算机(例如,远程计算机880)的逻辑连接来在网络化环境下操作计算机810。远程计算机880可以是个人计算机、手持设备、服务器、路由器、网络PC、对等设备、或其它公共网络节点,并且通常包括在上文中相对于计算机810所描述的元件中的许多个或全部元件。在图8中所描绘的逻辑连接包括局域网(LAN)871和广域网(WAN)873,但也可以包括其它网络。这样的网络环境在办公室、企业范围的计算机网络、内联网、以及互联网中是常见的。
当在LAN网络环境中使用时,将计算机810通过网络接口或者适配器870连接至LAN 871。当在WAN网络环境中使用时,计算机810通常包括调制解调器872、或者用于通过WAN 873(例如,互联网)来建立通信的其它单元。可以将调制解调器872(其可以是内置的或者外置的)经由用户输入接口860或者其它合适的机制连接至系统总线821。在网络化环境中,可以将相对于计算机810或其一部分所描述的程序模块存储在远程存储器存储设备中。作为示例而非限制,图8将远程应用程序885示出为驻留在远程计算机880上。应当理解的是,所示出的网络连接是示例性的,并且也可以使用在计算机之间建立通信链路的其它方式。
还应当注意的是,可以以不同的方式对在本文中所描述的不同的实施例进行组合。即,可以将一个或多个实施例的部分与一个或多个其它实施例的部分进行组合。在本文中构想所有这些组合。
示例1是一种多租户计算系统,包括:
租户行为监视系统,其生成指示发送对应的改变请求的进行请求的租户的特性的数据,每个改变请求都指示对与所述进行请求的租户相对应的租户数据的所请求的改变;
改变调度组件,其从多个不同的租户接收改变请求,所述改变调度组件基于所述进行请求的租户的所述特性而将所述改变请求划分成多个部分的改变,并且调度待对对应的租户数据进行的改变的部分;以及
改变请求处理系统,其按照由所述改变调度组件所调度的那样对所述租户数据进行改变请求。
示例2是任何或所有先前的示例的多租户计算系统,其中,所述改变调度组件包括:
改变切分组件,其基于指示在针对所述进行请求的租户进行改变时所述改变请求处理系统的性能的性能信息,来确定是否要将每个改变请求分成多个不同的部分以供调度。
示例3是任何或所有先前的示例的多租户计算系统,其中,所述改变调度组件还包括:
下一改变识别器组件,其基于所述性能信息来对待由所述改变请求处理系统进行的下一改变进行调度。
示例4是任何或所有先前的示例的多租户计算系统,其中,所述下一改变切分组件和所述下一改变识别器组件基于指示针对不同的进行请求的租户的期望的性能的租户公平策略来分别确定是否要将每个改变请求分成多个不同的部分,并且调度待进行的所述下一改变。
示例5是任何或所有先前的示例的多租户计算系统,其中,所述下一改变切分组件和所述下一改变识别器组件基于对针对不同的进行请求的租户的性能的测量来分别确定是否要将每个改变请求分成多个不同的部分,并且调度待进行的所述下一改变。
示例6是任何或所有先前的示例的多租户计算系统,其中,所述租户行为监视系统包括:
一组性能测量组件,其提供对针对所述不同的进行请求的租户的性能的测量。
示例7是任何或所有先前的示例的多租户计算系统,其中,所述租户行为监视系统包括:
业务监视组件,其将由所述进行请求的租户中的每个进行请求的租户所请求的改变的数量作为对性能的测量来监视并提供。
示例8是任何或所有先前的示例的多租户计算系统,其中,所述租户行为监视系统包括:
延迟监视器,其将指示由所述进行请求的租户中的每个进行请求的租户在发送所述改变请求与具有由所述改变请求处理系统所进行的对租户数据的所述对应的改变之间所体验的延迟的延迟测量作为对性能的测量来监视并提供。
示例9是示例6的所述多租户计算系统,其中,所述租户行为监视系统包括:
租户类型识别器,其识别每个行请求的租户的的租户类型,并且将所述租户类型作为所述进行请求的租户的特性中的一个特性来提供。
示例10是多租户计算系统,包括:
租户改变系统,其从多个不同的进行请求的租户接收改变请求,所述改变请求指示对与所述不同的进行请求的租户相对应的租户数据的改变;以及
调度组件,其基于所述改变请求中的每个改变请求中的改变的数量,来针对所述多个不同的进行请求的租户而将所述改变请求划分成改变的分组并对所述改变的分组进行调度,以跨所述改变请求来分配改变处理资源。
示例11是任何或所有先前的示例的多租户计算系统,其中,所述租户改变系统还包括:
改变请求处理系统,其包括所述改变处理资源,所述改变请求处理系统按照由所述调度组件所调度的那样在所述改变的分组中对所述租户数据进行改变。
示例12是任何或所有先前的示例的多租户计算系统,其中,所述租户改变系统还包括:
租户行为监视系统,其监视所述改变请求中的每个改变请求中的改变的数量。
示例13是任何或所有先前的示例的多租户计算系统,其中,所述租户行为监视系统包括:
延迟监视器,其监视指示发送改变请求与具有由所述改变请求处理系统所进行的改变请求中的改变之间的时间的针对每个租户的延迟。
示例14是任何或所有先前的示例的多租户计算系统,其中,所述租户行为监视系统包括:
租户识别器,其识别与每个进行请求的租户相对应的租户的类型。
示例15是一种方法,其包括:
在多租户计算系统中,监视指示在进行由进行请求的租户所请求的、对租户数据的所请求的改变时租户改变系统的性能的性能度量;
将所述所请求的改变划分成改变的多个部分;
基于所述性能度量,通过在所述进行请求的租户间分配改变请求处理资源来调度待进行的改变的所述部分;以及
使用所分配的改变请求处理资源,按照所调度的那样进行改变的所述部分中的每个部分中的对所述租户数据的改变。
示例16是任何或所有先前的示例的方法,其中,调度改变的所述部分包括:
调度改变的所述部分以针对相对于请求相对大量改变的进行请求的租户而言的请求相对少量改变的进行请求的租户而保持给定的性能等级,所述相对大量的改变相对于相对少量的改变是大的。
示例17是任何或所有先前的示例的方法,其中,调度改变的所述部分包括:
从第一所请求的改变调度待进行的改变的第一部分,所述改变的第一部分是在所述第一所请求的改变中所请求的改变的子集。
示例18是任何或所有先前的示例的方法,其中,调度改变的所述部分包括:
在从所述第一所请求的改变调度改变的任何额外的部分之前,从第二所请求的改变调度待进行的改变的第二部分,改变的所述第二部分是在所述第二所请求的改变中的所述改变的子集。
示例19是任何或所有先前的示例的方法,其中,监视性能包括:
检测与每个进行请求的租户相对应的租户的类型,所述租户的类型至少标识每个进行请求的租户包括支付对所述多租户计算系统的访问的付费租户还是包括具有对多租户计算系统的非支付访问的租户。
示例20是任何或所有先前的示例的方法,其中,调度改变的所述部分包括:
基于所述租户的类型来调度改变的所述部分,从而每个进行请求的租户都具有在给定范围内的延迟。
尽管已经用特定于结构特征和/或方法行为的语言描述了本主题,但应当理解的是,在所附权利要求中所定义的主题非必须限于在上文中所描述的具体的特征或行为。相反,在上文中所描述的具体的特征或行为是作为实现所述权利要求的示例形式而公开的。