设备因子图可编程合成机制

文档序号:1661766 发布日期:2019-12-27 浏览:24次 >En<

阅读说明:本技术 设备因子图可编程合成机制 (Programmable synthesis mechanism for device factor graph ) 是由 李栗 任达齐 于 2018-05-15 设计创作,主要内容包括:一种部署云应用的计算机实现方法包括:一个或多个处理器访问第一因子图,其中,所述第一因子表示所述云应用的第一组件,所述第一因子图包括第一组节点;访问第二因子图,其中,所述第二因子图表示所述云应用的第二组件,所述第二因子图包括第二组节点;确定第三组节点,所述第三组节点存在于所述第一组节点和所述第二组节点中;将所述第一因子图和所述第二因子图结合成第三因子图,其中,所述结合包括将所述第一因子图和所述第二因子图中的所述第三组节点归一化;基于所述第三因子图,选择一个或多个计算资源;将所述云应用中的至少一部分部署到所选择的计算资源。(A computer-implemented method of deploying a cloud application, comprising: one or more processors accessing a first factor graph, wherein the first factor represents a first component of the cloud application, the first factor graph comprising a first set of nodes; accessing a second factor graph, wherein the second factor graph represents a second component of the cloud application, the second factor graph comprising a second set of nodes; determining a third set of nodes, the third set of nodes being present in the first set of nodes and the second set of nodes; combining the first factor graph and the second factor graph into a third factor graph, wherein the combining comprises normalizing the third set of nodes in the first factor graph and the second factor graph; selecting one or more computing resources based on the third factor graph; deploying at least a portion of the cloud application to the selected computing resource.)

设备因子图可编程合成机制

相关申请案交叉申请

本申请要求于2017年5月16日递交的发明名称为“因子图可编程合成机制”的第15/596,787号美国专利申请案的在先申请优先权,该在先申请的内容以引入的方式并入本文。

技术领域

本发明涉及机器学习,并且在一个特定实施例中,涉及统计机器学习和概率推理中的因子图可编程合成机制。

背景技术

离散因子图是有向无环二分图,表示联合概率分布的因子分解。所述离散因子图的节点是具有离散值(例如布尔值、范畴、区间或整数)的随机变量。所述离散因子图的边缘表示所述连接随机变量之间的因果关系。所述离散因子图的因子定义具有矩阵的随机变量的条件概率分布。

用于应用的现实因子图可能有从不同源收集信息的数百个节点。对于与所述不同源的每个源对应的每组节点,可以为这些节点创建子图,但是很难将所述单独的子图组合成相干和无冲突的因子图。

发明内容

现描述各种示例从而以简化的形式引入概念的选择,这些概念将在以下

具体实施方式

中进行进一步的描述。本发明内容的目的不在于识别权利要求书保护的主题的关键或必要特征,也不在于限制权利要求书保护的主题的范围。

根据本发明的一方面,一种部署云应用的计算机实现方法包括:一个或多个处理器访问第一因子图,其中,所述第一因子表示所述云应用的第一组件,所述第一因子图包括第一组节点;所述一个或多个处理器访问第二因子图,其中,所述第二因子图表示所述云应用的第二组件,所述第二因子图包括第二组节点;所述一个或多个处理器确定第三组节点,其中,所述第三组节点存在于所述第一组节点和所述第二组节点中;所述一个或多个处理器将所述第一因子图和所述第二因子图结合成第三因子图,其中,所述结合包括将所述第一因子图和所述第二因子图中的所述第三组节点归一化;基于所述第三因子图,所述一个或多个处理器选择一个或多个计算资源;所述一个或多个处理器将所述云应用中的至少一部分部署到所选择的计算资源。

可选地,在上述任一方面中,所述选择所述一个或多个计算资源包括选择多个数据中心的数据中心。

可选地,在上述任一方面中,所述选择一个或多个计算资源包括选择数据中心的一个或多个服务器。

可选地,在上述任一方面中,所述部署响应确定分配给所述云应用的资源与所述云应用的需求不匹配。

可选地,在上述任一方面中,所述云应用运行在多个数据中心的第一数据中心中;所述选择所述一个或多个计算资源包括模拟将所述云应用部署到所述多个数据中心中的一个或多个数据中心;所述将所述云应用的至少所述一部分部署到所选择的计算资源包括将所述云应用的至少所述一部分部署到所述多个数据中心的第二数据中心。

可选地,在上述任一方面中,所述第二因子图还包括一组因子;所述第三组节点不包括与所述一组因子中的多于一个因子相关联的节点。

可选地,在上述任一方面中,所述方法还包括:对于所述第三组节点中的每个节点对:确定所述节点对的第一节点是否是所述节点对的第二节点的所述第二因子图中的祖先节点;确定所述节点对的所述第二节点是否是所述节点对的第一节点的所述第二因子图中的祖先节点;如果所述第一节点和所述第二节点分别是所述第二因子图中另一节点的祖先节点,则从所述第三组节点中删除所述第一节点和所述第二节点。

可选地,在上述任一方面中,所述方面的进一步实现方式提供了所述将所述第一因子图和所述第二因子图结合成所述第三因子图中还包括:将所述第三因子图创建为空因子图;对于所述第三组节点中的每个节点:从所述第二因子图中删除所述节点的因子父节点;将所述节点复制到所述第三因子图中;将所述复制节点的父级设置为所述第一因子图中的所述节点的父级。

可选地,在上述任一方面中,所述方面的进一步实现方式提供了所述将所述第一因子图和所述第二因子图结合成所述第三因子图中还包括:对于所述第三组节点中的每个节点:将所述复制节点设置为所述第一因子图中的所述节点的子级的父级和所述第二因子图中的所述节点的子级。

可选地,在上述任一方面中,所述方面的进一步实现方式提供了所述将所述第一因子图和所述第二因子图结合成所述第三因子图中还包括:对于所述第一组节点中不在所述第三组节点中的每个节点:将所述节点从所述第一因子图复制到所述第三因子图中;对于所述第二组节点中不在所述第三组节点中的每个节点:将所述节点从所述第二因子图复制到所述第三因子图中。

