在数据中心中分层收集样本的制作方法

文档序号:24790900发布日期:2021-04-23 16:03阅读:227来源:国知局
在数据中心中分层收集样本的制作方法
在数据中心中分层收集样本


背景技术:

1.度量(也称为性能度量)被计算机系统用来量化系统性能的测量。度量对于分析系统的操作并提供用于改进的反馈至关重要。在现代计算机系统中,度量的数量可能很大。例如,假设单个云应用每5秒收集1000个度量进行分析,这意味着每小时收集720,000个度量。在典型的大规模环境中,诸如在支持数以千计的应用,每个应用都在多个服务器上执行的企业数据中心中,速率可能约为每小时数十亿个度量。
2.当前,大多数性能监视工具将收集的度量保存到数据库中,然后离线执行分析。由于存储和处理大量度量需要大量的输入/输出(i/o)操作(诸如,数据库读和写),因此这些工具的伸缩性往往很差。此外,由于在数据库中存储和处理度量数据时的时延和处理开销,这些工具通常不支持实时分析。


技术实现要素:

3.本发明的一些实施例提供了一种用于收集与在数据中心中的主机计算机上执行的一个或多个资源集合的操作相关的度量值的方法。在一些实施例中,资源集合包括为其在主机计算机上执行中间盒服务的一个或多个应用的集合(例如,web服务器、应用服务器或数据库服务器的集群),并且度量是由该应用集合处理的分组经历的时延。
4.在一些实施例中,该方法分层地收集和分析样本,其中第一集合的样本在数据平面中收集和分析,并且第二集合的样本在控制平面中通过聚合在数据平面中收集的样本进行收集和分析。在一些实施例中,数据平面包括在其上执行样本收集引擎(例如,服务引擎)的主机计算机,而控制平面包括一个或多个服务器集合,这些服务器获得由主机计算机收集的样本数据,并聚合和分析该数据。
5.在特定的主机计算机处,在一些实施例中,该方法针对特定的操作度量重复地识别不同的样本值。例如,在一些实施例中,该方法由服务引擎执行,该服务引擎在特定的主机计算机上执行并识别由服务引擎转发给应用集群的不同分组所经历的不同时延。在一些实施例中,服务引擎(例如,服务虚拟机或容器)是负载均衡器,而在其它实施例中,它是另一种类型的中间盒服务引擎,诸如防火墙引擎、入侵检测引擎、入侵防御引擎和网络地址转换引擎等。
6.在第一时间段期间,该方法识别样本度量值的第一集合,并生成个体值(iv)第一直方图,该第一直方图指定该方法针对几个度量值中的每个值已经处理的样本数。基于iv第一直方图,该方法为样本值范围(svr)第二直方图指定几个度量值范围(即,几个箱(bin))。在第二时间段期间,该方法识别样本值的第二集合,并生成svr第二直方图以指定该方法针对第二直方图中的一组指定范围中的每个范围已经处理的样本数。
7.然后,该方法将svr第二直方图提供给服务器进行分析,以便评估数据中心中资源集合的操作。例如,在一些实施例中,该方法将svr第二直方图提供给一个或多个服务器的集合,以与由若干其它主机计算机针对特定操作度量生成的svr第二直方图聚合。然后,服务器集合将聚合的直方图存储在数据存储装置中(例如,数据库中),网络管理员可以访问
该数据存储装置以获得关于收集到的操作度量的信息。例如,在一些实施例中,服务器集合以聚合的直方图的图形显示形式提供该数据,或者以表格或文本形式提供该信息,例如,提供50%、90%和99%的已处理分组的时延值。
8.在一些实施例中,该方法在生成svr第二直方图之前生成另一个svr直方图。例如,在一些实施例中,svr第二直方图在一些实施例中具有可变大小的箱(即,可变大小的范围,也称为可变大小的桶)。在生成具有可变大小的箱的svr第二直方图并将其提供给服务器之前,在一些实施例中,该方法从iv第一直方图生成具有固定大小的箱(即,具有固定大小的范围/桶)的svr第三直方图,并使用此固定大小的箱svr直方图来识别(1)可变svr直方图的箱大小应该围绕其被定义的度量值,以及(2)这些可变箱的大小。
9.具体而言,对于固定大小的箱svr直方图,在一些实施例中,该方法生成关于沿着第一直方图识别出的度量值的固定大小的箱。在许多情况下,iv第一直方图没有该方法可能处理的全部可能值范围的样本值。为了在生成svr第三直方图箱时考虑这一点,在一些实施例中,该方法选择固定大小的第三直方图箱来均匀地覆盖样本值的预期范围。
10.在其它实施例中,该方法从iv第一直方图定义svr第二直方图,而不是从iv第一直方图生成固定大小的箱直方图。在这些实施例的一些实施例中,该方法为svr第二直方图(1)基于iv第一直方图的样本的底部w%(例如,25%)定义一个箱,(2)针对iv第一直方图的样本的下一个x%(例如,下一个25%)定义若干个箱(例如,4个或5个箱),(3)针对iv第一直方图的样本的下一个y%(例如,下一个40%)定义许多个箱(例如,5至10个箱),以及(4)针对iv第一直方图的样本的最后z%(例如,最后10%)定义另外多个箱(例如,5个箱)。基于其处理的下一个样本集合,该方法然后生成svr第二直方图,并且然后使用该直方图来定义svr第三直方图的箱。这种途径的优点是防止该方法基于在第一直方图中识别出的离群值(outlier)样本值为其第二直方图创建太多的箱。
11.在为svr第三直方图指定箱的位置和大小之后,该方法然后(1)在该方法识别第一和第二直方图期间的第一时间段和第二时间段之间的第三时间段中识别第三样本值集合,以及(2)生成svr第三直方图,以指定该方法已为第三直方图的每个固定大小的箱处理的样本数。在生成svr第三直方图之后,该方法然后从svr第三直方图指定svr第二直方图的箱的位置和箱的大小。
12.例如,当svr第三直方图具有带与低于0到40毫秒(ms)的时延对应的500个样本的十个桶,以及与从40到80ms的时延对应的500个样本的另外十个桶时,在一些实施例中,该方法(1)为svr第二直方图定义9个桶,(2)将第一个桶分配为以20ms为中心,宽度为20ms,(3)将svr第二直方图的接下来的三个桶分别分配为以45、55和65ms为中心,每个宽度为10ms,以及(4)将svr第二直方图的最后五个桶分别分配为以71、73、75、77和79ms为中心,每个宽度为2ms。
13.该途径被优化以识别50%、90%和99%的样本经历的最大时延值,因为它创建了第一个桶以涵盖它在svr第三直方图中识别出的样本值范围的底部50%、为预期样本值范围的下一个40%创建了三个桶,并且然后为预期样本值范围的最后10%创建了五个桶。这些箱在svr第二直方图中的位置和大小由svr第三直方图的内容决定,而svr第三直方图的箱由iv第一直方图的内容决定,如上所述。
14.除了生成svr第二直方图之外,一些实施例的方法还迭代地执行范围修改处理以
修改svr第二直方图的箱的位置和/或大小。例如,在将svr第二直方图提供给服务器集合之后,一些实施例的方法基于所生成的svr第二直方图为其箱指定的样本值的数量来修改为svr第二直方图指定的至少两个范围(箱),并基于修改后的箱为它要处理的下一批样本生成新的svr第二直方图。
15.前面的发明内容旨在用作对本发明的一些实施例的简要介绍。这并不意味着是对本文档中公开的所有发明主题的介绍或概述。以下具体实施方式和在该具体实施方式中引用的附图将进一步描述方面内容中描述的实施例以及其它实施例。因此,为了理解本文档描述的所有实施例,需要对发明内容、具体实施方式、附图和权利要求进行全面回顾。此外,要求保护的主题不受发明内容、具体实施方式和附图中的说明性细节的限制。
附图说明
16.在所附权利要求中阐述了本发明的新颖特征。但是,出于解释的目的,在以下各图中阐述了本发明的几个实施例。
17.图1是图示根据一些实施例的用于管理度量的编程计算机系统的功能图。
18.图2是图示包括可扩展的分布式度量管理器的数据中心的实施例的框图。
19.图3是图示用于统计地表征分布式网络的性能的处理的实施例的流程图。
20.图4是图示用于统计地表征分布式网络中的事务时延的处理的实施例的流程图。
21.图5是描绘分布式网络的示例性实施例中的桶的合并的框图。
22.图6是描绘分布式网络的示例性实施例中的桶的合并的框图。
23.图7图示了实现一些实施例的度量值收集方法的处理。
24.图8呈现了在几个主机计算机上作为服务虚拟机(svm)执行的几个负载均衡引擎,它们在数据中心中的主机计算机上执行的服务器应用集群中的几个服务器应用之间分发分组处理负载。
25.图9图示了一些实施例的负载均衡处理。
26.图10图示了在一些实施例中针对负载均衡器处理的时延值的样本所生成的个体值直方图的示例。
27.图11图示了针对固定箱直方图生成的固定大小的箱的示例。
28.图12图示了固定大小的箱直方图的示例。
29.图13图示了为可变箱直方图生成的可变大小的箱的示例。
30.图14图示了可变大小的箱直方图的示例。
31.图15图示了在一些实施例中负载均衡器如何报告其可变大小的箱直方图的示例。
32.图16图示了修改可变箱直方图的可变大小的箱的示例。
33.图17图示了针对可变箱直方图生成的可变大小的箱的另一个示例。
34.图18图示了可变大小的箱直方图的另一个示例。
35.图19图示了由另一个服务引擎执行的处理,该服务引擎基于其从主服务引擎接收到的箱大小/位置属性来生成可变大小的箱直方图。
36.图20图示了在一些实施例中由控制器针对由服务引擎集合针对特定操作度量报告的可变大小的箱直方图集合执行的处理。
37.图21图示了控制器对三个报告的直方图的数据求和,以获得聚合的直方图。
具体实施方式
38.本发明可以以多种方式实现,包括实现为处理;装置;系统;物质的组成;实施在计算机可读存储介质上的计算机程序产品;和/或处理器,诸如被配置为执行存储在存储器上和/或由存储器提供的指令的处理器,该存储器与处理器耦合。在本说明书中,这些实施方式或本发明可以采用的任何其它形式可以被称为技术。一般而言,在本发明的范围内,可以更改所公开的处理的步骤顺序。除非另有说明,否则描述为被配置为执行任务的诸如处理器或存储器的组件可以被实现为被临时配置为在给定时间执行任务的通用组件或制造为执行任务的特定组件。如本文所使用的,术语“处理器”是指被配置为处理诸如计算机程序指令之类的数据的一个或多个设备、电路和/或处理核。
39.以下提供了对本发明的一个或多个实施例的详细描述以及图示本发明原理的附图。结合这样的实施例描述了本发明,但是本发明不限于任何实施例。本发明的范围仅由权利要求书限制,并且本发明涵盖许多替代、修改和等同形式。在下面的描述中阐述了许多具体细节,以提供对本发明的透彻理解。提供这些细节是为了示例的目的,并且可以根据权利要求来实践本发明,而无需这些具体细节中的一些或全部。为了清楚起见,未详细描述与本发明相关的技术领域中已知的技术材料,以便不会不必要地使本发明模糊不清。
40.度量(也称为性能度量)被计算机系统用来量化系统性能的测量。度量对于分析系统的操作并提供用于改进的反馈至关重要。在现代计算机系统中,度量的数量可能很大。例如,假设单个云应用每5秒收集1000个度量进行分析,这意味着每小时收集720,000个度量。在典型的大规模环境中,诸如在支持数以千计的应用,每个应用都在多个服务器上执行的企业数据中心中,速率可能约为每小时数十亿个度量。度量的分析由于一些系统的分布式性质而更加复杂。在分布式网络中,每个子系统可能只处理网络中一小部分任务。因此,每个子系统可能仅提供网络活动的有限部分的度量数据。
41.当前,大多数性能监视工具将收集的度量保存到数据库中,然后离线执行分析。由于存储和处理大量度量需要大量的输入/输出(i/o)操作(诸如,数据库读和写),因此这些工具的伸缩性往往很差。此外,由于在数据库中存储和处理度量数据时的时延和处理开销,这些工具通常不支持实时分析。
42.描述了一种用于表征分布式系统的性能的方法和系统。该方法包括从分布式网络中的多个源获得多个性能度量集合。为性能度量集合生成统计摘要。使用统计摘要提供关于分布式网络性能的系统级统计描述。
43.图1是图示根据一些实施例的用于管理度量的编程计算机系统的功能图。显而易见,其它计算机系统体系架构和配置可以用于管理和处理度量。包括如下所述的各种子系统的计算机系统100包括至少一个微处理器子系统(也称为处理器或中央处理单元(cpu))102。例如,处理器102可以由单芯片处理器或由多个处理器实现。在一些实施例中,处理器102是控制计算机系统100的操作的通用数字处理器。使用从存储器110中检索到的指令,处理器102控制输入数据的接收和操纵,以及数据在输出设备(例如,显示器118)上的输出和显示。在一些实施例中,处理器102包括和/或用于提供以下关于图2的服务器202等描述的服务器功能。
44.处理器102与存储器110双向耦合,该存储器110可以包括通常是随机存取存储器(ram)的第一主存储装置和通常是只读存储器(rom)的第二主存储装置。如本领域中众所周
知的,主存储装置可以用作通用存储区域和高速暂存(scratch

pad)存储器,并且还可以用于存储输入数据和处理后的数据。除了用于处理器102上操作的进程的其它数据和指令之外,主存储装置还可以以数据对象和文本对象的形式存储编程指令和数据。同样如在本领域中众所周知,主存储装置通常包括处理器102用来执行其功能的基本操作指令、程序代码、数据和对象(例如,编程指令)。例如,取决于例如数据访问需要是双向还是单向的,存储器110可以包括以下描述的任何合适的计算机可读存储介质。例如,处理器102还可以直接且非常快速地检索经常需要的数据并将其存储在高速缓存存储器(未示出)中。
45.可移动大容量存储设备112为计算机系统100提供附加的数据存储容量,并且被双向(读/写)或单向(只读)耦合到处理器102。例如,存储器112还可以包括计算机可读介质,诸如磁带、闪存、pc

