可左右滑动选省市

流处理引擎的伸缩方法和装置实用新型专利

更新时间:2024-07-01
流处理引擎的伸缩方法和装置实用新型专利 专利申请类型:实用新型专利;
源自:北京高价值专利检索信息库;

专利名称:流处理引擎的伸缩方法和装置

专利类型:实用新型专利

专利申请号:CN201811113176.2

专利申请(专利权)人:北京京东尚科信息技术有限公司,北京京东世纪贸易有限公司
权利人地址:北京市海淀区杏石口路65号西杉创意园四区11号楼东段1-4层西段1-4层

专利发明(设计)人:张鑫

专利摘要:本公开提供了一种流处理引擎的伸缩方法,包括:获取流处理引擎的当前状态数据;基于马尔科夫决策过程确定所述当前状态数据对应的最优策略,所述最优策略包括:对所述流处理引擎的机器、进程以及线程中至少一项的扩展或收缩;依据所述最优策略对所述流处理引擎进行相应伸缩处理。本公开还提供了一种流处理引擎的伸缩装置、一种计算机设备以及一种计算机可读存储介质。

主权利要求:
1.一种流处理引擎的伸缩方法,包括:
获取流处理引擎的当前状态数据;
基于马尔科夫决策过程确定所述当前状态数据对应的最优策略,所述最优策略包括:对所述流处理引擎的机器、进程以及线程中至少一项的扩展或收缩;
依据所述最优策略对所述流处理引擎进行相应伸缩处理;
其中,所述基于马尔科夫决策过程确定所述当前状态数据对应的最优策略包括:获取所述当前状态数据对应的奖赏值;
构建状态空间、动作空间和概率转移矩阵,其中,所述状态空间中的各元素分别对应于所述流处理引擎的不同状态,所述动作空间中的各元素分别对应于不同动作,所述动作包括对机器、进程和线程三项中任一项的扩展或收缩,所述概率转移矩阵中的任一元素p(x’|x,a)表示对状态x下的所述流处理引擎采取动作a之后转移为状态x’的概率;
基于所述奖赏值、所述状态空间、动作空间和概率转移矩阵,构建所述当前状态数据对应的值函数,通过动态规划算法得到所述当前状态数据对应的最优值函数;
将所述最优值函数所对应的动作作为所述当前状态数据对应的最优策略。
2.根据权利要求1所述的方法,其中,所述当前状态数据包括如下至少一项:流处理引擎当前的资源使用状态数据,流处理引擎当前的数据输入速率,流处理引擎当前的数据处理速率,其中,当前的资源使用状态数据包括当前所使用的机器数量、进程数量和/或线程数量。
3.根据权利要求2所述的方法,其中,获取当前状态数据对应的奖赏值包括:将所述流处理引擎当前的资源使用状态数据与预定最大资源使用状态数据的差异作为第一因子;
将所述流处理引擎当前的数据输入速率与所述流处理引擎当前的数据处理速率的差异作为第二因子;
基于所述第一因子和第二因子得到当前状态数据对应的奖赏值,使得所述奖赏值与第一因子成正比,并与第二因子成反比。
4.根据权利要求2所述的方法,其中,所述当前状态数据对应的值函数为当前状态数据对应的奖赏值与下一状态对应的值函数的最大期望值的加权和。
5.根据权利要求2所述的方法,其中,通过动态规划算法得到所述当前状态数据对应的最优值函数包括:根据值迭代算法对所述当前状态数据对应的值函数进行迭代,直至所述值函数收敛,得到所述最优值函数。
6.根据权利要求2所述的方法,其中,将所述最优值函数所对应的动作作为所述当前状态数据对应的最优策略包括:根据贝尔曼不等式,将所述当前状态数据对应的值函数转换为行为值函数,将所述最优值函数转换为最优行为值函数,所述行为值函数包括动作变量;
当所述行为值函数等于所述最优行为值函数时,将所述动作变量的取值所对应的动作作为所述当前状态数据对应的最优策略。
7.一种流处理引擎的伸缩装置,包括:
状态获取模块,用于获取流处理引擎的当前状态数据;
策略确定模块,用于基于马尔科夫决策过程确定所述当前状态数据对应的最优策略,所述最优策略包括:对所述流处理引擎的机器、进程以及线程中至少一项的扩展或收缩;
伸缩处理模块,用于依据所述最优策略对所述流处理引擎进行相应伸缩处理;
其中,所述策略确定模块基于马尔科夫决策过程确定所述当前状态数据对应的最优策略包括:所述策略确定模块,用于获取当前状态数据对应的奖赏值;构建状态空间、动作空间和概率转移矩阵,其中,所述状态空间中的各元素分别对应于所述流处理引擎的不同状态,所述动作空间中的各元素分别对应于不同动作,所述动作包括对机器、进程和线程三项中任一项的扩展或收缩,所述概率转移矩阵中的任一元素p(x’|x,a)表示对状态x下的所述流处理引擎采取动作a之后转移为状态x’的概率;基于所述奖赏值、所述状态空间、动作空间和概率转移矩阵,构建所述当前状态数据对应的值函数,通过动态规划算法得到所述当前状态数据对应的最优值函数;将所述最优值函数所对应的动作作为所述当前状态数据对应的最优策略。
8.根据权利要求7所述的装置,其中,所述当前状态数据包括如下至少一项:流处理引擎当前的资源使用状态数据,流处理引擎当前的数据输入速率,流处理引擎当前的数据处理速率,其中,当前的资源使用状态数据包括当前所使用的机器数量、进程数量和/或线程数量。
9.根据权利要求8所述的装置,其中,所述策略确定模块获取当前状态数据对应的奖赏值包括:所述策略确定模块,用于将所述流处理引擎当前的资源使用状态数据与预定最大资源使用状态数据的差异作为第一因子;将所述流处理引擎当前的数据输入速率与所述流处理引擎当前的数据处理速率的差异作为第二因子;基于所述第一因子和第二因子得到当前状态数据对应的奖赏值,使得所述奖赏值与第一因子成正比,并与第二因子成反比。
10.根据权利要求8所述的装置,其中,所述当前状态数据对应的值函数为当前状态数据对应的奖赏值与下一状态对应的值函数的最大期望值的加权和。
11.根据权利要求8所述的装置,其中,所述策略确定模块通过动态规划算法得到所述当前状态数据对应的最优值函数包括:所述策略确定模块,用于根据值迭代算法对所述当前状态数据对应的值函数进行迭代,直至所述值函数收敛,得到所述最优值函数。
12.根据权利要求8所述的装置,其中,所述策略确定模块将所述最优值函数所对应的动作作为所述当前状态数据对应的最优策略包括:所述策略确定模块,用于根据贝尔曼不等式,将所述当前状态数据对应的值函数转换为行为值函数,将所述最优值函数转换为最优行为值函数,所述行为值函数包括动作变量;
当所述行为值函数等于所述最优行为值函数时,将所述动作变量的取值所对应的动作作为所述当前状态数据对应的最优策略。
13.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如权利要求1 6中任一项所述的流处理引擎的~伸缩方法。
14.一种计算机可读存储介质,其上存储有可执行指令,该指令被处理器执行时使处理器执行如权利要求1 6中任一项所述的流处理引擎的伸缩方法。
~ 说明书 : 流处理引擎的伸缩方法和装置技术领域[0001] 本公开涉及计算机技术领域,更具体地,涉及一种流处理引擎的伸缩方法和装置。背景技术[0002] 自动伸缩的研究是数据流处理领域关注的焦点。为匹配系统的数据输入速率(即负载)与系统的处理能力(即吞吐率),以尽可能少的资源满足既定的服务,当吞吐率低于负载时,流处理引擎需要及时扩展规模,提高处理能力;而当吞吐率高于负载时,流处理引擎应当及时收缩规模,节省资源。全自动的伸缩流程和行之有效的伸缩策略,及其系统集成是该问题的重点。因此,良好的伸缩策略是提高流处理应用资源利用率的关键;“何时伸缩”、以“何种粒度”进行收缩,是伸缩策略需要实现的关键技术与攻克难题。[0003] 现有技术中包括基于阈值的伸缩策略和基于历史记录进行机器学习的伸缩策略。第一种方案需要人工设定阈值,由于流处理引擎的环境以及数据流的波动性都是难以预测的,该方案往往需要根据集群的规模、应用程序的拓扑结构、以及业务的数据流的特点对阈值做动态调整,调整过程同样由人工进行,导致伸缩策略制定过程低效且不可靠。而第二种方案由于流处理引擎中数据标签是延迟性的,对历史记录建立预测模型非常困难,且没有充分利用线上实时反馈的数据和结果,导致伸缩策略制定过程抵消且不准确。此外,这两种方案的伸缩调节粒度均是进程级别的,即伸缩策略过于粗糙。发明内容[0004] 有鉴于此,本公开提供了一种更高效、准确且粒度更小的流处理引擎的伸缩方法和装置。[0005] 本公开的一个方面提供了一种流处理引擎的伸缩方法,包括:获取流处理引擎的当前状态数据;基于马尔科夫决策过程确定所述当前状态数据对应的最优策略,所述最优策略包括:对所述流处理引擎的机器、进程以及线程中至少一项的扩展或收缩;依据所述最优策略对所述流处理引擎进行相应伸缩处理。[0006] 根据本公开的实施例,所述当前状态数据包括如下至少一项:流处理引擎当前的资源使用状态数据,流处理引擎当前的数据输入速率,流处理引擎当前的数据处理速率,其中,当前的资源使用状态数据包括当前所使用的机器数量、进程数量和/或线程数量。[0007] 根据本公开的实施例,基于马尔科夫决策过程确定所述当前状态数据对应的最优策略包括:获取当前状态数据对应的奖赏值;构建状态空间、动作空间和概率转移矩阵,其中,所述状态空间中的各元素分别对应于所述流处理引擎的不同状态,所述动作空间中的各元素分别对应于不同动作,所述动作包括对机器、进程和线程三项中任一项的扩展或收缩,所述概率转移矩阵中的任一元素p(x’|x,a)表示对状态x下的所述流处理引擎采取动作a之后转移为状态x’的概率;基于所述奖赏值、所述状态空间、动作空间和概率转移矩阵,构建所述当前状态数据对应的值函数,通过动态规划算法得到所述当前状态数据对应的最优值函数;将所述最优值函数所对应的动作作为所述当前状态数据对应的最优策略。[0008] 根据本公开的实施例,获取当前状态数据对应的奖赏值包括:将所述流处理引擎当前的资源使用状态数据与预定最大资源使用状态数据的差异作为第一因子;将所述流处理引擎当前的数据输入速率与所述流处理引擎当前的数据处理速率的差异作为第二因子;基于所述第一因子和第二因子得到当前状态数据对应的奖赏值,使得所述奖赏值与第一因子成正比,并与第二因子成反比。[0009] 根据本公开的实施例,所述当前状态数据对应的值函数为当前状态数据对应的奖赏值与下一状态对应的值函数的最大期望值的加权和。[0010] 根据本公开的实施例,通过动态规划算法得到所述当前状态数据对应的最优值函数包括:根据值迭代算法对所述当前状态数据对应的值函数进行迭代,直至所述值函数收敛,得到所述最优值函数。[0011] 根据本公开的实施例,将所述最优值函数所对应的动作作为所述当前状态数据对应的最优策略包括:根据贝尔曼不等式,将所述当前状态数据对应的值函数转换为行为值函数,将所述最优值函数转换为最优行为值函数,所述行为值函数包括动作变量;当所述行为值函数等于所述最优行为值函数时,将所述动作变量的取值所对应的动作作为所述当前状态数据对应的最优策略。[0012] 本公开的另一个方面提供了一种流处理引擎的伸缩装置,包括状态获取模块、策略确定模块和伸缩处理模块。状态获取模块用于获取流处理引擎的当前状态数据。策略确定模块用于基于马尔科夫决策过程确定所述当前状态数据对应的最优策略,所述最优策略包括:对所述流处理引擎的机器、进程以及线程中至少一项的扩展或收缩。伸缩处理模块用于依据所述最优策略对所述流处理引擎进行相应伸缩处理。[0013] 根据本公开的实施例,所述当前状态数据包括如下至少一项:流处理引擎当前的资源使用状态数据,流处理引擎当前的数据输入速率,流处理引擎当前的数据处理速率,其中,当前的资源使用状态数据包括当前所使用的机器数量、进程数量和/或线程数量。[0014] 根据本公开的实施例,所述策略确定模块基于马尔科夫决策过程确定所述当前状态数据对应的最优策略包括:所述策略确定模块用于获取当前状态数据对应的奖赏值;构建状态空间、动作空间和概率转移矩阵,其中,所述状态空间中的各元素分别对应于所述流处理引擎的不同状态,所述动作空间中的各元素分别对应于不同动作,所述动作包括对机器、进程和线程三项中任一项的扩展或收缩,所述概率转移矩阵中的任一元素p(x’|x,a)表示对状态x下的所述流处理引擎采取动作a之后转移为状态x’的概率;基于所述奖赏值、所述状态空间、动作空间和概率转移矩阵,构建所述当前状态数据对应的值函数,通过动态规划算法得到所述当前状态数据对应的最优值函数;将所述最优值函数所对应的动作作为所述当前状态数据对应的最优策略。[0015] 根据本公开的实施例,所述策略确定模块获取当前状态数据对应的奖赏值包括:所述策略确定模块用于将所述流处理引擎当前的资源使用状态数据与预定最大资源使用状态数据的差异作为第一因子;将所述流处理引擎当前的数据输入速率与所述流处理引擎当前的数据处理速率的差异作为第二因子;基于所述第一因子和第二因子得到当前状态数据对应的奖赏值,使得所述奖赏值与第一因子成正比,并与第二因子成反比。[0016] 根据本公开的实施例,所述当前状态数据对应的值函数为当前状态数据对应的奖赏值与下一状态对应的值函数的最大期望值的加权和。[0017] 根据本公开的实施例,所述策略确定模块通过动态规划算法得到所述当前状态数据对应的最优值函数包括:所述策略确定模块用于根据值迭代算法对所述当前状态数据对应的值函数进行迭代,直至所述值函数收敛,得到所述最优值函数。[0018] 根据本公开的实施例,所述策略确定模块将所述最优值函数所对应的动作作为所述当前状态数据对应的最优策略包括:所述策略确定模块用于根据贝尔曼不等式,将所述当前状态数据对应的值函数转换为行为值函数,将所述最优值函数转换为最优行为值函数,所述行为值函数包括动作变量;当所述行为值函数等于所述最优行为值函数时,将所述动作变量的取值所对应的动作作为所述当前状态数据对应的最优策略。[0019] 本公开的另一方面提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上所述的方法。[0020] 本公开的另一方面提供了一种计算机可读存储介质,其上存储有可执行指令,该指令被处理器执行时使处理器执行如上所述的方法。[0021] 本公开的另一方面提供了一种计算机程序,所述计算机程序包括计算机可执行指令,所述指令在被执行时用于实现如上所述的方法。[0022] 根据本公开的实施例,可以至少部分地解决/减轻/抑制/甚至避免现有的流处理引擎的伸缩策略制定过程低效、不准确、粒度大的问题,仅通过对流处理引擎的当前状态进行分析即可确定从流处理引擎的当前状态出发对流处理引擎具有最优回报的当前伸缩策略,实现了流处理引擎负载的自适应调节,具有一定的准确性和有效性,且能够实现线程级别的细粒度伸缩处理,最大程度地节省资源提高效率。附图说明[0023] 通过以下参照附图对本公开实施例的描述,本公开的上述以及其他目的、特征和优点将更为清楚,在附图中:[0024] 图1示意性示出了根据本公开的实施例的可以应用流处理引擎的伸缩方法和装置的示例性系统架构;[0025] 图2示意性示出了根据本公开的实施例的一种流处理引擎的伸缩方法的流程图;[0026] 图3示意性示出了根据本公开的实施例的流处理引擎的伸缩调整过程对应的状态转移过程的示意图;[0027] 图4A示意性示出了根据本公开的实施例的应用流处理引擎的伸缩方法的系统架构;[0028] 图4B示意性示出了根据本公开的实施例的运行时画像模块的参数维护流程图;[0029] 图4C示意性示出了根据本公开的实施例的奖赏函数分析器与运行时画像模块的通信时序图;[0030] 图5示意性示出了根据本公开的实施例的流处理引擎的伸缩装置的框图;以及[0031] 图6示意性示出了根据本公开的实施例的计算机设备的框图。具体实施方式[0032] 以下,将参照附图来描述本公开的实施例。但是应该理解,这些描述只是示例性的,而并非要限制本公开的范围。在下面的详细描述中,为便于解释,阐述了许多具体的细节以提供对本公开实施例的全面理解。然而,明显地,一个或多个实施例在没有这些具体细节的情况下也可以被实施。此外,在以下说明中,省略了对公知结构和技术的描述,以避免不必要地混淆本公开的概念。[0033] 在此使用的术语仅仅是为了描述具体实施例,而并非意在限制本公开。在此使用的术语“包括”、“包含”等表明了所述特征、步骤、操作和/或部件的存在,但是并不排除存在或添加一个或多个其他特征、步骤、操作或部件。[0034] 在此使用的所有术语(包括技术和科学术语)具有本领域技术人员通常所理解的含义,除非另外定义。应注意,这里使用的术语应解释为具有与本说明书的上下文相一致的含义,而不应以理想化或过于刻板的方式来解释。[0035] 在使用类似于“A、B和C等中至少一个”这样的表述的情况下,一般来说应该按照本领域技术人员通常理解该表述的含义来予以解释(例如,“具有A、B和C中至少一个的系统”应包括但不限于单独具有A、单独具有B、单独具有C、具有A和B、具有A和C、具有B和C、和/或具有A、B、C的系统等)。在使用类似于“A、B或C等中至少一个”这样的表述的情况下,一般来说应该按照本领域技术人员通常理解该表述的含义来予以解释(例如,“具有A、B或C中至少一个的系统”应包括但不限于单独具有A、单独具有B、单独具有C、具有A和B、具有A和C、具有B和C、和/或具有A、B、C的系统等)。[0036] 本公开的实施例提供了一种流处理引擎的伸缩方法和装置。该方法包括当前状态获取过程、决策过程和伸缩处理过程。在当前状态获取过程过程中,获取流处理引擎的当前状态数据,在决策过程中,基于马尔科夫决策过程确定所述当前状态数据对应的最优策略,并依据该最优策略在伸缩处理过程中进行相应的对所述流处理引擎的机器、进程和/或线程中至少一项的扩展或收缩。[0037] 图1示意性示出了根据本公开的实施例的可以应用流处理引擎的伸缩方法和装置的示例性系统架构100。需要注意的是,图1所示仅为可以应用本公开实施例的系统架构的示例,以帮助本领域技术人员理解本公开的技术内容,但并不意味着本公开实施例不可以用于其他设备、系统、环境或场景。[0038] 如图1所示,根据该实施例的系统架构100可以包括多个电子设备(101~107)。电子设备(101~107)可以是个人电脑(personalcomputer,PC)、网络服务器、数据库服务器等。电子设备(101~107)中的每一个电子设备可以具有相同或不同的计算能力。[0039] 作为一种实施方式,多个电子设备(101~107)之间可以相互通信,共同构成一个流处理引擎,从而共同进行实时流计算。所谓实时流计算,就是近年来由于数据得到广泛应用,在数据持久化性建模不满足现状的情况下,急需数据流的实时建模或者计算处理。这种实时计算的应用实例可以应用于金融服务、网络监控、电信数据管理、web应用、生成制造、传感检测、等等领域,这些领域的数据以大量、快速、时变的数据流持续到达流处理引擎,流处理引擎需要及时响应进行实时流计算。[0040] 图1所示的流处理引擎可以针对诸多流处理场景有着多种解决方案,部署的最大规模可达秒千万次消息处理,提供了大数据流处理的实效性与线上分析的可行性,但各种流处理引擎均存在类似问题,即缺少自动伸缩的功能,由于流处理引擎一般资源独占,因此利用率有待研究与提升。[0041] 应该理解,图1中的电子设备的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。[0042] 本发明实施例提供的流处理引擎的伸缩方法和装置可以运行于图1所示的流处理引擎中。[0043] 图2示意性示出了根据本公开的实施例的一种流处理引擎的伸缩方法的流程图。[0044] 如图2所示,该方法包括在操作S201,获取流处理引擎的当前状态数据。[0045] 然后,在操作S202,基于马尔科夫决策过程确定所述当前状态数据对应的最优策略,所述最优策略包括:对所述流处理引擎的机器、进程以及线程中至少一项的扩展或收缩。[0046] 本操作中,马尔科夫决策过程(MarkovDecisionProcess,MDP)是基于马尔科夫过程理论的随机动态系统的决策过程。由于流处理引擎的伸缩处理决策可以具有如下特性:在已知当前状态的条件下,流处理引擎在未来的伸缩处理决策可以不依赖于该流处理引擎以往的伸缩处理决策,即流处理引擎的伸缩处理决策具有马尔科夫性,因此马尔科夫决策过程可以作为具有马尔科夫性的流处理引擎的伸缩处理决策依据。[0047] 在操作S203,依据所述最优策略对所述流处理引擎进行相应伸缩处理。[0048] 可见,图2所示的方法依赖于流处理引擎的伸缩处理决策所具有的马尔科夫性,将增强学习中的马尔科夫决策过程(MarkovDecisionProcess,MDP)应用于流处理引擎的伸缩策略的制定,根据流处理引擎的当前状态获知相应的最优策略,该最优策略可以是对流处理引擎中的机器、进程和/或线程的扩展或收缩,也就是说,该决策过程仅通过对流处理引擎的当前状态进行分析即可确定从流处理引擎的当前状态出发对流处理引擎具有最优回报的当前伸缩策略,实现了流处理引擎负载的自适应调节,具有一定的准确性和有效性,且能够实现线程级别的细粒度伸缩处理,最大程度地节省资源提高效率。[0049] 在本公开的一个实施例中,操作S201所获取的当前状态数据包括流处理引擎当前的资源使用状态数据、流处理引擎当前的数据输入速率、以及流处理引擎当前的数据处理速率中的至少一项。其中,当前的资源使用状态数据包括流处理引擎当前所使用的机器数量、进程数量和/或线程数量,表征了流处理引擎当前的资源占用状态,当前的数据输入速率表征了流处理引擎当前的负载状态,当前的数据处理速率表征了流处理引擎当前的吞吐率状态,这些状态是本方案做出流处理引擎的伸缩处理决策的基础,本方案希望通过对流处理引擎的伸缩调整使得流处理引擎在占用尽量少的资源的前提下达到负载和吞吐率的平衡。[0050] 在操作S201获取到流处理引擎的上述当前状态数据后,作为一个可选的实施例,操作S202基于马尔科夫决策过程确定所述当前状态数据对应的最优策略可以包括如下操作:[0051] 操作S2021,获取当前状态数据对应的奖赏值。[0052] 操作S2022,构建状态空间、动作空间和概率转移矩阵,其中,所述状态空间中的各元素分别对应于所述流处理引擎的不同状态,所述动作空间中的各元素分别对应于不同动作,所述动作包括对机器、进程和线程三项中任一项的扩展或收缩,所述概率转移矩阵中的任一元素p(x’|x,a)表示对状态x下的所述流处理引擎采取动作a之后转移为状态x’的概率。[0053] 操作S2023,基于所述奖赏值、所述状态空间、动作空间和概率转移矩阵,构建所述当前状态数据对应的值函数,通过动态规划算法得到所述当前状态数据对应的最优值函数。[0054] 操作S2024,将所述最优值函数所对应的动作作为所述当前状态数据对应的最优策略。[0055] 上述操作中,流处理引擎在不同时刻的不同状态数据反映了流处理引擎的不同状态,流处理引擎所有可能的状态x构成了状态空间X,在流处理引擎的各种状态下对流处理引擎所采取的伸缩处理作为对流处理引擎所进行的伸缩动作,所有可能采取的动作a构成了动作空间A。对处于状态空间X中的任一状态x下的流处理引擎进行动作空间A中的任一动作a后流处理引擎会从当前状态x转移为状态空间X中的另一状态x’,将该过程的概率定义为p(x’|x,a),基于状态空间X和动作空间A可能发生的所有状态转移过程的概率构成了概率转移矩阵P。以及,假设当前状态数据对应的状态表示为x,当前状态数据对应的奖赏值可以表示为R(x),表征了对处于前一状态下的流处理引擎采用动作进行伸缩处理转移至当前状态所获得的奖赏,该奖赏不能反映该过程的长期回报,只能反映当前的短期回报。[0056] 图3示意性示出了根据本公开的实施例的流处理引擎的伸缩调整过程对应的状态转移过程的示意图。[0057] 如图3所示,在上述所获得的状态空间X、动作空间A、概率转移矩阵P以及奖赏值R的基础上,可以将对流处理引擎的伸缩调整过程可以建模为图3中的动作状态转移过程:定义流处理引擎的起始状态x0并对流处理引擎执行动作a0,通过一定的随机状态转移概率,从状态x0转移到状态x1,定义该转移过程的概率为p(x1|x0,a0),接着,在状态x1执行动作a1,通过一定的随机状态转移概率,从状态x1转移到状态x2,定义该转移过程对应的概率为p(x2|x1,a1),……,以此类推,不再赘述。[0058] 这样,马尔科夫决策过程就可以应用于如图3所示的流处理引擎的伸缩调整过程对应的状态转移过程中,基于所述奖赏值、所述状态空间、动作空间和概率转移矩阵,构建所述当前状态数据对应的值函数,通过动态规划算法得到所述当前状态数据对应的最优值函数,进而获得最优值函数对应的最优动作,即为当前状态下的最优策略。[0059] 可见,本实施例通过对流处理引擎的伸缩处理过程的建模使得流处理引擎的伸缩处理场景适配于马尔科夫决策过程,巧妙地实现更为合理、准确的流处理引擎的伸缩决策。[0060] 其中具体地,作为一个可选的实施例,上述操作S2021获取当前状态数据对应的奖赏值包括:将所述流处理引擎当前的资源使用状态数据与预定最大资源使用状态数据的差异作为第一因子;将所述流处理引擎当前的数据输入速率与所述流处理引擎当前的数据处理速率的差异作为第二因子;基于所述第一因子和第二因子得到当前状态数据对应的奖赏值,使得所述奖赏值与第一因子成正比,并与第二因子成反比。可以知道,流处理引擎在任一状态下,如果所占用的资源越少且负载与吞吐率越适配,表示该状态越优,从其他状态采取某动作转移到该状态对应的奖赏值越大,即,当前状态数据对应的奖赏值与所占用的资源负相关,且与吞吐率与负载的适配程度正相关,因此基于上述第一因子和第二因子得到当前状态数据对应的奖赏值,使得流处理引擎的伸缩策略向着在占用尽量少的资源的前提下提高吞吐率和负载的适配性的方向优化。[0061] 作为一个可选的实施例,上述操作S2023所构建的当前状态数据对应的值函数为当前状态数据对应的奖赏值与下一状态对应的值函数的最大期望值的加权和。以上文中图3所示的流处理引擎的伸缩调整过程对应的状态转移过程为例进行说明,对于该状态转移过程,流处理引擎每被执行一次伸缩动作从一个状态转移为另一个状态的时候,给予相应的状态对应的奖赏,为了从长远的角度评价该过程的优劣,需要构建长期回报函数:[0062] R(x0)+γR(x1)+γ2R(x2)+…[0063] 其中,R表示各状态对应的奖赏值,γ为衰减因子,在0~1之间取值,衰减因子用于调整流处理引擎通过伸缩处理获得回报的速度,γ越小越要求流处理引擎快速得到回报。本方案确定最优策略的目标是让流处理引擎通过伸缩处理获得最大回报,也就是想要解决上述长期回报函数的最大期望值的优化问题。上述长期回报函数的期望值为:[0064] E[R(x0)+γR(x1)+γ2R(x2)+…][0065] 将该期望值定义为预备值函数V*(x),表示为:[0066] V*(x)=E[R(x0)+γR(x1)+γ2R(x2)+…][0067] 展开得到:[0068][0069] 为了获得最大期望值,定义预备值函数V*(x)的最大值为值函数V(x),则:[0070][0071] 其中,对于当前状态x来说,R(x)为当前状态数据对应的奖赏值,∑x,∈xp(x’|x,a)V(x′)为从当前状态x取动作a转移到的下一状态x’对应的值函数的期望值,因此,流处理引擎的当前状态数据对应的值函数V(x)为当前状态数据对应的奖赏值与下一状态对应的值函数的最大期望值的加权和。这样就得到了流处理引擎的伸缩调整过程相邻状态对应的值函数的递归关系。[0072] 在此基础上,作为一个可选的实施例,上述操作S2023通过动态规划算法得到所述当前状态数据对应的最优值函数包括:根据值迭代算法对所述当前状态数据对应的值函数进行迭代,直至所述值函数收敛,得到所述最优值函数。由于值迭代算法的原理简单直观,可以较快得到最优值函数。在其他实施例中,也可以根据策略迭代算法对先预设策略,基于预设的策略算出每个状态的值函数,然后再优化策略,接着再基于优化后的新策略计算每个状态的值函数,再优化策略,……,以此类推,直至值函数收敛,得到最优值函数。[0073] 本公开实施例中所得到的值函数实质上为状态值函数,在状态值函数中包括状态变量但是不包括动作变量,为了获知最优值函数对应的动作,可以将状态值函数转换为行为值函数,行为值函数包括动作变量,进而可以得知最优值函数对应的动作的取值。作为一个可选的实施例,上述操作S2024将所述最优值函数所对应的动作作为所述当前状态数据对应的最优策略包括:根据贝尔曼不等式,将所述当前状态数据对应的值函数转换为行为值函数,将所述最优值函数转换为最优行为值函数,所述行为值函数包括动作变量;当所述行为值函数等于所述最优行为值函数时,将所述动作变量的取值所对应的动作作为所述当前状态数据对应的最优策略。[0074] 下面参考图4A~图4C,结合具体实施例对图2所示的方法做进一步说明。[0075] 图4A示意性示出了根据本公开的实施例的应用流处理引擎的伸缩方法的系统架构。[0076] 如图4A所示,该系统架构中包括:运行时画像模块(RLOnlineProfiler)、奖赏函数分析器(RewardAnalyzer)、策略脑(RLBrain)、监控器(Monitor)和执行器(Executor),在本系统架构中,流处理引擎表示为流处理集群(Cluster)。运行时画像模块描绘和维持与伸缩策略紧密相关的状态画像,即通过监控器获取流处理引擎的当前状态数据,包括流处理引擎运行时的机器资源使用率、数据率、系统吞吐率等等相关数据。奖赏函数分析器当执行伸缩策略后,从运行时画像模块收集状态画像信息,量化本次策略的评分并保存,用于模型的在线训练和优化。策略脑维护强化学习模型,对环境进行建模,根据当前状态画像,选取最优动作,推断出扩展还是伸缩的策略以及粒度。根据上一次所做的伸缩策略的奖赏值,优化强化学习模型,使得下一次做出更优的策略,并通过执行器对流处理引擎执行所确定的伸缩处理。监控器监测各种性能指标接口,执行器实现具体的扩展、伸缩功能接口。[0077] 在图4A所示的系统架构下,执行流处理引擎的伸缩处理过程。[0078] 具体地,初始化流处理引擎,RLOnlineProfiler收集流处理引擎运行时的信息,以便为后续训练模型进行决策提供状态数据支持。例如所获取的当前状态数据包括参数M、参数D和参数B,以下对其获取并维护的各当前状态数据进行说明:[0079] 参数M表示为三元组(m1,m2,m3),M是流处理引擎的总体规模,用于量化流处理引擎当前的资源的使用情况,具体因子包括当前所使用的机器数量(m1)、当前所使用的进程数量(m2)以及当前所使用的线程数量(m3)。将这些因子加权平均为实值函数,代表总体资源使用状态。可以表示为:[0080][0081] 参数D表示流处理引擎当前的数据输入速率,即每秒钟流入系统的消息数量。参数B表示流处理引擎的吞吐率,即流处理引擎每秒钟处理的消息数量。[0082] 图4B示意性示出了根据本公开的实施例的运行时画像模块的参数维护流程图。[0083] 如图4B所示,监视器初始化运行时画像模块,查询流处理引擎的资源使用情况,赋予参数M(m1,m2,m3)、D和B的初始值。RLOnlineProfiler实时从Monitor获取资源使用情况,在可以更新时,计算并更新参数M(m1,m2,m3)、D和B中的一个或多个。[0084] 在运行时画像模块获取流处理引擎的当前状态数据后,奖赏函数分析器可以根据当前状态数据获得当前状态数据对应的奖赏值。[0085] 图4C示意性示出了根据本公开的实施例的奖赏函数分析器与运行时画像模块的通信时序图。[0086] 如图4C所示,RewardAnalyzer从RLOnlineProfiler读取当前时刻参数M、D和B,以及当前流处理应用程序拓扑结构最大可支持的资源Mmax,该参数Mmax可以是在运行时画像模块中根据需要预先设定的,包括预先设定的最大可使用的机器数量m1max、最大可使用的进程数量m2max以及最大可使用的线程数量m3max。然后再基于所获得的参数Mmax、M、D、B,计算当前状态数据所对应的奖赏值。[0087] 一方面,数据输入速率与流处理引擎的吞吐率之差越小,则表明流处理引擎能够动态根据数据输入速率变化,做出细粒度的伸缩、扩展动作,使得吞吐率尽可能匹配数据输入率,所以奖赏值越大;另一方面,流处理引擎使用资源越少,则表明流处理引擎以尽可能少的资源满足既定的服务,节省了成本,因此奖赏值也越大。据此设计得到奖赏函数R(Mmax,M,D,B),奖赏值R为:[0088][0089] 如上文所述,该奖赏值表征了对于当前状态的短期回报,可以用于后续确定当前状态对应的最优策略的评价标准中。[0090] 接着,策略脑可以基于马尔科夫决策过程确定所述当前状态数据对应的最优策略。[0091] 策略脑将伸缩策略的制定建模为有模型的马尔科夫决策过程(MDP),创建状态空间X,其中的状态元素对应于运行时画像模块中元组(m1,m2,m3,D,B)的映射,其中m1max、m2max和m3max分别代表流处理引擎预设可支配的最大的机器数量、进程数量和线程数量。模型的状态空间参数X可以按照资源使用量是否超过预设最大值以及按照数据输入速率与吞吐率是否匹配,来离散化状态空间并进行编码,如下表1所示。[0092] 表1[0093]m1≤m1max m2≤m2max m3≤m3max D≥B codeTrue True True True 1111False True True True 0111True False True True 1011False False True True 0011True True False True 1101False True False True 0101True False False True 1001False False False True 0001True True True False 1110False True True False 0110True False True False 1010False False True False 0010True True False False 1100False True False False 0100True False False False 1000False False False False 0000[0094] 从表1中可以看出,在流处理引擎的当前状态数据中,如果同时满足:m1≤m1max,m2≤m2max,m3≤m3max,D≥B,则当前状态数据对应的状态的编码为1111,以此类推,其他状态的编码如表中所示,则状态空间中可包括16个状态元素,表示归类后的16种状态。通过RLOnlineProfiler获取当前时刻的参数M以及(m1m2m3),D,B,根据状态空间映射表,映射到状态x。[0095] 以及创建动作空间A,其中的动作元素代表某一种伸缩策略(例如在线程粒度进行扩展),动作空间按照{扩展,收缩}与{机器,进程,线程}进行组合编码,总共6种可能的动作。以及创建概率转移矩阵P,其中的转移概率代表对处于某种状态下的流处理引擎采取某个动作并转移到另一种状态的概率,记为 |P|=|X|*|A|,因此总共16x6,共96个转移概率元素,初始化时可人工设定。[0096] 基于马尔科夫决策过程确定所述当前状态数据对应的最优策略的流程如下进行:[0097] 首先,策略脑从奖赏函数分析器接收当前状态数据对应的奖赏值R,基于所述奖赏值R、所述状态空间X、动作空间A和概率转移矩阵P,构建所述当前状态数据对应的值函数:[0098][0099] 根据值迭代算法对所述当前状态数据对应的值函数进行迭代,直至所述值函数收敛,得到所述最优值函数。[0100] 然后,根据强化学习模型的最优值函数,以及Bellman不等式,从值函数V可立得行为值函数Q,最优值函数V对应于最优行为值函数Q,从而求得当前最优行为值函数Q对应的动作a,即为最优策略,如下式所示:[0101] π(x)=argmaxa∈AQ(x,a)[0102] 其中,π(x)表示流处理引擎的当前状态数据所对应的最优策略,例如最优策略对应的动作为{扩展,线程},交由执行器执行该动作a,在线程级别扩展流处理引擎。[0103] 可见,上述流程在流处理集群启动后,提供监控器和执行器接口,用于监测系统各性能指标,以及执行具体的扩展、伸缩计划。本发明中运行时画像模块通过监视器获取相关性能指标,并量化指标,作为策略脑中模型输入。策略脑采用基于强化学习模型,策略脑从奖赏函数分析器实时接收上一时刻的策略执行后的奖赏值,利用值迭代算法,实现策略的评估与改进;并根据当前系统中的状态自动生成当前最优的动作,然后映射到扩展、或者收缩策略,交由执行器执行,该伸缩策略具有通用性,适用于常见的流处理引擎。本公开通过自动训练与优化策略,避免人工设定阈值的不可靠性,细化了策略伸缩粒度,节省资源,响应灵敏。[0104] 图5示意性示出了根据本公开的实施例的流处理引擎的伸缩装置的框图。[0105] 如图5所示,流处理引擎的伸缩装置500包括状态获取模块510、策略确定模块520和伸缩处理模块530。[0106] 状态获取模块510用于获取流处理引擎的当前状态数据。[0107] 策略确定模块520用于基于马尔科夫决策过程确定所述当前状态数据对应的最优策略,所述最优策略包括:对所述流处理引擎的机器、进程以及线程中至少一项的扩展或收缩。[0108] 伸缩处理模块530用于依据所述最优策略对所述流处理引擎进行相应伸缩处理。[0109] 在本公开的一个实施例中,当前状态数据包括如下至少一项:流处理引擎当前的资源使用状态数据,流处理引擎当前的数据输入速率,流处理引擎当前的数据处理速率。其中,当前的资源使用状态数据包括当前所使用的机器数量、进程数量和/或线程数量。[0110] 在本公开的一个实施例中,策略确定模块520基于马尔科夫决策过程确定所述当前状态数据对应的最优策略包括:策略确定模块520用于获取当前状态数据对应的奖赏值;构建状态空间、动作空间和概率转移矩阵,其中,所述状态空间中的各元素分别对应于所述流处理引擎的不同状态,所述动作空间中的各元素分别对应于不同动作,所述动作包括对机器、进程和线程三项中任一项的扩展或收缩,所述概率转移矩阵中的任一元素p(x’|x,a)表示对状态x下的所述流处理引擎采取动作a之后转移为状态x’的概率;基于所述奖赏值、所述状态空间、动作空间和概率转移矩阵,构建所述当前状态数据对应的值函数,通过动态规划算法得到所述当前状态数据对应的最优值函数;将所述最优值函数所对应的动作作为所述当前状态数据对应的最优策略。[0111] 其中,作为一个可选的实施例,策略确定模块520获取当前状态数据对应的奖赏值包括:策略确定模块520用于将所述流处理引擎当前的资源使用状态数据与预定最大资源使用状态数据的差异作为第一因子;将所述流处理引擎当前的数据输入速率与所述流处理引擎当前的数据处理速率的差异作为第二因子;基于所述第一因子和第二因子得到当前状态数据对应的奖赏值,使得所述奖赏值与第一因子成正比,并与第二因子成反比。[0112] 具体地,策略确定模块520所构建的当前状态数据对应的值函数可以为当前状态数据对应的奖赏值与下一状态对应的值函数的最大期望值的加权和。[0113] 作为一个可选的实施例,策略确定模块520通过动态规划算法得到所述当前状态数据对应的最优值函数包括:策略确定模块520用于根据值迭代算法对所述当前状态数据对应的值函数进行迭代,直至所述值函数收敛,得到所述最优值函数。[0114] 以及,作为一个可选的实施例,策略确定模块520将所述最优值函数所对应的动作作为所述当前状态数据对应的最优策略包括:策略确定模块520用于根据贝尔曼不等式,将所述当前状态数据对应的值函数转换为行为值函数,将所述最优值函数转换为最优行为值函数,所述行为值函数包括动作变量;当所述行为值函数等于所述最优行为值函数时,将所述动作变量的取值所对应的动作作为所述当前状态数据对应的最优策略。[0115] 根据本公开的实施例的模块、子模块、单元、子单元中的任意多个、或其中任意多个的至少部分功能可以在一个模块中实现。根据本公开实施例的模块、子模块、单元、子单元中的任意一个或多个可以被拆分成多个模块来实现。根据本公开实施例的模块、子模块、单元、子单元中的任意一个或多个可以至少被部分地实现为硬件电路,例如现场可编程门阵列(FPGA)、可编程逻辑阵列(PLA)、片上系统、基板上的系统、封装上的系统、专用集成电路(ASIC),或可以通过对电路进行集成或封装的任何其他的合理方式的硬件或固件来实现,或以软件、硬件以及固件三种实现方式中任意一种或以其中任意几种的适当组合来实现。或者,根据本公开实施例的模块、子模块、单元、子单元中的一个或多个可以至少被部分地实现为计算机程序模块,当该计算机程序模块被运行时,可以执行相应的功能。[0116] 例如,状态获取模块510、策略确定模块520和伸缩处理模块530中的任意多个可以合并在一个模块中实现,或者其中的任意一个模块可以被拆分成多个模块。或者,这些模块中的一个或多个模块的至少部分功能可以与其他模块的至少部分功能相结合,并在一个模块中实现。根据本公开的实施例,状态获取模块510、策略确定模块520和伸缩处理模块530中的至少一个可以至少被部分地实现为硬件电路,例如现场可编程门阵列(FPGA)、可编程逻辑阵列(PLA)、片上系统、基板上的系统、封装上的系统、专用集成电路(ASIC),或可以通过对电路进行集成或封装的任何其他的合理方式等硬件或固件来实现,或以软件、硬件以及固件三种实现方式中任意一种或以其中任意几种的适当组合来实现。或者,状态获取模块510、策略确定模块520和伸缩处理模块530中的至少一个可以至少被部分地实现为计算机程序模块,当该计算机程序模块被运行时,可以执行相应的功能。[0117] 图6示意性示出了根据本公开的实施例的适于实现上文描述的方法的计算机设备的框图。图6示出的计算机设备仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。[0118] 如图6所示,根据本公开实施例的计算机设备600包括处理器601,其可以根据存储在只读存储器(ROM)602中的程序或者从存储部分608加载到随机访问存储器(RAM)603中的程序而执行各种适当的动作和处理。处理器601例如可以包括通用微处理器(例如CPU)、指令集处理器和/或相关芯片组和/或专用微处理器(例如,专用集成电路(ASIC)),等等。处理器601还可以包括用于缓存用途的板载存储器。处理器601可以包括用于执行根据本公开实施例的方法流程的不同动作的单一处理单元或者是多个处理单元。[0119] 在RAM603中,存储有计算机设备600操作所需的各种程序和数据。处理器601、ROM602以及RAM603通过总线604彼此相连。处理器601通过执行ROM602和/或RAM603中的程序来执行根据本公开实施例的方法流程的各种操作。需要注意,所述程序也可以存储在除ROM602和RAM603以外的一个或多个存储器中。处理器601也可以通过执行存储在所述一个或多个存储器中的程序来执行根据本公开实施例的方法流程的各种操作。[0120] 根据本公开的实施例,计算机设备600还可以包括输入/输出(I/O)接口605,输入/输出(I/O)接口605也连接至总线604。计算机设备600还可以包括连接至I/O接口605的以下部件中的一项或多项:包括键盘、鼠标等的输入部分606;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分607;包括硬盘等的存储部分608;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分609。通信部分609经由诸如因特网的网络执行通信处理。驱动器610也根据需要连接至I/O接口605。可拆卸介质611,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器610上,以便于从其上读出的计算机程序根据需要被安装入存储部分608。[0121] 根据本公开的实施例,根据本公开实施例的方法流程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读存储介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分609从网络上被下载和安装,和/或从可拆卸介质611被安装。在该计算机程序被处理器601执行时,执行本公开实施例的系统中限定的上述功能。根据本公开的实施例,上文描述的系统、设备、装置、模块、单元等可以通过计算机程序模块来实现。[0122] 本公开还提供了一种计算机可读存储介质,该计算机可读存储介质可以是上述实施例中描述的设备/装置/系统中所包含的;也可以是单独存在,而未装配入该设备/装置/系统中。上述计算机可读存储介质承载有一个或者多个程序,当上述一个或者多个程序被执行时,实现根据本公开实施例的方法。[0123] 根据本公开的实施例,计算机可读存储介质可以是非易失性的计算机可读存储介质,例如可以包括但不限于:便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、便携式紧凑磁盘只读存储器(CD‑ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。[0124] 例如,根据本公开的实施例,计算机可读存储介质可以包括上文描述的ROM602和/或RAM603和/或ROM602和RAM603以外的一个或多个存储器。[0125] 附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。[0126] 本领域技术人员可以理解,本公开的各个实施例和/或权利要求中记载的特征可以进行多种组合和/或结合,即使这样的组合或结合没有明确记载于本公开中。特别地,在不脱离本公开精神和教导的情况下,本公开的各个实施例和/或权利要求中记载的特征可以进行多种组合和/或结合。所有这些组合和/或结合均落入本公开的范围。[0127] 以上对本公开的实施例进行了描述。但是,这些实施例仅仅是为了说明的目的,而并非为了限制本公开的范围。尽管在以上分别描述了各实施例,但是这并不意味着各个实施例中的措施不能有利地结合使用。本公开的范围由所附权利要求及其等同物限定。不脱离本公开的范围,本领域技术人员可以做出多种替代和修改,这些替代和修改都应落在本公开的范围之内。

专利地区:北京

专利申请日期:2018-09-21

专利公开日期:2024-06-18

专利公告号:CN110941489B

电话咨询
读内容
搜本页
回顶部