可选地,在上述任一方面中,所述方面的进一步实现方式提供了所述第三因子图包括一组因子;所述方法还包括:识别第一因子、第一组边缘以及第四组节点,所述第一因子位于所述第三因子图中,其中,所述第一组边缘包括连接到所述第三因子图中的所述第一因子的所有边缘,所述第四组节点包括通过边缘连接到所述第三因子图中的所述第一因子的所有节点;识别第二因子、第二组边缘以及第五组节点,其中,所述第二因子位于所述第三因子图中,所述第二组边缘包括连接到所述第三因子图中的所述第二因子的所有边缘,所述第五组节点包括通过边缘连接到所述第三因子图中的所述第二因子的所有节点;从所述第三因子图中删除所述第一因子和所述第一组边缘;从所述第三因子图中删除所述第二因子和所述第二组边缘;基于所述第一因子和所述第二因子,确定第三因子;将所述第三因子***所述第三因子图,其中所述边缘将所述第三因子连接到所述第四组节点和所述第五组节点。

可选地,在上述任一方面中,所述方面的进一步实现方式提供了节点位于所述第四组节点和所述第五组节点中;将所述节点连接到所述第一因子的所述边缘从所述节点定向到所述第一因子;将所述节点连接到所述第二因子的所述边缘从所述第二因子定向到所述节点;将所述节点连接到所述第三因子的所述边缘从所述第三因子定向到所述节点。

可选地,在上述任一方面中,所述方面的进一步实现方式提供了所述数据中心是多个数据中心中的数据中心;所述方法还包括:访问所述多个数据中心中的每个数据中心的特征;所述数据中心的所述选择还基于所述多个数据中心中的每一个数据中心的特征。

根据本发明的一方面,一种合成服务器包括存储器,包含指令;一个或多个处理器,与所述存储器通信,其中所述一个或多个处理器执行所述指令完成以下操作:访问第一因子图,其中,所述第一因子表示云应用的第一组件,所述第一因子图包括第一组节点;访问第二因子图,其中,所述第二因子图表示所述云应用的第二组件,所述第二因子图包括第二组节点;确定所述第三组节点存在于所述第一组节点和所述第二组节点中;将所述第一因子图和所述第二因子图结合成第三因子图,其中,所述结合包括将所述第一因子图和所述第二因子图中的所述第三组节点归一化;基于所述第三因子图,选择一个或多个计算资源;将所述云应用中的至少一部分部署到所选择的计算资源。

可选地,在上述任一方面中,所述选择所述一个或多个计算资源包括选择多个数据中心的数据中心。

可选地,在上述任一方面中,所述选择一个或多个计算资源包括选择数据中心的一个或多个服务器。

可选地,在上述任一方面中,所述部署响应确定分配给所述云应用的资源与所述云应用的需求不匹配。

可选地,在上述任一方面中,所述云应用运行在多个数据中心的第一数据中心中;所述选择所述一个或多个计算资源包括模拟将所述云应用部署到所述多个数据中心中的一个或多个数据中心;所述将所述云应用的至少所述一部分部署到所选择的计算资源包括将所述云应用的至少所述一部分部署到所述多个数据中心的第二数据中心。

可选地,在上述任一方面中,所述方面的进一步实现方式提供了所述第二因子图还包括一组因子;所述第三组节点不包括与所述一组因子中的多于一个因子相关联的节点。

可选地,在上述任一方面中,所述方面的进一步实现方式提供了所述处理器还执行:对于所述第三组节点中的每个节点对:确定所述节点对的第一节点是否是所述节点对的第二节点的所述第二因子图中的祖先节点;确定所述节点对的所述第二节点是否是所述节点对的第一节点的所述第二因子图中的祖先节点;如果所述第一节点和所述第二节点分别是所述第二因子图中另一节点的祖先节点,则从所述第三组节点中删除所述第一节点和所述第二节点。

可选地,在上述任一方面中,所述方面的进一步实现方式提供了所述将所述第一因子图和所述第二因子图结合成所述第三因子图中还包括:将所述第三因子图创建为空因子图;对于所述第三组节点中的每个节点:从所述第二因子图中删除所述节点的因子父节点;将所述节点复制到所述第三因子图中;将所述复制节点的父级设置为所述第一因子图中的所述节点的父级。

可选地,在上述任一方面中,所述方面的进一步实现方式提供了所述将所述第一因子图和所述第二因子图结合成所述第三因子图中还包括:对于所述第三组节点中的每个节点:将所述复制节点设置为所述第一因子图中的所述节点的子级的父级和所述第二因子图中的所述节点的子级。

可选地,在上述任一方面中,所述方面的进一步实现方式提供了所述第二因子图还包括一组因子;所述第三组节点不包括与所述一组因子中的多于一个因子相关联的节点。

可选地,在上述任一方面中,所述方面的进一步实现方式提供了所述处理器还执行:对于所述第三组节点中的每个节点对:确定所述节点对的第一节点是否是所述节点对的第二节点的所述第二因子图中的祖先节点;确定所述节点对的所述第二节点是否是所述节点对的第一节点的所述第二因子图中的祖先节点;如果所述第一节点和所述第二节点分别是所述第二因子图中另一节点的祖先节点,则从所述第三组节点中删除所述第一节点和所述第二节点。

根据本发明的一方面,提供了一种非瞬时性计算机可读介质,其存储用于部署云应用的计算机指令,当计算机指令由一个或多个处理器执行时,使所述一个或多个处理器执行以下步骤:访问第一因子图,其中,所述第一因子表示所述云应用的第一组件,所述第一因子图包括第一组节点;访问第二因子图,其中,所述第二因子图表示所述云应用的第二组件,所述第二因子图包括第二组节点;确定所述第三组节点存在于所述第一组节点和所述第二组节点中;将所述第一因子图和所述第二因子图结合成第三因子图,其中,所述结合包括将所述第一因子图和所述第二因子图中的所述第三组节点归一化;基于所述第三因子图,选择一个或多个计算资源;将所述云应用中的至少一部分部署到所选择的计算资源。

在不脱离本发明范围的前提下,任何一个前述示例都可以与任何一个或多个其它前述示例结合以创建新的示例。

附图说明

图1是根据一些示例性实施例的因子图的框图;

图2是根据一些示例性实施例的适合因子图可编程合成的数据流的框图;