cards、便携式大容量存储设备、全息存储设备以及其它存储设备。固定的大容量存储设备120还可以例如提供附加的数据存储容量。大容量存储设备120的最常见示例是硬盘驱动器。大容量存储装置112、120通常存储通常不被处理器102主动使用的附加编程指令、数据等。将认识到的是,如果需要,可以以标准方式并入大容量存储装置112和120中保留的信息作为作为虚拟存储器的存储器110(例如,ram)的一部分。
46.除了向处理器102提供对存储子系统的访问之外,总线114还可以用于提供对其它子系统和设备的访问。如图所示,这些可以包括显示监视器118、网络接口116、键盘104和指示设备106,以及根据需要的辅助输入/输出设备接口、声卡、扬声器和其它子系统。例如,指示设备106可以是鼠标、触控笔、跟踪球或平板电脑,并且对于与图形用户界面进行交互是有用的。
47.网络接口116允许处理器102使用所示的网络连接耦合到另一个个计算机、计算机网络或电信网络。例如,通过网络接口116,处理器102可以在执行方法/处理步骤的过程中从另一个网络接收信息(例如,数据对象或程序指令)或向另一个网络输出信息。通常表示为要在处理器上执行的指令序列的信息可以从另一个网络接收和输出到另一个网络。接口卡或类似设备以及由处理器102实现(例如,在其上执行)的适当的软件可以用于将计算机系统100连接到外部网络并根据标准协议来传输数据。例如,本文所公开的各种处理实施例可以在处理器102上执行,或者可以与共享处理的一部分的远程处理器一起在诸如互联网、内联网网络或局域网之类的网络上执行。附加的大容量存储设备(未示出)也可以通过网络接口116连接到处理器102。
48.辅助i/o设备接口(未示出)可以与计算机系统100结合使用。辅助i/o设备接口可以包括通用和自定义的接口,这些接口允许处理器102从其它设备(诸如,麦克风、触敏显示器、换能器读卡器、带阅读器、语音或手写识别器、生物特征读取器、相机、便携式大容量存储设备以及其它计算机)发送数据以及更通常地从其接收数据。
49.另外,本文公开的各种实施例还涉及具有计算机可读介质的计算机存储产品,该计算机可读介质包括用于执行各种计算机实现的操作的程序代码。计算机可读介质是可以存储此后可以由计算机系统读取的数据的任何数据存储设备。计算机可读介质的示例包括但不限于上述所有介质:磁介质,诸如硬盘、软盘和磁带;光学介质,诸如cd

