一种面向流连接算子中落伍者优化方法及装置
- 国知局
- 2024-08-02 14:32:29
本发明涉及分布式流计算,特别是指一种面向流连接算子中落伍者优化方法及装置。
背景技术:
1、负载不均衡可能导致“落伍者”的出现,即在处理数据流时连接实例明显落后于其他实例。目前,最先进的解决方案能够通过热键管理和随机分区来平衡连接实例之间的工作负载,从而减轻“落伍者”的负担。然而,这些解决方案要么依赖于复杂的路由策略,要么依赖于较低的资源效率处理结构,这使得它们容易受到实例之间负载频繁变化的影响。
2、流连接是流处理系统中最为关键且资源密集型的操作之一,在多个领域有着广泛的应用,包括金融、电子商务、交通运输和医疗保健等领域。与传统的数据库连接操作相比,由于数据流具有连续、高速和实时等特性,流连接更具挑战性。流连接必须将来自两个数据源的数据进行合并以进行复杂的数据分析,这对系统资源提出了巨大的需求。因此,实现高效的流连接对于提升系统性能至关重要。高效的流连接必须满足以下基本要求:(1)实时性:系统必须迅速响应并在短时间内体现数据的价值;(2)资源效率:系统必须有效利用集群内的可用计算资源;(3)完整性:系统必须能够连接来自两个流的任何元组对,并且只产生一次结果。
3、为实现这些目标,分布式流连接系统已探索出高效的数据流调度器,以并行执行复杂的多流连接过程。基于各种元组分区策略,流调度器可分为两种类型:随机分区和哈希分区。随机分区策略将数据元组均匀分配给自流中的连接实例,并将所有数据元组广播到其他流中的连接实例。因此,该方法通过在连接实例之间均匀分配数据元组来平衡系统负载。然而,由于广播,这种方法会导致数据元组复制,从而增加内存和通信开销。相比之下,哈希分区策略根据数据元组的键值将它们分配给连接实例。具有相同键值的数据元组被定向到相同的连接实例,有效地减轻了随机分区带来的开销。然而,在现实世界的业务场景中,数据往往会出现倾斜,这会导致哈希分区策略中出现“落伍者”,即某些连接实例处理数据流的时间明显长于其他实例。
4、根据现有数据集的驱动流使用哈希分区策略分布在100个连接实例中,每个连接实例处理的数据大小不同,导致数据元组的分布高度倾斜。这种倾斜的发生是因为大量数据特征聚集在同一实例中,从而导致了“落伍者”问题。即使手动调整数据分布以实现平衡,随着时间的推移仍可能会出现“落伍者”。
5、为了缓解“落伍者”问题,分布式流连接系统总是需要一种自适应的负载均衡策略。该策略有望在运行时动态调整连接实例之间的资源分配,同时考虑高性能、低成本和高稳定性的目标。然而,目前最先进的解决方案大多通过优化热键和使用随机分区来实现流连接系统的负载均衡,这在处理频繁波动的负载变化时会产生昂贵的开销。
6、在现有技术中,有作者引入了一种可扩展的分布式流连接系统来处理倾斜负载。它识别流连接系统中工作负载重的元组,并使用混洗策略将它们均匀分区,而其他元组则使用哈希进行分区。在流连接系统中启用混洗策略需要将高工作负载的元组从存储流中广播出去,并在连接流中均匀分区,由于存储中存在大量副本,因此会产生不可避免的内存开销。
7、最近的一项工作为流窗口连接系统实现了一种非迁移的负载均衡方法。它主要使用存储路由表将存储流中的一些“落伍者”元组转换为低负载的连接实例,使存储流中具有相同键的元组能够分布在不同的连接实例中。为了确保连接结果的完整性,连接路由表以分散的方式将相应的元组调度到存储相同键元组的连接实例中。尽管这种方法有效地避免了由元组副本产生的内存开销,但它引入了额外的通信开销。此外,随着频繁触发的负载均衡策略,两种路由表的维护都变得具有挑战性,并增加了系统开销。
8、另一项最近的工作结合了热点检测和范围路由策略来缓解“落伍者”问题并实现负载平衡,根据不稳定的系统负载动态调整分区规则。通过对当前窗口内的数据流进行采样和分析,它可以预测下一个窗口中数据流的分布并相应地调整分区规则。然而,由于它忽略了延迟的数据元组,因此保证连接结果的完整性变得具有挑战性。
技术实现思路
1、为了解决现有方案要么依赖于复杂的路由策略,要么依赖于较低的资源效率处理结构,这使得它们容易受到实例之间负载频繁变化的影响,如何解决连接实例之间的负载不均衡和状态迁移成本的技术问题,本发明实施例提供了一种面向流连接算子中落伍者优化方法及装置。所述技术方案如下:
2、一方面,提供了一种面向流连接算子中落伍者优化方法,该方法由面向流连接算子中落伍者优化设备实现,该方法包括:
3、s1、获取待进行流连接的第一数据流以及第二数据流。
4、其中,第一数据流包括多组第一数据元组,第二数据流包括多组第二数据元组。
5、s2、构建ls-stream数据流调度器。
6、其中,ls-stream数据流调度器包括分发器组件、连接实例组件和控制器组件。
7、其中,连接实例组件包括多个连接实例,多个连接实例中的每个连接实例包括多个分区。
8、s3、根据分发器组件、连接实例组件和控制器组件,对多组第一数据元组以及多组第二数据元组进行连接,得到数据流连接结果。
9、可选地,s3中的根据分发器组件、连接实例组件和控制器组件,对多组第一数据元组以及多组第二数据元组进行连接,得到数据流连接结果,包括:
10、s31、构建动态路由表。
11、s32、分发器组件根据动态路由表将多组第一数据元组以及多组第二数据元组分发到连接实例中的各个分区。
12、s33、连接实例中的各个分区对接收的数据元组进行存储和连接。
13、s34、控制器组件获取每个连接实例的负载信息,根据负载信息计算连接实例之间的负载不平衡度,根据负载不平衡度以及预设负载不平衡阈值判断负载是否均匀。
14、若判断负载均匀,则判断多组第一数据元组以及多组第二数据元组是否连接完成,若连接完成,则输出数据流连接结果,若未连接完成,则转去执行步骤s32。
15、若判断负载不均匀,则判断多组第一数据元组以及多组第二数据元组是否连接完成,若连接完成,则输出数据流连接结果,若未连接完成,则执行步骤s35。
16、s35、控制器组件生成迁移计划,根据迁移计划更新动态路由表,转去执行步骤s32。
17、可选地,s32中的分发器组件根据动态路由表将多组第一数据元组以及多组第二数据元组分发到连接实例中的各个分区,包括:
18、分发器组件根据动态路由表识别是否存在需要迁移的分区。
19、若存在,则停止需要迁移的分区对应的数据元组的分发,通过控制流将迁移信息传输给连接实例组件,连接实例组件完成分区迁移后,分发器组件根据动态路由表将多组第一数据元组以及多组第二数据元组分发到连接实例中的各个分区。
20、若不存在,则根据动态路由表将多组第一数据元组以及多组第二数据元组分发到连接实例中的各个分区。
21、可选地,根据动态路由表将多组第一数据元组以及多组第二数据元组分发到连接实例中的各个分区,包括:
22、使用分区计算公式分别计算多组第一数据元组以及多组第二数据元组对应的分区编号。
23、根据分区编号以及动态路由表确定分区编号对应的连接实例编号。
24、根据分区编号以及连接实例编号将多组第一数据元组以及多组第二数据元组分发到连接实例中的各个分区。
25、可选地,分区计算公式,如下式(1)所示:
26、(1)
27、式中,表示第个分区,表示哈希函数,表示数据元组的键,表示分区集合的基数。
28、可选地,s34中的负载不平衡度的计算公式,如下式(2)所示:
29、(2)
30、式中,表示负载不平衡度,表示第个连接实例的负载信息,表示连接实例的负载信息的平均值。
31、可选地,s35中的生成迁移计划,包括:
32、获取负载超过预设负载最高阈值的连接实例作为落伍者连接实例,获取负载低于预设负载最低阈值的连接实例作为低负载连接实例,从落伍者连接实例的分区中选取待迁移的分区,将待迁移的分区迁移至低负载连接实例,并判断分区迁移后的迁移影响因子是否高于分区迁移前的迁移影响因子。
33、若高于,则将待迁移的分区迁移至低负载连接实例,生成迁移计划。
34、若不高于,则使用概率方程决定是否将待迁移的分区迁移至低负载连接实例,生成迁移计划。
35、另一方面,提供了一种面向流连接算子中落伍者优化装置,该装置应用于面向流连接算子中落伍者优化方法,该装置包括:
36、获取模块,用于获取待进行流连接的第一数据流以及第二数据流。
37、其中,第一数据流包括多组第一数据元组,第二数据流包括多组第二数据元组。
38、构建模块,用于构建ls-stream数据流调度器。
39、其中,ls-stream数据流调度器包括分发器组件、连接实例组件和控制器组件。
40、其中,连接实例组件包括多个连接实例,多个连接实例中的每个连接实例包括多个分区。
41、输出模块,用于根据分发器组件、连接实例组件和控制器组件,对多组第一数据元组以及多组第二数据元组进行连接,得到数据流连接结果。
42、可选地,输出模块,进一步用于:
43、s31、构建动态路由表。
44、s32、分发器组件根据动态路由表将多组第一数据元组以及多组第二数据元组分发到连接实例中的各个分区。
45、s33、连接实例中的各个分区对接收的数据元组进行存储和连接。
46、s34、控制器组件获取每个连接实例的负载信息,根据负载信息计算连接实例之间的负载不平衡度,根据负载不平衡度以及预设负载不平衡阈值判断负载是否均匀。
47、若判断负载均匀,则判断多组第一数据元组以及多组第二数据元组是否连接完成,若连接完成,则输出数据流连接结果,若未连接完成,则转去执行步骤s32。
48、若判断负载不均匀,则判断多组第一数据元组以及多组第二数据元组是否连接完成,若连接完成,则输出数据流连接结果,若未连接完成,则执行步骤s35。
49、s35、控制器组件生成迁移计划,根据迁移计划更新动态路由表,转去执行步骤s32。
50、可选地,输出模块,进一步用于:
51、分发器组件根据动态路由表识别是否存在需要迁移的分区。
52、若存在,则停止需要迁移的分区对应的数据元组的分发,通过控制流将迁移信息传输给连接实例组件,连接实例组件完成分区迁移后,分发器组件根据动态路由表将多组第一数据元组以及多组第二数据元组分发到连接实例中的各个分区。
53、若不存在,则根据动态路由表将多组第一数据元组以及多组第二数据元组分发到连接实例中的各个分区。
54、可选地,根据动态路由表将多组第一数据元组以及多组第二数据元组分发到连接实例中的各个分区,包括:
55、使用分区计算公式分别计算多组第一数据元组以及多组第二数据元组对应的分区编号。
56、根据分区编号以及动态路由表确定分区编号对应的连接实例编号。
57、根据分区编号以及连接实例编号将多组第一数据元组以及多组第二数据元组分发到连接实例中的各个分区。
58、可选地,分区计算公式,如下式(1)所示:
59、(1)
60、式中,表示第个分区,表示哈希函数,表示数据元组的键,表示分区集合的基数。
61、可选地,负载不平衡度的计算公式,如下式(2)所示:
62、(2)
63、式中,表示负载不平衡度,表示第个连接实例的负载信息,表示连接实例的负载信息的平均值。
64、可选地,输出模块,进一步用于:
65、获取负载超过预设负载最高阈值的连接实例作为落伍者连接实例,获取负载低于预设负载最低阈值的连接实例作为低负载连接实例,从落伍者连接实例的分区中选取待迁移的分区,将待迁移的分区迁移至低负载连接实例,并判断分区迁移后的迁移影响因子是否高于分区迁移前的迁移影响因子。
66、若高于,则将待迁移的分区迁移至低负载连接实例,生成迁移计划。
67、若不高于,则使用概率方程决定是否将待迁移的分区迁移至低负载连接实例,生成迁移计划。
68、另一方面,提供一种面向流连接算子中落伍者优化设备,所述面向流连接算子中落伍者优化设备包括:处理器;存储器,所述存储器上存储有计算机可读指令,所述计算机可读指令被所述处理器执行时,实现如上述面向流连接算子中落伍者优化方法中的任一项方法。
69、另一方面,提供了一种计算机可读存储介质,所述存储介质中存储有至少一条指令,所述至少一条指令由处理器加载并执行以实现上述面向流连接算子中落伍者优化方法中的任一项方法。
70、本发明实施例提供的技术方案带来的有益效果至少包括:
71、本发明实施例中,为分区、通信、矩阵和资源建立模型,并对连接实例之间的负载不平衡和状态迁移成本等问题进行形式化。
72、通过结合基于哈希和基于键的数据分区,构建一个两级路由策略以进行工作负载分配。它允许将分区从“落伍者”重新分配到其他连接实例,以实现负载均衡。
73、为“落伍者”的工作负载调整所导致的状态迁移成本,实现一个细粒度的评估模型。该模型有助于在数据传输成本和迁移收益之间做出权衡。
74、在现有数据集上进行实验。通过综合评估,与现有的最先进工作相比,所提出的策略在吞吐量和延迟方面提供了明显的改进。
本文地址:https://www.jishuxx.com/zhuanli/20240801/243092.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 YYfuon@163.com 举报,一经查实,本站将立刻删除。
下一篇
返回列表