图3是根据一些示例性实施例的因子图合成的框图;

图4是根据一些示例性实施例的因子图的框图;

图5是根据一些示例性实施例的因子图的框图;

图6是根据一些示例性实施例的因子图的框图;

图7A是根据一些示例性实施例的待组合的因子图的框图;

图7B是根据一些示例性实施例的组合后的因子图的框图;

图8A是根据一些示例性实施例的待组合的因子图的框图;

图8B是根据一些示例性实施例的组合后的因子图的框图;

图9是根据一些示例性实施例的用于实现算法和执行方法的客户端和服务器的电路的框图;

图10是根据一些示例性实施例的因子图可编程合成机制的方法的流程图;

图11是根据一些示例性实施例的用于识别一组接口节点的方法的流程图;

图12是根据一些示例性实施例的因子图可编程合成机制的方法的流程图;

图13是根据一些示例性实施例的因子图可编程合成机制的方法的流程图;

图14是根据一些示例性实施例的因子图可编程合成机制的方法的流程图;

图15是根据一些示例性实施例的将云应用部署到计算资源的方法的流程图;

图16是根据一些示例性实施例的将云应用部署到数据中心的方法的流程图;

图17是根据一些示例性实施例的将云应用部署到数据中心服务器的方法的流程图;

图18是根据一些示例性实施例的为数据中心中的云应用重新分配资源的方法的流程图。

具体实施方式

以下结合附图进行详细描述,所述附图是描述的一部分,并通过图解说明的方式示出可以实施本发明的具体实施例。这些实施例将充分详细描述使本领域技术人员能够实施本发明主题而且应该明白的是可以使用其它实施例并且在不脱离本发明的范围的情况下可以做出结构上、逻辑上、电学上的改变。因此,以下描述的示例性实施例并不当作限定,本发明的范围由所附权利要求书界定。

本文描述的函数或算法可以在一实施例中的软件中实施。该软件可包含计算机可执行指令,这些计算机可执行指令存储在计算机可读介质上或者计算机可读存储设备上,如一个或多个非瞬时性存储器或其它类型的本地或联网的硬件存储设备。该软件可以在数字信号处理器、专用集成电路(application-specific integrated circuit,简称ASIC)、可编程数据平面芯片、现场可编程门阵列(field-programmable gate array,简称FPGA)、微处理器或交换机、服务器或其它计算机系统等计算机系统上运行的其它类型处理器上执行,从而将这些计算机系统转换成一个专门编程的机器。

云应用通常由许多分布式软件组件组成,这些组件需要各种计算资源并通过数据中心网络进行通信。现有工具仅限于分析和预测单个组件的资源需求,而不能很好地扩展到预测整个云应用的需求。计算资源是执行计算机程序可能使用的任何资源。示例性计算资源包括但不限于:中央处理器(central processing unit,简称CPU)、处理器内核、虚拟内存、物理内存、存储器、网络带宽、文件句柄、网络套接字、锁、缓存内存和随机数生成器。云应用的组件是一个进程、进程组或两个或两个以上进程或进程组之间的通信。示例组件包括但不限于:虚拟机、应用实例以及两个应用之间或多个应用之间的网络连接。

单个组件的资源需求使用因子图建模。使用本文所述的因子图合成机制,合成服务器组合组件因子图以生成代表整个云应用的复合因子图。使用所述复合因子图,可以分配支持所述云应用的所述数据中心的计算资源。所述云应用部署到所述分配的计算资源。部署云应用是指安装和激活所述云应用的每个组件的过程。例如,将每个组件的一个或多个可执行文件复制到分配给所述组件的内存或存储设备,并使用一个或多个分配的CPU来执行所述组件。

图1是根据一些示例性实施例的因子图100的框图。所述因子图100包括因子110、120、130、140和150以及节点160、170、180、190和195。因子和节点通过定向边缘连接,因此所述因子110-150中的每个节点仅具有节点父级,而所述节点160-195中的每个节点仅具有因子父级。在所述因子图100中,所述节点160-195中的每个节点都是布尔值。因此,存在或不存在与所述节点中的每个节点对应的事件。所述盗窃节点160为真的概率由所述独立因子110指示。所述地震节点170为真的概率由所述独立因子120指示。所述警报节点180为真的概率由所述因子130基于所述盗窃节点160和所述地震节点170的值来确定。所述新闻节点190为真的概率由所述因子140基于所述地震节点170的值来确定。所述犬吠节点195为真的概率由所述因子150基于所述警报节点180的值来确定。

在一些示例性实施例中,所述因子110-150中的每个因子使用每个子节点的m×n矩阵定义其子节点的条件概率分布。所述矩阵包括所述子节点的每个可能值的一列和所述父节点的值的每个组合的一行。当没有父节点时,所述矩阵将减少到单行,所述子节点的值的概率分布具有对应于每个列的值。因此,对应于所述因子130的矩阵将具有四行(一行用于所述盗窃节点160和所述地震节点170的真和假的每个组合)和两列(一列用于真,一列用于假)。所述子节点为真的概率是所述矩阵中与所述矩阵的父节点的状态对应的元素的值,还是真的输出值。例如,如果所述因子130的矩阵为则:首行对应于所述盗窃节点160和所述地震节点170均为真;第二行对应于所述盗窃节点160为真,所述地震节点170为假;第三行对应于所述盗窃节点160为假,所述地震节点170为真;末行对应于所述盗窃节点160和所述地震节点170均为假;左列对应于真的值;右列对应于假的值;所述盗窃节点160为假,所述地震节点170为真,则所述警报节点180为真的概率为0.4。

在一些示例性实施例中,所述因子110-150、所述因子图100的结构或两者均从训练数据中学习。使用所述因子图100,可以精确或近似估计任意随机变量子集的边缘概率和条件概率。

图2是根据一些示例性实施例的适合因子图可编程合成的数据流200的框图。所述数据流200中显示的是模板210和因子图存储库220,它们用作合成转换器230的输入。所述合成转换器230生成组件因子图240和合成脚本250,它们是所述合成服务器260的输入。所述合成服务器260生成复合因子图270,它提供给所述因子图推理引擎280。所述因子图推理引擎280生成资源分析和预测290。