rom盘;磁光介质,诸如光盘;以及经过特殊配置的硬件设备,诸如专用集成电路(asic)、可编程逻辑设备(pld)以及rom和ram设备。程序代码的示例包括如由例如编译器产生的机器代码,或包含可以使用解释器执行的更高级别代码(例如,脚本)的文件。
50.图1所示的计算机系统不过是适合与本文所公开的各种实施例一起使用的计算机系统的示例。适用于这种用途的其它计算机系统可以包括更多或更少的子系统。另外,总线114图示了用于链接子系统的任何互连方案。具有子系统的不同配置的其它计算机体系架构也可以被利用。
51.图2是图示包括可伸缩的分布式度量管理器并且可以提供分布式网络服务的数据中心的实施例的框图。在这个示例中,诸如252之类的客户端设备经由网络254连接到数据中心250。客户端设备可以是膝上型计算机、台式计算机、平板电脑、移动设备、智能电话、可穿戴联网设备或任何其它适当的计算设备。在一些实施例中,在每个客户端处安装了web浏览器和/或独立客户端应用,从而使用户能够使用客户端设备来访问由数据中心250托管的某些应用。网络254可以是互联网、专用网络、混合网络或任何其它通信网络。
52.在所示的示例中,包括诸如路由器、交换机等之类的联网设备的联网层255将来自客户端设备252的请求转发到分布式网络服务平台203。在这个示例中,分布式网络服务平台203包括被配置为提供分布式网络服务的多个服务器。物理服务器(例如,202、204、206等)具有硬件组件和软件组件,并且可以使用诸如100的设备来实现。在这个示例中,服务器的硬件(例如,208)支持操作系统软件,其中配置了多个虚拟机(vm)(例如,218、219、220等)用于执行。vm是模拟物理机器执行程序的方式的机器(例如,计算机)的软件实现。服务器操作系统中管理vm的部分被称为管理程序(hypervisor)。管理程序在物理硬件和vm之间进行接口,从而为vm提供抽象层。通过对vm共享物理硬件资源的管理,管理程序使每个vm看起来好像都在其自己的专用硬件上运行。管理程序的示例包括vmwareworkstation和oracle vm virtualbox虽然出于示例目的广泛地示出和讨论了支持vm体系架构的物理服务器,但是也可以使用支持其它体系架构(诸如基于容器的体系架构(例如,kubernetesdockermesos)、标准操作系统等)的物理服务器,并且本文描述的技术也适用。例如,在基于容器的体系架构中,应用是在特殊的容器中而不是在虚拟机中执行的。
53.在一些实施例中,应用的实例被配置为在vm内执行。此类应用的示例包括web应用,诸如购物车,用户认证、信用卡认证、电子邮件、文件共享、虚拟桌面、语音/视频流传输、在线协作,等等。
54.在物理设备上实例化一个或多个服务引擎(例如,214,224等)。在一些实施例中,服务引擎被实现为在虚拟机中执行的软件。执行服务引擎以为在与服务引擎相同的物理服务器上执行的应用和/或在不同的物理服务器上执行的应用提供分布式网络服务。在一些实施例中,服务引擎被配置为启用实现服务逻辑的适当的服务组件。例如,执行负载均衡器组件以提供负载均衡逻辑,以在本地物理设备以及其它物理设备上执行的应用实例之间分发业务负载;执行防火墙组件以向各种设备上的应用实例提供防火墙逻辑;执行度量代理组件以采集与与应用的实例等相关联的业务、性能等相关联的度量。可以适当地实现和启用许多其它服务组件。当需要具体服务时,服务引擎配置并调用对应的服务组件以在vm中执行。
55.在所示的示例中,在服务器的物理端口(例如,通信接口,诸如以太网端口215)上接收的业务被发送到虚拟交换机(例如,212)。在一些实施例中,虚拟交换机被配置为使用管理程序提供的api以内联模式拦截为(一个或多个)应用指定的传入业务,并将业务发送到适当的服务引擎。在内联模式下,分组在不复制的情况下被转发。如图所示,虚拟交换机
将业务传递到分布式网络服务层中的服务引擎(例如,同一物理设备上的服务引擎),服务引擎在需要时变换分组并将分组重定向到适当的应用。服务引擎基于诸如配置的规则和操作条件等因素,将业务重定向到在服务器上的vm中执行的适当应用。虚拟交换机及其操作的详细信息不在本申请的范围之内。
56.控制器290被配置为控制、监视、编程和/或供应分布式网络服务和虚拟机。特别地,控制器包括被配置为收集性能度量和执行分析操作的度量管理器292。控制器可以被实现为软件、硬件、固件或其任何组合。在一些实施例中,控制器在诸如100的系统上实现。在一些情况下,控制器在逻辑上被实现为单个实体,但是在多个物理设备上安装并执行控制器的多个实例以提供高可用性和增加的容量。在实现多个控制器的实施例中,诸如在分布式数据库中使用的已知技术被应用于在控制器实例之间同步和维持数据的一致性。
57.在数据中心250内,一个或多个控制器290从数据中心中操作的各个节点采集度量数据。如本文所使用的,节点是指作为度量信息的源的计算元件。节点的示例包括虚拟机、联网设备、服务引擎或数据中心内的任何其它适当元素。
58.控制器可以收集许多不同类型的度量。例如,由于去往和来自应用的业务(例如,连接请求和响应等)将通过对应的服务引擎,因此可以由对应的服务引擎直接收集与应用和/或执行应用的vm的性能相关的度量。作为另一个示例,为了收集与客户端响应相关的度量,服务引擎将脚本发送到客户端浏览器或客户端应用。脚本测量客户端响应,并将一个或多个收集到的度量返回给服务引擎。在两种情况下,服务引擎都将收集到的度量发送到控制器290。此外,与服务平台的其它组件的性能相关的基础设施度量(例如,与联网设备相关的度量、与服务引擎本身的性能相关的度量、与主机设备相关的度量,诸如数据存储以及操作系统性能等)可以由控制器收集。度量的具体示例包括往返时间、时延、带宽、连接数等。
59.以上描述的分布式网络服务平台203的组件和布置仅出于说明的目的。本文描述的技术适用于具有不同组件和/或布置的网络服务平台。
60.图3是图示用于统计地表征分布式网络(诸如,采用系统200的网络)的性能的处理的实施例的流程图。在一些实施例中,可以使用服务引擎214、224和/或控制器290来实现处理300。因此,方法300是在系统200的上下文中描述的。在其它实施例中,可以使用其它和/或附加组件来分析分布式网络的性能。
61.在步骤302中,获得针对分布式网络200中的源的性能度量。步骤302可以包括收集系统200中的客户端、服务引擎或其它组件的性能数据。数据可以由服务引擎本身、度量代理、由服务引擎发送到另一组件的脚本或以其它方式收集。例如,每个服务引擎(214、224等)可以确定在特定时间间隔内通过服务引擎完成的每个事务的时延。其它度量,诸如客户端响应、连接、可用存储装置或带宽,也可以经由发送到客户端或其它组件的脚本进行监视。诸如一个或多个vm(218、219、220...)的组件可以被配置为定期报告或响应于特定事件报告所选择的性能度量。因此,在步骤302中获得的度量数据可以来自诸如应用、vm和/或客户端的组件,这些组件分散在多个物理机器上。与此类性能度量相关的数据被提供给对应的服务引擎。
62.使用在步骤302中获得的信息,经由步骤304生成统计摘要。统计摘要的生成包括计算描述性能度量的多个统计值。可以为与源相关的所有性能度量提供单个统计摘要。在其它实施例中,可以为每个源的每个性能度量提供单独的统计摘要。例如,在步骤304中,可
以仅针对每个服务引擎的事务时延提供统计摘要。可替代地,在步骤304中提供的单个统计摘要不仅可以并入事务时延,而且可以并入服务引擎或其它组件的其它性能特性。(一个或多个)服务引擎可以在步骤304中生成统计摘要。
63.在步骤304中提供的统计摘要在统计上描述服务引擎或(一个或多个)其它组件的性能。因此,不需要将性能度量的原始数据存储在中央存储设备中。代替地,统计摘要使用在步骤304中计算和存储的数量提供性能度量的充分描述。统计摘要可以包括性能度量的数据点数量、均值、偏差标准(standard of deviation)、方差、置信区间、最小值、最大值和/或其它关注统计量中的一个或多个。例如,由服务引擎管理的事务时延的统计摘要可以包括在时间间隔内完成的事务数量、平均时延、时延的偏差标准、时延的方差、时延的置信区间、间隔的最小时延和间隔的最大时延中的一个或多个。置信指示符是对一定百分比的样本空间的值的测量。例如,置信指示符可以是该间隔期间发生的90%的事务的时延范围。置信区间因此可以由直到样本空间的第九十个百分位数的值的范围以及该百分位数内的值的数量来表示。对于在该间隔内完成200个事务的服务引擎,其中90%的事务是在一秒内完成的,置信区间可以是一秒(第九十个百分位数的时延范围)和一百八十秒(90%的事务)。在替代实施例中,其它和/或附加的数量可能被包括在统计摘要中。
64.在步骤306处,聚合统计摘要以为分布式网络提供系统级统计描述。步骤306可以由控制器290执行。因此,服务引擎可以将它们的统计摘要提供给控制器290,控制器290以将统计信息保留在摘要中并将信息泛化到整个网络(或其预定义部分)的方式来组合摘要。在一些实施例中,度量管理器292执行该功能。在其它实施例中,步骤306可以由其它/附加的(一个或多个)组件执行。系统级统计描述以概率方式统计地表征整个分布式网络(或包括多个服务引擎的分布式网络的子集)的性能。系统级统计描述可以包括性能度量的数据点总数、系统级均值、系统级偏差标准、系统级方差、系统级置信区间、系统级最小值和系统级最大值。在上述事务时延的示例中,系统级统计描述可以包括在间隔内完成的分布式网络中的事务总数、系统级平均时延、系统级时延的偏差标准、系统级时延的方差、系统级时延的置信区间、系统级最小时延和系统级最大时延。
65.可以以与统计/概率规则一致的多种方式来执行步骤306中的聚合。在一些实施例中,针对每个度量计算统计摘要中的每个统计量的加权和。对于时延,均值、偏差标准、方差、置信区间、最小值和最大值可以通过在对应时间间隔内对服务引擎的事务数量的测量来加权。例如,以上数量可以通过服务引擎的事务数量或为服务引擎完成的事务总数的一部分来加权。可以使用在统计上有效的用于对每个摘要中的值进行加权和/或积分的其它机制。因此,系统级别的值基于每个统计摘要中的值,但考虑摘要表示的样本空间的一部分。
66.使用方法300,使用各个服务引擎的统计摘要来确定分布式网络的系统级性能。因此,可以快速获得系统级统计描述,而无需将性能度量的原始数据传输到大容量存储设备或其它组件、进行批量存储和/或分析。代替地,可以使用系统级统计描述。此外,可以使用系统级统计描述来计算其它关注的数量。可以确定实时或准实时性能,并且可以对系统操作进行调整。
67.图4是图示用于统计地表征分布式网络的事务时延的方法400的实施例的流程图,该分布式网络诸如利用系统200的分布式网络。在一些实施例中,可以使用服务引擎和控制
器(诸如,服务引擎214、224和控制器290)来实现处理400。因此,方法400是在系统200的上下文中描述的。在其它实施例中,可以使用其它和/或附加组件来分析分布式网络的性能。与分析性能度量一样,方法400也在事务时延的上下文中被描述。但是,方法400可以应用于其它性能度量。
68.在步骤402中,获得分布式网络中服务引擎的事务时延。步骤402可以包括每个服务引擎确定在特定时间段内为该服务引擎完成的事务的时延。如以上所讨论的,也可以使用度量代理、脚本或其它数据收集机制。
69.在步骤404处,基于时延值将时延组织成桶。每个桶都与某个百分比的时延对应。例如,如果使用十个桶,那么每个桶可以对应于十百分位数。例如,桶1可以用于具有从零到第十个百分位数的最低时延的事务,桶2可以用于具有大于第十百分位数并且不大于第二十百分位数的第二最小时延的事务,以此类推。在另一个实施例中,可以使用另一个数量的桶。例如,每个服务引擎可能将时延组织成二十个桶,每个桶对应于五个百分位数。所有服务引擎都可以使用相同数量的桶。在替代实施例中,不同的服务引擎可以使用不同数量的桶。由于时延是基于每个时延的值存储在桶中的,因此桶通常包含不同数量的事务的数据。
70.在步骤406处,为每个服务引擎中的每个桶计算期望的统计。例如,为每个桶计算的统计可以包括桶中的事务数、桶中的时延的均值、桶的时延的偏差标准、间隔期间桶的时延的方差、桶的时延的置信区间、在间隔内桶的最小时延以及间隔期间桶的最大时延。为服务引擎的所有桶计算的统计可以被视为服务引擎的统计摘要。因此,步骤404和406可以对应于方法300的步骤304(确定服务引擎的统计摘要)。
71.经由步骤408,将每个服务引擎的统计摘要提供给控制器。因此,服务引擎的桶的统计被传送到控制器。由于已经对针对每个服务引擎在步骤402中收集的数据执行了统计分析,因此无需将原始数据从服务引擎传送到控制器。
72.控制器290以符合统计准则的方式组合用于服务引擎的桶,从而经由步骤410提供系统级桶。控制器290因此生成用于分布式网络的系统级统计描述。控制器可以通过在每个级别将两个桶合并到桶中来分层组合桶,直到所有服务引擎的桶数量已合并到系统级桶的期望数量。合并桶可以包括提供每个桶中的值的加权和。也可以使用其它统计上可接受的方法。在一些实施例中,系统级桶的数量与每个服务引擎的桶的数量相同。执行步骤410中的合并,以使每个系统级桶都包括处于适当百分位数的系统范围事务的统计。例如,系统级桶1可以用于网络中具有从零到第十百分位数的最低时延的所有事务,系统级桶2可以用于网络中具有大于第十百分位数并且不大于第二十百分位数的第二最小时延的所有事务,以此类推。因为在步骤410中合并了桶,因此每个系统级桶可以包括该桶的百分位数范围的事务总数、该百分位数范围的系统级平均时延、该百分位数范围的系统级时延偏差标准、该百分位数范围的系统级时延方差、该百分位数范围的系统级置信区间、该百分位数范围的系统级最小时延以及该百分位数范围的系统级最大时延。可以考虑将系统级桶中的统计组合以形成时延的系统级统计描述。
73.步骤410中的桶的合并可以以多种方式执行。在一些实施例中,针对被组合的每个桶计算每个统计量的加权和。例如,可以通过将第一桶的均值乘以第一桶的事务数,将第二桶的均值乘以第二桶的事务数,然后将数量除以第一和第二桶中的事务的总和来确定合并的均值。因此,在步骤410中可以使用由每个服务引擎服务的事务以及系统的事务总数。此
外,在步骤410中合并桶可以考虑每个桶中的值的范围。在一些情况下,不同服务引擎中的值的范围不重叠。在这样的实施例中,可以简化步骤410中的合并。例如,图5描绘了四个服务引擎的桶的合并,这些服务引擎的范围不重叠且事务数量相似。服务引擎1(第一se)具有桶502a和504a。服务引擎2(第二se)具有两个桶512a和514a。第三se具有桶522a和524a。第四se具有桶532a和534a。因此,每个桶(502a、504a、512a,...)描述由对应服务引擎服务的事务的百分之五十。第一se的时延最低,第二se的时延次低,第四se的时延次高,并且第三se的时延最高。因此,仅例如经由加权和来组合每个服务引擎的桶。桶502a和504a被组合成542a。桶512a和514a被组合到桶544a。桶522a和524a以及桶532和534a分别被组合到桶548a和546a。在这个示例中,服务引擎处理大约相同数量的事务。但是,如果事务数量在服务引擎之间充分变化,那么桶502a至534a可能以另一种方式组合。桶542a、544a、546a和548a被合并到系统级桶552a和554a。
74.图6描绘了其中服务引擎具有重叠的范围内的时延并且具有相似数量的事务的情况的示例性实施例。在这种情况下,第一se具有桶502b和504b;第二se具有桶512b和514b;第三se具有桶522b和524b;并且第四se具有桶532b和534b。由于服务引擎的时延范围重叠,因此桶被不同地组合。因此,例如使用加权和将桶402b和522b组合成桶542b。桶504b和512b被组合成桶544b。桶514b和532b被合并到桶546b中。桶524b和534b被合并到桶548b。类似地,桶542b和546b被合并到系统级桶552b中。类似地,桶544b和548b被合并到系统级桶554b中。虽然代表系统的较大部分的数据,但桶542b、544b、546b、548b、552b和554b不需要包含大量数据。这是因为每个桶中包含的数据是它们所描述的事务的统计摘要。另外,在这种组合中,服务引擎处理大约相同数量的事务。但是,如果事务数量在服务引擎之间充分变化,那么桶502b至534b可能以另一种方式组合。
75.使用方法400,使用各个服务引擎的统计摘要确定分布式网络的系统级性能。因此,可以快速获得系统级统计描述,而无需大量存储和分析性能度量的原始数据。使用统计描述,可以计算其它关注的数量。此外,可以确定实时或准实时性能,并且可以对系统操作进行调整。
76.本发明的一些实施例提供了一种用于收集与在数据中心中的主机计算机上执行的一个或多个资源的集合的操作相关的度量值的方法。在一些实施例中,资源集合包括为其在主机计算机上执行中间盒服务的一个或多个应用的集合(例如,web服务器、应用服务器或数据库服务器的集群),并且度量是由该应用集合处理的分组经历的时延。
77.在一些实施例中,该方法分层地收集和分析样本,其中第一集合的样本在数据平面中收集和分析,并且第二集合的样本在控制平面中通过聚合在数据平面中收集的样本进行收集和分析。在一些实施例中,数据平面包括在其上执行样本收集引擎(例如,服务引擎)的主机计算机,而控制平面包括一个或多个服务器的集合,这些服务器获得由主机计算机收集的样本数据,并聚合和分析该数据。
78.在特定的主机计算机处,在一些实施例中,该方法针对特定的操作度量重复地识别不同的样本值。在第一时间段期间,该方法识别样本度量值的第一集合,并生成个体值(iv)第一直方图,该第一直方图指定该方法针对几个度量值中的每个值已经处理的样本数。基于iv第一直方图,该方法为样本值范围(svr)第二直方图指定几个箱(即,度量值范围)。
79.在第二时间段期间,该方法识别样本值的第二集合,并生成svr第二直方图以指定该方法针对第二直方图中的一组指定范围中的每个范围已经处理的样本数。然后,该方法将svr第二直方图提供给服务器进行分析,以便评估数据中心中资源集合的操作。例如,在一些实施例中,该方法将svr第二直方图提供给一个或多个服务器集合,以与由几个其它主机计算机针对特定操作度量生成的svr第二直方图聚合。
80.图7图示了实现一些实施例的度量值收集方法的处理700。如下面进一步描述的,该处理700生成两个svr直方图,即,处理基于初始iv直方图识别出的具有固定大小的箱的第一svr直方图,以及处理基于第一svr直方图识别出的具有可变大小的箱的第二svr直方图。处理700将可变大小的箱直方图迭代地报告给服务器集合,然后生成并报告新的可变大小的箱直方图,并且对于每次生成该直方图,它可能修改箱的位置和/或大小以匹配为其上一次生成直方图收集的度量样本。
81.在一些实施例中,处理700由服务引擎执行,该服务引擎在特定主机计算机上执行并且针对服务引擎在其上执行中间盒服务的不同分组识别不同的度量值。将参考图8中所示的示例来描述该处理700,该示例呈现了在几个主机计算机810上作为服务虚拟机(svm)执行的几个负载均衡引擎805,它们在数据中心中的主机计算机上执行的服务器应用集群820中的几个服务器应用815之间分发分组处理负载。
82.在这个示例中,负载均衡器在应用集群820的服务器应用815之间分发的分组来自在同一数据中心中运行的其它客户端应用。另外,在这个示例中,客户端和服务器应用815作为在主机计算机810上执行的访客虚拟机(gvm)操作。在其它实施例中,负载均衡器805和应用被不同地实现,例如,被实现为容器、管理程序服务引擎等。主机计算机810通过数据中心的网络860彼此之间以及与控制器875集合通信。
83.在图8中所示的示例中,在主机计算机810a上执行的负载均衡器805a充当应用集群820的主负载均衡器。在此角色下,负载均衡器805a不仅通过生成可变大小的箱直方图来总结由该负载均衡器805a从不同客户端850转发到应用集群820的不同应用815的分组所经历的时延,还通过为这些可变大小的箱直方图定义和更新箱结构来为应用集群820执行处理700。
84.在这个示例中,其它负载均衡器还执行处理700的一部分,以定义它们转发给应用集群的分组的可变大小的箱直方图,但是这些负载均衡器使用由负载均衡器805a为它们生成的直方图提供的箱属性(例如,箱位置和大小)。在一些实施例中,在其它主机计算机810上执行的这些其它负载均衡器针对其它应用集群820完整地执行处理700。
85.具有充当用于为特定操作度量定义所有服务引擎的箱结构的主服务引擎的一个服务引擎(例如,在负载均衡器上)的途径是有益的,因为它允许服务引擎提供给服务器集合以进行聚合的可变大小的箱直方图具有相同的箱结构(即,相同的箱、在相同的位置且具有相同的大小),以简化所提供的直方图的聚合。但是,其它实施例使用其它技术来定义箱结构,包括使服务器集合基于服务引擎提供的样本/直方图或基于由服务器集合在先前的设置或先前的样本收集周期中收集的样本值为可变大小的箱直方图定义箱结构。
86.还将参考图9的负载均衡处理900的示例来描述该处理700。在负载均衡器805a执行处理700的同时,所有负载均衡器805(包括负载均衡器805a)连续执行处理900,以在服务器应用集群820中的不同服务器应用815之间分发不同的分组流,并识别和记录分组在这些
流中所经历的时延。
87.如图所示,当负载均衡器接收到(在905处)分组以转发到应用集群时,处理900开始。然后,处理900识别(在910处)集群820中应当处理接收到的分组流的分组的应用815。当接收到的分组是针对流接收到的第一分组时,处理900(例如,通过使用指示轮询选择操作的权重值)执行负载均衡操作以选择集群820中应当处理接收到的分组的流并将为分组的流选择的应用的身份存储在连接跟踪存储装置中的应用。
88.另一方面,当接收到的分组不是为其流接收的第一个分组时,处理900使用连接跟踪存储装置中的记录来识别为该分组流选择的应用(例如,通过将接收到的分组流标识符与连接跟踪器中为由流标识符指定的流指定集群中的应用的记录的流标识符进行匹配)。
89.接下来,在915处,该处理将分组转发到识别出的应用。在920处,如果处理900需要跟踪接收到的分组的这种值,那么处理900识别并存储分组的时延值。在一些实施例中,负载均衡器存储它们处理的所有分组的时延值(即,存储时延样本值),而在其它实施例中,负载均衡器仅存储它们处理的分组的子集的时延值,因为收集所有处理的分组的这种样本在计算上和资源消耗方面很大。
90.此外,在一些实施例中,负载均衡器通过与作为处理的分组的源的客户端850(即,客户端应用)交互以识别分组从其离开客户端时到客户端接收从接收处理的分组的应用815返回的响应分组时的往返时间来计算处理的分组的时延值。在其它实施例中,负载均衡器以不同方式计算时延值,例如,计算从其接收到分组到从应用815接收到响应分组的时间间隔。在920之后,处理结束。
91.如上所述,在一些实施例中,图7的处理700由服务引擎执行。处理700最初为服务引擎在第一时间段期间处理的样本度量值(例如,时延值)的第一集合生成(在705处)个体值(iv)直方图。生成的iv直方图指定服务引擎针对几个度量值中的每个度量值已经处理的样本数。
92.为了生成这种直方图,处理700维护由值存储的度量值的列表,并且对于列表上的每个度量值,维护一个数字,该数字表示该服务引擎在第一时间间隔内为处理的分组识别该度量值的次数。在不同的实施例中,处理700以不同的方式实现该列表。例如,在一些实施例中,处理将该列表实现为排序的链接列表,其中列表中的每个条目存储度量值和样本计数值,而在其它实施例中,它将该列表实现为排序的数组。在其它实施例中,处理700具有该列表的不同实现。
93.图10图示了在一些实施例中针对负载均衡器处理的100个时延值的样本所生成的iv直方图1000的示例。在这个示例中,直方图沿着表示各个时延值的x

