分布式流处理系统中的网络感知分组策略
在分布式流处理系统中,不同的通信模式差异巨大,如何根据网络距离对消息进行分组以提高性能,一直是一个关键问题。为解决这一问题,提出了一种名为 Squirrel 的网络感知分组框架,用于将元组分配到不同的网络通道。
1. 背景知识
1.1 Flink 架构
Flink 是一个典型的开源流处理框架,用于低延迟流应用。Flink 集群由三种进程组成:
- 客户端(Client) :接收并解析程序代码,将其转换为数据流图(DAG),然后提交给作业管理器。
- 作业管理器(JobManager) :负责数据流的分布式执行,监控每个操作符和流的状态与进度,调度和部署新操作符,并在发生故障时进行检查点和恢复。
- 任务管理器(TaskManager) :将每个操作符作为任务实例启动,向作业管理器报告操作符的状态和进度,管理缓冲池以缓冲流数据,并维护网络连接以在操作符之间传输消息。
1.2 传统流分组策略
传统流分组策略可分为四类:
| 策略类型 | 代表策略 | 特点 |
| — | — | — |
| 原始盲目型 | 随机分组(Shuffle Grouping)、键分组(Key Grouping) | 随机分组通常以轮询方式转发消息,使每个下游任务接收相同数量的消息;键分组通常通过哈希实现,确保具有相同键的消息由同一个下游任务处理。 |
| 数据倾斜型 | 部分键分组(PKG)、DStream、DKG | PKG 使用经典的二选
超级会员免费看
订阅专栏 解锁全文
1383

被折叠的 条评论
为什么被折叠?