所述模板210描述分布式云应用的组件之间的关系。所述模板210可以是云计算拓扑与编排规范(topology and orchestration specification for cloud computing,简称TOSCA)模板,也可以是热编排(heat orchestration,简称Heat)模板。示例TOSCA关系为“进程X包含进程Y”和“进程X连接进程Y”。

所述模板210中的每个组件和关系可以对应于所述因子图存储库220中的组件因子图。例如,u1可以是进程X的组件因子图,u2可以是进程Y的组件因子图,u3可以是包含关系的组件因子图,u4可以是网络连接关系的组件因子图。

所述合成转换器230根据所述模板210中描述的关系,从所述因子图存储库220中选择适当的因子图(例如,图u1-u4)。所选因子图将生成为组件因子图240。所述合成转换器230还生成所述合成脚本250。所述合成脚本250定义与所述模板210描述的组件和资源之间的关系相对应的因子图之间的关系。

在一示例性实施例中,所述组合脚本250使用以下伪代码形成:

“进程X包含进程Y”的示例合成脚本是:

g1=Graph(‘u1’)

g2=Graph(‘u2’)

g3=Graph(‘u3’)

c=Composer()

g0=c.join(g1,g3,g2)

“进程X连接进程Y”的示例合成脚本是:

g1=Graph(‘u1’)

g2=Graph(‘u2’)

g4=Graph(‘u4’)

c=Composer()

g0=c.join(g1,g4,g2)

所述合成服务器260使用所述合成脚本250组合所述组件因子图240以生成所述复合因子图270。与分别表示单个组件或关系的组件因子图240相比,所述复合因子图270表示所述模板210的整个分布式云应用。

所述合成服务器260可提供应用编程接口(application programminginterface,简称API),如下表所述。“OOP”是指面向对象的编程,例如Java或C++。“REST”是指表示状态传输,通常与超文本传输协议(hypertext transport protocol,简称HTTP)一起使用。

所述Composer可支持以下运算符:

所述因子图推理引擎280基于资源可用性信息和复合因子图270生成资源分析和预测290。

所述合成转换器230、合成服务器260和因子图推理引擎280可以分别在计算设备900中实现,如下面结合图9所述。

图3是根据一些示例性实施例的因子图330、332和334的合成的框图300。所述因子图330包括因子302、304和306以及节点308、310和312。所述因子图332包括因子314和316以及节点318和320。所述因子图334包括因子322和324以及节点326和328。所述因子图330和332通过结合操作336进行组合,形成因子图338。所述因子图338和334通过结合操作340进行组合,形成因子图342。

在图3中,所述因子图330(标记为“G1”)、所述因子图332(标记为“G2”)和所述因子图334(标记为“G3”)是组件因子图。所述因子图338(标记为“G12”)和所述因子图342(标记为“G0”)是复合因子图。所述复合因子图可由执行所述合成脚本250的所述合成服务器260生成,如上文结合图2所述。

所述因子图330和332之间的接口节点是所述节点312和318,均标记为“警报”。因此,所述结合操作336将创建所述复合因子图338,其中包括合并的节点312和318以及合并的因子306和314。

所述因子图338和334之间的接口节点是所述节点310和326,均标记为“地震”。因此,所述结合操作340将创建所述复合因子图342,其中包括合并的节点326和310以及合并的因子322和304。所得到的因子图342在图1中示出为所述因子图100。

示例合成脚本如下,其中[A]指标记为“警报”的节点,[Q]指标记为“地震”的节点。

g1=Graph(‘…/factor-graphs/1’)

g2=Graph(‘…/factor-graphs/2’)

g3=Graph(‘…/factor-graphs/3’)

c=Composer()

g12=C.join(g1,g2,[A])

g0=C.join(g12,g3,[Q])

图4是根据一些示例性实施例的因子图400的框图。所述因子图400包括因子405、410、415和420以及节点425、430、435、440、445、450和455。所述因子图400可用作进程或线程的组件因子图,用于建模所述工作负荷节点425、所述机器容量节点430、所述进程或线程优先节点435之间的概率因果关系,以及由此产生的CPU时间、内存、存储器和网络带宽的资源分配(由所述节点440-455表示)。

图5是根据一些示例性实施例的因子图500的框图。所述因子图500包括因子510、520、530、540和550以及节点560、570、580、590和595。所述因子图500可用作用于包含关系的组件因子图,该包含关系用于对可用资源(由节点560-590表示)和可用容量(由节点595表示)之间的概率因果关系进行建模。示例包含关系包括包含虚拟机的物理机器、包含Docker容器的虚拟机、包含进程的Docker容器或其任何适当组合。Docker容器是一个可执行的软件包,包括软件应用以及所述软件应用使用的支持库和数据。例如,所述Docker容器可包括运行时库、系统工具、系统库和设置数据库。

在不同的示例性实施例中,对不同的资源建模。例如,在图5中,所述节点560-590对CPU、内存、存储器和网络资源建模。附加的或替代的资源包括丢包频率、连接错误率、消息传递接口(message passing interface,简称MPI)传输速度、数据吞吐量、传输控制协议(transmission control protocol,简称TCP)传输速度、用户数据报协议(user datagramprotocol,简称UDP)传输速度、互联网协议(Internet protocol,简称IP)传输速度、CPU负载百分比、实例效率、每秒基准操作、基准效率、平均内存访问时间、平均内存放置时间、平均内存获取时间、内存速度、随机内存更新速率、节点内内存访问扩展、增加工作负荷下内存性能下降、Unix基准实用程序评分、存储器一字节数据访问速率、基准输入/输出(input/output,简称I/O)操作速度、blob I/O操作速度、表I/O操作速度、队列I/O操作速度、I/O访问重试速率、基准I/O速度、作业计算时间、作业通信时间或其任何合适组合。

图6是根据一些示例性实施例的因子图600的框图。所述因子图600包括因子610、620和630以及节点640、650和660。所述因子图600可用作用于网络连接的组成因子图,该网络连接用于对网络需求(由节点640表示)、可用带宽(由所述节点650表示)和工作负荷(由所述节点660表示)之间的概率因果关系进行建模。