轴和表示样本数的y

轴定义。因此,对于直方图中表示的每个时延值,直方图指定负载均衡器已为分组记录时延值的次数。在该直方图中,50个样本的时延0到低于50毫秒(ms),而另外50个样本的时延介于51到100ms之间。
94.在一些实施例中,处理700为生成的iv直方图分配其主机计算机的第一量的存储器。当处理检测到生成的iv直方图已消耗在第一量的阈值大小内的第二量的存储器时,处理700转换到710,以为它应该分析的下一批样本值定义固定大小的箱直方图的箱。在一些实施例中,处理700的子处理在为固定大小的箱直方图定义箱时继续生成iv直方图,而在其它实施例中,当处理700开始为固定大小的箱直方图定义箱时,处理700停止生成iv直方图。
95.在一些实施例中,固定大小的箱直方图包括关于沿着iv直方图识别出的度量值的固定大小的箱。在许多情况下,iv直方图没有该方法可能处理的全部可能值范围的样本值。为了考虑这个问题,在一些实施例中,处理700在710处选择箱直方图的固定大小以均匀地覆盖样本值的预期范围。
96.对于图10中所示的示例,图11图示了在一些实施例中在710处针对固定箱直方图生成的固定大小的箱的示例。在这个示例中,关于由iv直方图识别出的样本值定义54个箱,每个箱的箱大小为2。在这个示例中,即使直方图1000并未识别任何此类时延,也为超过100ms的时延定义了最后四个箱,以便为识别潜在的更大时延提供缓冲。但是,其它实施例不生成这种额外的箱,或者不用作更大的样本值缓冲。
97.在为固定大小的箱直方图指定箱位置和大小之后,处理700通过在第二时间段中处理样本值的另一集合来生成(在715)固定大小的箱直方图。该直方图指定该处理已针对其固定大小的箱中每一个分析的样本数。在一些实施例中,处理700通过逐步执行样本值并且对于每个样本值,识别与样本值对应的直方图箱(即,指定包含处理的样本值的值范围的箱)并将已识别箱的样本计数递增1来生成固定大小的箱直方图。
98.对于图11中所示的示例,图12图示了在一些实施例中处理700在715处生成的固定大小的箱直方图1200的示例。该直方图对应于由处理700分析的1000个样本。在该直方图中,与40ms或更低的时延对应的桶的样本计数总计为500,而与大于40ms的时延对应的桶的样本计数总计为500。因此,在这个示例中,直方图1200的中值是40ms。
99.处理700生成(在715处)固定大小的箱直方图,直到它确定它应该转换到可变大小的箱直方图为止。该处理基于不同实施例中的不同标准做出该确定。例如,在一些实施例中,该处理仅针对一定数量的样本生成固定大小的箱直方图,而在其它实施例中,它仅针对一定时间段生成该直方图。
100.一旦处理确定(在715处)应该切换到可变大小的箱直方图,那么处理使用(在720处)固定大小的箱直方图来识别可变大小的箱直方图的箱的位置和大小。在不同的实施例中,处理700不同地执行该操作720。例如,对于可变大小的箱直方图,在一些实施例中,处理700为由固定大小的箱直方图识别出的底部50%样本值分配一个x宽度的箱,为由固定大小的箱直方图识别出的下一40%样本值分配n个y宽度的箱,并为由固定大小的箱直方图识别出的最后10%的样本值分配m个z宽度的箱,其中n和m为整数,并且x大于y,y大于z。
101.例如,从图12的固定箱直方图示例中,在一些实施例中,处理700生成图13中所示的可变大小的箱。这些箱用于处理700接下来应生成的可变大小的箱直方图。基于固定箱直方图1200,处理700(1)为可变大小的箱直方图定义十个桶,(2)将第一个桶分配为以20ms为中心,宽度为20ms,(3)将可变大小的箱直方图的接下来的四个桶分别分配为以45、55、65和75ms为中心,每个宽度为10ms,以及(4)将可变大小的箱直方图的最后五个桶分别分配为以82、86、90、94和98ms为中心,每个宽度为4ms。在图13中,这些桶由其最左侧和最右侧的值识别,以便简化其说明。
102.该途径被优化以识别50%、90%和99%的样本经历的最大时延值,因为它(1)基于它先前针对固定值直方图处理的内容创建了第一个桶以捕获预期样本值范围的底部50%,(2)基于先前针对固定值直方图处理的内容,为预期样本值范围的下一40%创建了四个桶,并且然后(3)基于它先前针对固定值直方图处理的内容,为预期样本值范围的最后10%创
建了五个桶。
103.在为可变大小的箱直方图指定(在720处)箱位置和大小之后,处理700将该直方图的箱位置和大小提供(在725处)给其它主机计算机810上的其它服务引擎,使得它们可以开始基于这些箱生成其可变大小的箱直方图。图8描绘了负载均衡器805a,该负载均衡器805a向在其它主机计算机810上执行的其它负载均衡器805提供关于可变大小的箱的数据。下面将参考图19描述这些其它负载均衡器生成其可变大小的箱直方图的操作。
104.接下来,该处理通过在第三时间段中处理另一个样本值集合来生成(在730处)可变大小的直方图。该直方图指定该处理已针对其每个箱分析的样本数。在一些实施例中,处理700通过逐步执行样本值并且对于每个样本值,识别与样本值对应的直方图箱(即,指定包含处理的样本值的值范围的箱)并将已识别箱的样本计数递增1来生成可变大小的箱直方图。
105.对于图13中所示的示例,图14图示了在一些实施例中处理700在730处生成的可变大小的箱直方图1400的示例。该直方图对应于由处理700分析的1000个样本。如图所示,450个样本落在该直方图的第一箱1405内,50个样本落在该直方图的第二箱1410内,其余500个样本落在直方图的其它七个桶中。因此,当第500个样本位于第二桶1410中时,时延中值已从由固定箱大小的直方图1200所表达的40ms转变为50ms。此外,该直方图显示90%和99%时延值为80和98ms,因为第900和990个样本落入与这些值对应的桶1415和1420中。
106.处理700生成(在730处)可变大小的箱直方图,直到它确定它应该将该直方图报告给服务器集合为止。该处理基于不同实施例中的不同标准做出该确定。例如,在一些实施例中,该处理仅针对一定数量的样本生成可变大小的箱直方图,而在其它实施例中,它仅针对一定时间段生成该直方图。
107.一旦处理确定(在730处)它应该向服务器集合提供可变大小的箱直方图,那么该处理就通过网络将该直方图传送(735处)到服务器进行分析,以评估数据中心中的资源集合的操作。例如,在图8中所示的示例中,负载均衡器805a将可变大小的直方图提供给一个或多个控制器875的集合。如下面进一步描述的,控制器集合875将该直方图与由在其它主机计算机810上执行的其它负载均衡器805针对为转发给应用集群820的分组识别出的时延所生成的可变大小的箱直方图进行聚合。
108.图15图示了在一些实施例中负载均衡器如何报告其可变大小的箱直方图的示例。如图所示,在一些实施例中,负载均衡器将其直方图报告为具有表示多个箱的多个记录的表。每个箱的记录都有时延值,该时延值表示与该箱相关联的最大时延,其中最小值是前一个箱的最大时延值,或者如果是第一个箱,那么为0。每个箱的记录还具有样本计数,该样本计数识别落入到箱中的已处理样本的数量。在其它实施例中,负载均衡器以不同方式报告其直方图。其它实施例使用其它方案来指定箱结构。例如,一些实施例根据其中点和其宽度来定义每个箱。在这些实施例中的一些实施例中,箱的宽度是根据误差百分比来指定的。
109.在将可变大小的箱直方图发送(在735处)到服务器集合之后,处理700执行(在740处)箱修改操作以确定其是否需要修改下一个可变大小的箱直方图的箱的位置和/或大小,或者它是否可以使用与其提供给服务器集合的上一个可变大小的箱直方图相同的确切箱。为此,在一些实施例中,处理700分析由先前可变大小的箱直方图表达的样本计数,以确定第一个箱、最后一个箱和中间箱的位置和大小是否反映了所表达的样本计数,如果不是,那
么它修改这些箱的位置和/或大小。
110.对于图14中所示的示例,对于固定大小的箱直方图在中值最初被确定为约40ms之后,该中值已转变为50ms。因此,在一些实施例中,该处理为下一个可变大小的箱直方图创建图16中所示的箱。在图16中,下一个可变箱大小的直方图具有(1)十个桶,(2)以22.5ms为中心,宽度为22.5ms的第一个桶,(3)分别以50、60、70和80ms为中心,每个宽度为10ms的接下来的四个桶,以及(4)分别以86.5、89.5、92.5、95.5和98.5ms为中心,每个宽度为3ms的最后五个桶。同样,在图16中,这些桶由其最左侧和最右侧值识别,以便简化说明。
111.在740处,如果处理700改变了箱结构,那么处理700将用于下一个可变大小的直方图的新箱结构提供给其它服务引擎,或者通知服务引擎其尚未改变箱结构。在740之后,处理返回到730以生成下一个可变大小的箱直方图。该处理在730

