Patterns for Distributed Real-Time Stream Processing
本篇论文与《A Catalog of Stream Processing Optimizations》相似,都是介绍流处理系统中的优化方法,二者有些方法甚至重叠,但本文多了一些数学论证,从数学角度计算各个方法的代价与收益,本文主要介绍了6种模式(优化方法)
流模型建模
本文提出的流模型为一组应用程序,每个应用程序有具有不同deadline,如图:

将应用集群定义为:

每一个\({APP_i}\)可以由最大输入频率\({F_i}\)、端到端的deadline \({D_i}\)、一组阶段\({S_i}\)三个特征描绘:

对于每一个应用的\({S_i}\),都由有限数量(stg(i))的阶段组成,每个阶段都有一个最大执行时间\({C_i^j}\)

我们的应用是要部署在实际的机器上的,以CPU来划分,假设有m个CPU,实际集群运行在m个CPU上


这m台机器中的每台都支持基于抢占优先级的调度程序,每个抢占定义为利用率\({U_i}\)<=1,总利用率为\({U_{avail}}\)

利用率可以理解为资源消耗程度的一种衡量
为了充分描述,所有应用程序的所有阶段都应该分配给集群中的一台机器(\({Π_i^j}\)),为其执行分配优先级(\({P_i^j}\)),并具有最大频率(\({F_i^j}\))。
全局应用程序利用率(\({U_{app}}\))可表示为:

n为APP数量
串行响应时间rt:

并行响应时间rt:

响应时间(有点没看懂)

考虑网络阻塞B

单阶段应用模式
就是将所有阶段都合并为一个单独的阶段:

原始利用率:

修改后的利用率:


原始的最大可扩展度

修改后的最大可扩展度

算子分离模式
与单阶段模式相反,就是将一个阶段拆分成两个阶段


原始最大可扩展度

修改后:

裂变模式
将一个算子分裂成多个副本,增加并行度


最大可扩展度涉及到前后算子

频率修正模式
类似《A Catalog of Stream Processing Optimizations》中的负载脱落模式,删除掉部分输入负载



融合模式
与单阶段模式类似,个人理解是单阶段模式将所有阶段融合为一个单独的阶段,融合模式只融合两个阶段或任意的阶段



放置模式
选择合适的CPU(host)放置不同的stage,需要与实际任务结合考虑




总结
总的来说这篇论文与《A Catalog of Stream Processing Optimizations》都是介绍一些流系统中的优化方法,在应用层面优化,比较相似真是有些方法相同,实际工程中部署流应用时可以考虑这些优化方法,以达到最高效率

浙公网安备 33010602011771号