图7A是根据一些示例性实施例的待组合的因子图的框图700A。图7A示出了因子图701、713和724。所述因子图701和724是所述因子图400的副本,而所述因子图713是所述因子图500的副本。所述因子图701包括因子702、703、704和705以及节点706、707、708、709、710、711和712。所述因子图713包括因子714、715、716、717和718以及节点719、720、721、722和723。所述因子图724包括因子725、726、727和728以及节点729、730、731、732、733、734和735。所述因子图701和724中的因子对应于所述因子405-420,所述因子图701和724中的节点对应于所述节点425-455,其中每个节点均在上文中结合图4进行了描述。所述因子图713中的因子对应于所述因子510-550,而所述因子图713中的节点对应于所述节点560-595,其中每个节点均在上文中结合图5进行了描述。如图7A所示,所述因子图701的所述节点709-712与所述因子图713的所述节点719-722对齐,并具有相同的标签。此外,所述因子图713的所述节点723与所述下因子图724的所述节点730对齐,并具有相同的标签。因此,所述因子图701的所述节点709-712和所述因子图713的所述节点719-722可以是用于结合操作的接口节点。同样,所述因子图713的所述节点723和所述下因子图724的所述节点730可以是用于结合操作的接口节点。

图7B是根据一些示例性实施例的组合后的因子图的框图700B。所述框图700B示出了由图7A中所示的因子图组合而成的复合因子图。所述复合因子图包括因子736、737、738、739、740、741、742和743以及节点744、745、746、747、748、749、750、751、752、753、754、755、756和757。所述节点744-746对应于图7A的所述因子图701中的所述节点706-708。所述因子736-738的值与图7A的所述因子图701的所述因子702-704的值相同。所述节点747-750由图7A的所述因子图701的所述节点709-712与图7A的所述因子图713的所述节点719-722合并而成。所述节点752产生于图7A的所述因子图713的所述节点723与图7A的所述下因子图724的所述节点730合并而成。其余节点751和753-757对应于图7A的所述因子图724中的节点729和731-735。

在一些示例性实施例中,图7A的所述因子图701表示第一进程(例如,Docker容器),图7A的所述因子图713表示包含关系,图7A的所述因子图724表示第二进程(例如,虚拟机)。因此,图7B的所述复合因子图表示所述第一进程,包括其包含的第二进程的详细信息。

图8A是根据一些示例性实施例的待组合的因子图的框图800A。图8A示出了因子图801、813和820。所述因子图801和820是所述因子图400的副本,而所述因子图813是所述因子图600的副本。所述因子图801包括因子802、803、804和805以及节点806、807、808、809、810、811和812。所述因子图813包括因子814、815和816以及节点817、818和819。所述因子图820包括因子821、822、823和824以及节点825、826、827、828、829、830和831。所述因子图801和820中的因子对应于所述因子405-420,所述因子图801和820中的节点对应于所述节点425-455,其中每个节点均在上文中结合图4进行了描述。所述因子图813中的因子对应于所述因子610-630,而所述因子图813中的节点对应于所述节点640-660,其中每个节点均在上文中结合图6进行了描述。如图8A所示,所述因子图801的所述节点812与所述因子图813的所述节点817具有相同的标签。此外,所述因子图813的所述节点819与所述因子图820的所述节点825具有相同的标签。因此,所述因子图800的所述节点812和所述因子图813的所述节点817可以是用于结合操作的接口节点。同样,所述因子图813的所述节点819和所述因子图820的所述节点825可以是用于结合操作的接口节点。

图8B是根据一些示例性实施例的组合后的因子图的框图800B。所述框图800B示出了由图8A中所示的因子图组合而成的复合因子图。所述复合因子图包括因子832、833、834、835、836、837、838、839和840以及节点841、842、843、844、845、846、847、848、849、850、851、852、853、854和855。所述节点841-846对应于图8A的所述因子图801的所述节点806-811。所述因子832-834的值与图8A的所述因子图801的所述因子802-804的值相同。所述节点847由图8A的所述因子图801的所述节点812与图8A的所述因子图813的所述节点817合并而成。所述节点848对应于图8A的所述因子图813的所述节点818。所述因子836的值与图8A的所述因子图813的所述因子815的值相同。所述节点849由图8A的所述因子图813的所述节点819与图8A的所述因子图820的所述节点825合并而成。所述其余节点850-855对应于图8A的所述因子图820的所述节点826-831。

在一些示例性实施例中,图8A的所述因子图801表示第一进程(例如,Web服务器),图8A的所述因子图813表示连接关系,图8A的所述因子图820表示第二进程(例如,应用服务器)。因此,图8B的复合因子图表示与所述第二进程通信的第一进程。对于具有多个组件和关系的云应用,图7A-8B的合成模式可以根据合成脚本重复多次(例如,图2的所述合成脚本250)。

图9是示出根据示例性实施例所述的用于实现算法和执行方法的电路的框图。不需要在各实施例中使用所有组件。例如,客户端、服务器和基于云的网络资源可以分别使用不同组的组件,或者例如在服务器的情况下,使用较大的存储设备。

计算机900(也称为计算设备900和计算机系统900)形式的一种示例计算设备可以包括处理器905、存储器910、可移动存储器915和不可移动存储器920,它们都通过总线940连接。虽然示例计算设备被图示和描述为所述计算机900,但是计算设备在不同的实施例中可以是不同的形式。例如,所述计算设备的替代设备可以是智能电话、平板电脑、智能卡,或包括与图9所示和所述的相同或相似元件的另一种计算设备。智能手机、平板电脑和智能手表等设备通常统称为“移动设备”或“用户设备”。此外,虽然各种数据存储元件被图示为所述计算机900的一部分,但是所述存储器还可以或者可选地包括通过网络例如互联网可访问的基于云的存储器,或者基于互联网或服务器的存储器。

所述存储器910可以包括易失性存储器945和非易失性存储器950,并且可以存储程序955。所述计算机900可以包括或可以访问计算环境,该计算环境包括各种计算机可读介质,例如所述易失性存储器945、所述非易失性存储器950、所述可移动存储器915和所述不可移动存储器920。计算机存储器包括随机存取存储器(random access memory,简称RAM)、只读存储器(read-only memory,简称ROM)、可擦除可编程只读存储器(erasableprogrammable read only memory,简称EPROM)和电可擦除可编程只读存储器(electrically erasable programmable read-only memory,简称EEPROM)、闪存或其它存储器技术、只读光盘(compact disc read-only memory,简称CD ROM)、数字多功能光盘(digital versatile disc,简称DVD)或其它光盘存储器、盒式磁带、磁带、磁盘存储器或其它磁存储设备,或者任何其它能够存储计算机可读指令的介质。