740之间循环,直到外部事件(例如,来自服务器的指令或其服务引擎的操作终止)导致处理700关闭。
112.在其它实施例中,主服务引擎的处理700不同地动态创建其可变大小的箱直方图。例如,在生成(在705处)其iv第一直方图之后,该处理从iv第一直方图定义(在710处)svr第二直方图,而不是从iv第一直方图生成固定大小的箱直方图。图17图示了处理700如何基于所生成的iv第一直方图为svr第二直方图定义的示例。如图所示,图17中的svr第二直方图具有(1)基于iv第一直方图的底部25%的样本的一个箱,(2)用于iv第一直方图的下一个25%的样本的四个箱,(3)用于iv第一直方图的下一个40%的样本的七个箱,以及(4)用于iv第一直方图的最后10%的样本的另外九个箱。
113.基于它处理的下一个样本集合,该方法然后处理接下来的1000个样本以生成(在715处)svr第二直方图,并使用该直方图定义(在720处)用于svr第三直方图的箱。图18图示了所生成的svr第二直方图1800的示例。如图所示,该直方图显示中值已从50ms移动到42ms。图17和图18中所示的途径具有防止该方法基于在第一直方图中识别出的离群值样本值为其第二直方图创建太多箱的优点。
114.图19图示了由另一个服务引擎执行的处理1900,该另一个服务引擎基于其从图7的处理700接收到的箱大小/位置属性来生成可变大小的箱直方图。该另一个服务引擎生成其可变大小的箱直方图,以总结该服务引擎在其对它接收到的分组执行服务时针对特定操作度量收集的度量值。与处理700不同,处理1900不会通过首先生成iv直方图,然后为其收集的样本生成固定大小的箱直方图来为其可变大小的箱直方图生成箱属性。
115.代替地,由于处理700被指定为所有服务引擎都针对其生成可变大小的箱直方图的特定操作度量的主处理,因此它从处理700获取其可变大小的箱直方图的箱属性。在一些实施例中,当它等待从处理700获取箱属性时,执行处理1900的服务引擎继续其样本度量值的收集,使得它可以使用这些值和在它开始生成该直方图之后收集的其它样本值来生成其可变大小的箱直方图。
116.如图所示,处理1900最初从图7的处理700接收(在1905处)箱大小/位置属性。基于这些接收到的箱属性,处理1900然后通过处理它在一段时间内针对特定操作度量识别出的样本值集合来生成(在1910处)可变大小的直方图。该直方图指定了该处理已针对其每个箱分析的样本数。在一些实施例中,处理1900通过逐步执行样本值并且对于每个样本值,识别与样本值对应的直方图箱(即,指定包含处理的样本值的值范围的箱)并将已识别箱的样本计数递增1来生成可变大小的箱直方图。
117.处理1900生成(在1910处)可变大小的箱直方图,直到它确定它应该将该直方图报告给服务器集合为止。在不同的实施例中,该处理基于不同的标准做出该确定。例如,在一些实施例中,该处理仅针对一定数量的样本生成可变大小的箱直方图,而在其它实施例中,它仅针对一定时间段生成该直方图。
118.一旦处理确定(在1910处)它应该向服务器集合提供可变大小的箱直方图,那么处理就通过网络将该直方图传送(在1915处)到服务器以进行分析,以便评估数据中心中的资源集合的操作。例如,当处理1900由图8的负载均衡器805执行时,负载均衡器将它识别出的其时延直方图转发给控制器集合875,控制器集合875然后将该直方图与由在其它主机计算机810上执行的其它负载均衡器805针对转发到应用集群820的分组识别出的时延生成的可变大小的箱直方图进行聚合。
119.在1915之后,处理1900转换到1920,其中它等待直到它从处理700接收到它应该生成的下一个可变大小的箱直方图的箱属性,或使用先前箱属性的方向。在从处理700接收到(在1920处)该输入后,处理1900转换回1910以针对下一时间段生成其下一可变大小的直方图。处理1900循环执行其操作,直到外部事件(例如,来自服务器的指令或其服务引擎的操作终止)导致处理1900关闭。
120.图20图示了在一些实施例中由控制器针对由服务引擎集合针对特定操作度量报告的可变大小的箱直方图集合执行的处理2000。这种操作量度的一个示例是由负载均衡器集合转发给应用集群的分组所经历的时延。在一些实施例中,控制器迭代地(例如,周期性地)执行处理2000。如图所示,处理2000最初从几个服务引擎收集(在2005处)可变大小的箱直方图。在一些实施例中,处理2000指示服务引擎提供其直方图,而在其它实施例中,服务引擎以设定的间隔将其直方图提供给控制器。
121.如上所述,一些实施例使用一个服务引擎作为主服务引擎,其为所有要使用的服务引擎计算可变大小的直方图的箱属性。在这些实施例中,这确保了收集到的可变大小的直方图都具有相同的箱属性,从而简化了控制器对这些直方图的聚合。在一些实施例中,在其它服务引擎有机会生成其可变大小的直方图之前,主服务引擎将其初始可变大小的直方图提供给控制器。
122.在这些实施例中的一些实施例中,控制器使用该提供的直方图作为用于生成初始报告的初始数据集合,而在其它实施例中,控制器存储该数据集合以供以后与来自主服务引擎和其它服务引擎的其它报告的直方图数据一起使用。在还有的其它实施例中,主服务引擎生成其初始可变大小的箱直方图的持续时间长于其它服务引擎的持续时间,使得主服务引擎和其它服务引擎可以同时向控制器报告其初始直方图。
123.在收集(在2005处)直方图之后,处理2000聚合数据(在2005处)以获得针对在最后的时间段内所有报告服务引擎的操作的较大直方图,用于在最近时间段内所有报告服务引擎的操作。图21图示了控制器875,其将三个报告的直方图2105、2110和2115的数据相加以获得聚合直方图2120。如图所示,在一些实施例中,控制器简单地将来自每个直方图中的所有对应箱的样本计数相加,以产生针对聚合直方图中的每个箱的聚合样本计数。因为所有报告直方图都具有相同的箱结构,因此可以实现这一点。
124.在一些实施例中,处理2000还将其生成的聚合直方图与在其先前迭代中的先前聚合直方图进行组合。为此,在一些实施例中,处理2000使用加权和途径,该途径考虑了先前
的聚合直方图,其权重低于当前聚合直方图。这种加权途径还考虑了箱随时间的移动。
125.接下来,在2015处,控制器将聚合的直方图存储在数据存储装置中(例如,数据库中),网络管理员可以访问该数据存储装置以获得关于收集到的操作度量的信息。例如,在一些实施例中,一个或多个服务器可以访问该数据以提供聚合的直方图的图形显示,或者以表格或文本形式提供该信息,例如,提供50%、90%和99%的处理的分组的时延值。这些服务器通过其用户界面(例如,管理门户)或通过其应用编程接口(api)调用提供对该数据的访问。
126.在一些实施例中,控制器处理2000还分析(在2020处)其聚合直方图以及由不同服务引擎报告的不同直方图,以便执行某些动作。在一些实施例中,在2020处分析的聚合直方图是该处理基于在该迭代中收集的直方图针对其当前迭代生成的聚合直方图,而在其它实施例中,分析的聚合直方图是处理2000的整体几次迭代生成的直方图。类似地,在一些实施例中,对不同报告的直方图的处理分析仅限于该处理的当前迭代,而在其它实施例中,它考虑了每个服务引擎在处理2000的整个几个周期上报告的几个报告的直方图的分析。
127.例如,在分析来自非主服务引擎的直方图数据之后,在一些实施例中,处理2000向主服务引擎提供(在2025处)一些该直方图数据,使得主服务引擎可以分析该数据以在必要时调整其箱属性(例如,箱大小和/或位置)。可替代地或相结合地,在分析来自非主服务引擎的直方图数据之后,在一些实施例中,处理2000指示(在2030处)所有服务引擎(包括主服务引擎)使用新的箱结构。在一些实施例中,当处理2000检测到由主服务引擎定义的箱结构不适合其它服务引擎(例如,超过由其它服务引擎收集的数据的阈值百分比)时,处理2000向所有服务引擎提供新的箱结构。在其它实施例中,处理2000不执行操作2025和2030中的任一个或两个。
128.一些实施例不具有一个服务引擎用作为由所有服务引擎生成的可变大小的箱直方图定义箱结构的主服务引擎,而是改为使用控制器来定义该箱结构。在这些实施例中的一些实施例中,控制器集群从服务引擎收集iv直方图或固定大小的箱直方图,并将这些直方图聚合为聚合直方图。基于这种聚合,控制器集群为可变大小的箱直方图生成箱属性,并将此箱结构分发给服务引擎以用于生成其可变大小的箱直方图。
129.基于对聚合直方图的分析,在一些实施例中,处理2000还可以向主机计算机提供(在2035处)新的配置数据,以便修改服务引擎和/或应用集群的操作来对一个或多个操作度量进行改进,包括服务引擎为其生成直方图的特定度量。例如,通过新的配置数据,控制器处理2000可以在应用集群中部署附加的应用实例(例如,附加的应用vm或箱)和/或附加的服务引擎(例如,服务vm等)。
130.相结合地或可替代地,新的配置数据可以指导一个或多个主机计算机向应用集群和/或服务引擎分配更多资源(例如,存储器、处理器核心、网络带宽等)。而且,在一些实施例中,新的配置数据可以配置数据中心中的其它元素,例如,配置前端负载均衡器以将流不同地分发给不同的服务引擎。在其它实施例中,控制器处理2000不执行操作2020

2035中的一个或多个。
131.虽然已经参考许多具体细节描述了本发明,但是本领域的普通技术人员将认识到,在不脱离本发明的精神的情况下,本发明可以以其它具体形式来实施。例如,虽然以上提供了用于服务引擎跟踪时延的几个示例,但是本领域的普通技术人员将认识到,一些实
施例被服务引擎或网络中的其它转发或计算元件用来跟踪数据中心中的其它操作度量。因此,本领域的普通技术人员将理解,本发明不受前述说明性细节的限制,而是由所附权利要求书限定。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1