所述计算机900可以包括或访问包括输入接口925、输出接口930和通信接口935的计算环境。所述输出接口930可以连接或包括也可用作输入设备的显示设备,例如触摸屏。所述输入接口925可以连接到或包括以下一种或多种:触摸屏、触摸板、鼠标、键盘、相机、一个或多个设备专用按钮、集成在所述计算机900内或通过有线或无线数据连接耦合到所述计算机900内的一个或多个传感器,以及其它输入设备。所述计算机900可以使用所述通信接口935在网络环境中运行,以连接到一台或多台远程计算机,例如数据库服务器。所述远程计算机可以包括个人计算机(personal computer,简称PC)、服务器、路由器、网络PC、对等设备或其它公共网络节点等。所述通信接口935可以连接到局域网(local-areanetwork,简称LAN)、广域网(wide-area network,简称WAN)、蜂窝网络、WiFi网络、蓝牙网络或其它网络。

存储在计算机可读介质(例如存储在存储器存储器910中的程序955)上的计算机可读指令可由所述计算机900的所述处理器905执行。硬盘驱动器、CD-ROM和RAM是产品的一些示例,所述产品包括如存储设备的非瞬时性计算机可读介质。术语“计算机可读介质”和“存储设备”不包括载波,只要认为载波过于短暂。“计算机可读非瞬时性介质”包括所有类型的计算机可读介质,包括磁存储介质、光存储介质、闪存介质和固态存储介质。应当理解的是软件可以安装在计算机中并与其一起销售。或者,可以获得该软件并将其加载到计算机中,包括通过物理介质或分配系统获得软件,例如包括从软件创建者拥有的服务器或者从软件创建者未拥有却使用的服务器获得软件。例如,该软件可以存储在服务器上以便通过因特网分发。

程序955示出为包括因子图合成模块960和资源分配模块965。此处所述模块中的任何一个或多个可以使用硬件(例如,机器的处理器、ASIC、FPGA或其任何合适组合)实现。此外,这些模块中的任意两个或更多模块可以组合为单个模块,此处描述的单个模块的功能可以细分到多个模块中。此外,根据各种示例性实施例,此处描述的单个机器、数据库或设备中实现的模块可以分布到多个机器、数据库或设备中。

所述因子图合成模块960用于合成因子图。例如,所述通信接口935可以接收定义组件因子图的数据和包含用于构成所述组件因子图的指令的合成脚本。所述因子图合成模块960根据所述合成脚本从所述组件因子图生成一个或多个复合因子图。

所述资源分配模块965用于在网络计算环境中分配资源。例如,可以将CPU时间、内存、磁盘存储、网络带宽和其它计算资源分配给任务、进程或线程。在一些示例性实施例中,所述资源分配模块965基于因子图(例如,因子图合成模块960生成的一个或多个复合因子图)分配资源。

图10是根据一些示例性实施例的因子图可编程合成机制的方法1000的流程图。所述方法1000包括操作1010、1020、1030和1040。作为示例而非限制,方法1000被描述为由所述计算机900的元件执行,如上文结合图9所述。

在操作1010中,所述因子图合成模块960访问包含第一组节点的第一因子图。例如,可以通过将所述因子图330的表示从所述不可移动存储器920读取到所述存储器910,来访问图G3的所述因子图330。

在操作1020中,所述因子图合成模块960访问包含第二组节点的第二因子图。例如,可以访问图3的所述因子图332。

在操作1030中,所述因子图合成模块960确定所述第一组节点和所述第二组节点中存在的第三组节点。例如,可以将所述第一组节点中的每个节点与所述第二组节点中的每个节点进行比较,以确定所述第一组节点中的节点是否与所述第二组节点中的节点具有相同的标签。如果找到具有匹配标签的节点,则会将具有该标签的节点添加到所述第三组节点。

在操作1040中,所述因子图合成模块960将所述第一因子图和所述第二因子图结合成第三因子图,从而将所述第一因子图中的所述第三组节点与所述过程中的所述第二因子图归一化。例如,可以将图3的所述因子图330和332结合成所述因子图338。所述因子图338包括所述节点308、310和320以及归一化所述节点312和318的节点。

图11是根据一些示例性实施例的用于识别接口节点集的方法1100的流程图。所述方法1100包括操作1110、1120、1130和1140。作为示例而非限制,方法1100被描述为由所述计算机900的元件执行,如上文结合图9所述。

在操作1110中,所述因子图合成模块960将可允许接口节点集与第一因子图的第一组节点之间的交集确定为第三组节点。例如,所述因子图合成模块960可以接收到第一因子图的标识符、第二因子图的标识符以及作为返回所述第一因子图和所述第二因子图之间的接口节点集的函数调用参数的可允许接口节点集,其中所述返回的接口节点集仅限于所述可允许接口节点集中的节点。根据这些输入参数,确定包含所述可允许接口节点集和所述第一因子图的所述第一组节点之间的交集的第三组节点。

在操作1120中,所述因子图合成模块960访问用于第二因子图的第二组节点。例如,用于所述第二因子图的所述第二组节点可作为参数传递给所述因子图合成模块960的函数。

在操作1130中,所述因子图合成模块960在所述第二组节点和所述第三组节点之间的交集上对每个节点进行迭代,如果所述节点在所述第二因子图中具有单个因子父级,则将所述节点添加到一组接口节点。

在操作1140中,所述因子图合成模块960考虑所述一组接口节点中的每个节点对,如果所述第二因子图中的所述一对节点之间存在路径,则从所述一组接口节点中删除所述节点对。这样,当所述第一因子图和所述第二因子图使用所述生成的接口节点集结合时,不会创建环路(其中节点是其本身的直接或间接父级或子级)。在考虑了所述接口节点集中的每个节点对后,其余接口节点集可由所述因子图合成模块960返回。

在一些示例性实施例中,所述方法1100执行查找接口节点的方法。所述方法1100可用作结合操作的一部分,如以下伪代码所述。

如以下伪代码所述,上述方法可用于结合任意数量的因子图:

图12是根据一些示例性实施例的因子图可编程合成机制的方法1200的流程图。所述方法1200包括操作1210和1220。作为示例而非限制,方法1200被描述为由所述计算机900的元件执行,如上文结合图9所述。所述方法1200可以实现选择运算符,其采用三个参数:因子图、因子和映射函数。所述选择运算符可以返回新的因子图。

在操作1210中,所述因子图合成模块960访问因子图、待更新的因子和映射函数。例如,所述因子图、待更新的因子以及所述映射函数可作为参数传递给选择运算符。所述映射函数是将第一矩阵映射到第二矩阵的函数,其中所述两个矩阵具有相同的维度。

在操作1220中,所述因子图合成模块960生成新的因子图,其中包括使用所述映射函数修改的更新因子的副本。例如,所述因子图可以复制到新的因子图中。所述映射函数对所述待更新的复制因子的矩阵和用于替换所述新因子图中因子矩阵的映射函数的输出矩阵执行。例如,对3×3矩阵操作且仅保留主对角线上各项的映射函数如下所示:

图13是根据一些示例性实施例的因子图可编程合成机制的方法1300的流程图。所述方法1300包括操作1310、1320、1330、1340、1350和1360。作为示例而非限制,方法1300被描述为由所述计算机900的元件执行,如上文结合图9所述。所述方法1300可以实现投影运算符,其采用三个参数:因子图、节点和列列表。所述列列表包括至少两列,但是列数比所述节点当前可用的值数少。所述投影运算符可以返回新的因子图,其中节点只能具有与所述列列表中的列对应的值。

在操作1310中,所述因子图合成模块960访问因子图、所述因子图中的节点以及与所述节点关联的因子矩阵的可允许列列表。例如,所述因子图、所述节点和所述列表可作为参数发送给投影运算符。

在操作1320中,所述因子图合成模块960将所述访问的因子图复制到第二因子图中。

所述因子图合成模块960在所述第二因子图中访问所述节点的因子父级(操作1330)。所述因子父级与概率矩阵关联。例如,所述概率矩阵可在所述第二因子图中使用,以根据所述因子父级的节点父级的值来确定所述节点的每个可能值的概率。

在操作1340中,所述因子图合成模块960从所述概率矩阵中删除不在所述可允许列列表中的列。例如,如果所述概率矩阵最初为并且所述可允许列列表为[c1,c2],则生成的概率矩阵不包括第三列:因此,消除了所述节点接受先前由所述第三列表示的值的概率。

在操作1350中,所述因子图合成模块960对所述概率矩阵进行归一化。归一化概率矩阵是矩阵每行中的值之和为1的矩阵。例如,如果所述概率矩阵在删除不在所述可允许列列表中的任何列后为则所述归一化概率矩阵为

在操作1360中,所述因子图合成模块960从所述节点的子因子中删除与所述可允许列列表中的元素不对应的行。这反映了所述节点不能再处理先前用于所述删除行的值。

图14是根据一些示例性实施例的因子图可编程合成机制的方法1400的流程图。所述方法1400包括操作1410、1420、1430、1440和1450。作为示例而非限制,方法1400被描述为由所述计算机900的元件执行,如上文结合图9所述。所述方法1400可以实现归约运算符,其采用两个参数:因子图和所述因子图中的因子列表。所述归约运算符可返回新的因子图,其中所述列出的因子已组合为单因子。

在操作1410中,所述因子图合成模块960访问因子图、所述因子图中的第一因子和所述因子图中的第二因子。所述因子图、所述第一因子和所述第二因子可作为参数传递给归约运算符。在一些示例性实施例中,所述第一因子和所述第二因子是因子列表的一部分。

在操作1420中,所述因子图合成模块960将所述访问的因子图复制到第二因子图中。

在操作1430中,所述因子图合成模块960从所述第二因子图中删除所述第一因子和所述第二因子,并将所有边缘连接到所述删除的因子。

在操作1440中,所述因子图合成模块960向所述第二因子图添加因子,所述添加因子的矩阵基于所述第一因子和所述第二因子的矩阵。例如,所述第一因子的矩阵可以乘以所述第二因子的矩阵,以生成所述添加因子的矩阵。

在操作1450中,所述因子图合成模块960将边缘添加到第二因子图,所述第二因子图将所述添加因子连接到先前连接到所述第一因子和第二因子中的一个或两个。属于任一因子的子级的节点成为所述添加因子的子级。以其它方式连接到所述第一因子和第二因子中的一个或两个的节点成为所述添加因子的父级。

图15是根据一些示例性实施例的将云应用部署到计算资源的方法1500的流程图。所述方法1500包括操作1510、1520和1530。作为示例而非限制,方法1500被描述为由所述计算机900的元件执行,如上文结合图9所述。

在操作1510中,所述资源分配模块965访问表示云应用的复合因子图。例如,可以访问使用所述方法1000、1100、1200、1300或1400中的一个或多个生成的复合因子图。

在操作1520中,所述资源分配模块965根据所述复合因子图选择一个或多个计算资源。例如,所述框图700B和800B的复合因子图在工作负荷、容量和优先级的各种条件下(例如,所述节点718、720、722、732、736、820、822、824、838和840)生成用于CPU、内存、存储器和网络带宽(例如,所述节点738-744或所述节点842-848)的资源使用的概率。如果所述云应用部署到所述计算资源中的每一个,应用与所述计算资源相关的工作负荷和容量以及与所述云应用相关的优先级,为所述云应用生成资源消耗的概率分布。使用概率分布,可以选择导致所述资源消耗期望值最低的计算资源。

在操作1530中,所述资源分配模块965将所述云应用的至少一部分部署到所选计算资源。例如,所述云应用的一个组件可以部署到选定的服务器。作为另一个示例,可以分配CPU时间、内存资源、存储资源和网络通信资源,以供所述云应用使用。附加地或替代地,也可以将所述云应用的一个或多个组件的可执行代码复制到所述分配的计算资源中的一个或多个,一个或多个可执行应用可以在数据中心的一个或多个服务器或其任何合适组合中启动。

图16是根据一些示例性实施例的将云应用部署到数据中心的方法1600的流程图。所述方法1600包括操作1610、1620、1630和1640。作为示例而非限制,方法1600被描述为由所述计算机900的元件执行,如上文结合图9所述。

在操作1610中,所述资源分配模块965访问表示云应用的复合因子图。例如,可以访问使用所述方法1000、1100、1200、1300或1400中的一个或多个生成的复合因子图。

在操作1620中,所述资源分配模块965访问多个数据中心的特征。例如,可以访问一组可用CPU、一组可用内存、一组可用存储设备和一组用于每个数据中心的可用网络通信设备的数据。作为另一个示例,可以访问用于每个数据中心当前或预测的工作负荷和容量的数据。

在操作1630中,所述资源分配模块965根据所述复合因子图和所述特征选择所述多个数据中心的数据中心。例如,所述框图700B和800B的复合因子图在工作负荷、容量和优先级的各种条件下(例如,所述节点718、720、722、732、736、820、822、824、838和840)生成用于CPU、内存、存储器和网络带宽(例如,所述节点738-744或所述节点842-848)的资源使用的概率。应用与每个数据中心相关的工作负荷和容量以及与所述云应用相关的优先级,为每个数据中心的云应用生成资源消耗的概率分布。使用所述概率分布,可以选择导致所述资源消耗期望值最低的数据中心。

在操作1640中,所述资源分配模块965将所述云应用部署到所选择的数据中心。例如,可以分配CPU时间、内存资源、存储资源和网络通信资源,以供所述云应用使用。附加地或替代地,也可以将所述云应用的可执行代码复制到所述分配资源中的一个或多个,一个或多个可执行应用可以在所述数据中心的一个或多个服务器或其任何合适组合中启动。

图17是根据一些示例性实施例的将云应用部署到数据中心服务器的方法1700的流程图。所述方法1700包括操作1710、1720、1730和1740。作为示例而非限制,方法1700被描述为由所述计算机900的元件执行,如上文结合图9所述。

在操作1710中,所述资源分配模块965访问表示云应用的复合因子图。例如,可以访问使用所述方法1000、1100、1200、1300或1400中的一个或多个生成的复合因子图。

在操作1720中,所述资源分配模块965访问数据中心的多个服务器的特征。例如,所述数据中心中的每台服务器可具有CPU特征(例如,处理器数量、内核数量、处理器速度或其任何合适的组合)、内存特征(例如,内存量、访问速度、数据传输速率或其任何合适的组合)、存储器特征(例如,存储量、访问速度、数据传输速率或其任何合适的组合)以及网络特征(例如,网络响应时间、数据传输速率或其任何合适的组合)。作为另一个示例,可以访问用于每台数据中心当前或预测的工作负荷和容量的数据。

在操作1730中,所述资源分配模块965根据所述复合因子图和所述特征选择多台服务器中的一台或多台服务器。例如,所述框图700B和800B的复合因子图在工作负荷、容量和优先级的各种条件下(例如,所述节点718、720、722、732、736、820、822、824、838和840)生成用于CPU、内存、存储器和网络带宽(例如,所述节点738-744或所述节点842-848)的资源使用的概率。应用与每个服务器相关的工作负荷和容量以及与所述云应用相关的优先级,将在每台服务器上为所述云应用生成资源消耗的概率分布。使用概率分布,可以选择导致所述资源消耗期望值最低的服务器或服务器集。例如,可以为所述云应用的每个组件选择不同的服务器。

在操作1740中,所述资源分配模块965将所述云应用部署到所选择的服务器。例如,可以将用于所述云应用的可执行代码复制到所述分配的服务器,并开始执行所述云应用的组件。

图18是根据一些示例性实施例的为数据中心中的云应用重新分配资源的方法1800的流程图。所述方法1800包括操作1810、1820和1830。作为示例而非限制,方法1800被描述为由所述计算机900的元件执行,如上文结合图9所述。

在操作1810中,所述资源分配模块965确定用于在数据中心中运行的云应用的分配资源与所述云应用程序的当前需求不匹配。例如,云应用可与服务级别协议相关联,该协议规定所述云应用的平均响应时间必须低于100ms,否则所述数据中心提供商将受到经济处罚。因此,受监控应用可以定期检查所述云应用的响应速度,以确定所述平均响应时间。当所述平均响应时间超过预定阈值(例如,所述服务级别协议的约定响应时间、所述服务级别协议的约定响应时间的一部分(例如,90%)或其它阈值)时,受监控应用触发所述方法1800的剩余操作。

在操作1820中,所述资源分配模块965访问表示所述云应用的复合因子图。例如,所述使用方法1000、1100、1200、1300或1400中的一种或多种生成的复合因子图可以从表示所述数据中心中运行的云应用的复合因子图数据库中访问。

在操作1830中,所述资源分配模块965根据所述复合因子图更改所述云应用的资源分配。例如,可以执行所述方法1700的操作1720-1740来识别将所述云应用部署到的一台或多台服务器,并且可以将所述云应用部署到所述识别的服务器。在一些示例性实施例中,更改所述资源分配可以将更多或更少的资源分配给所述云应用,而不会更改运行云应用组件的服务器。例如,可以在不停止和重新启动应用的情况下分配或释放网络资源和存储资源。在其它示例性实施例中,更改所述资源分配可以将一个或多个云应用组件(例如,虚拟机)从一台服务器迁移到另一台服务器。

本文公开的设备和方法可以减少为客户端分配资源所需的时间、处理器周期和功耗。本文公开的设备和方法还可以提高客户端的资源分配,从而提高吞吐量和服务质量。现有部署可以已经将TOSCA或Heat用于云应用部署。重复使用TOSCA/Heat生成复合因子图可以提高效率。

虽然上文详细描述了几个实施例但是可能进行其它修改。例如为了获得期望的结果附图中描绘的逻辑流不需要按照所示的特定顺序或者先后顺序。可以提供其它步骤或者从所描述的流程中去除步骤,所描述的系统中可以添加或移除其它组件。其它实施例可以在所附权利要求书的范围内。

42页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:存储虚拟化系统中占位符的元数据存储

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!