java-Flink-structuring job以最大化吞吐量


0

我有4种 Kafka 主题,每种类型65个主题。目标是对数据进行一些简单的窗口聚合,并将其写入数据库。

拓扑将类似于:

Kafka ->窗口->减少->数据库写入

在这个混合体的某个地方,我想/需要做一个 union-或者可能几个(取决于每次 coalesce 多少个主题)。

主题中的数据流范围从10K到>200K消息/分钟。

我有一个四节点的flink集群,每个节点有30个 core。如何构建这些拓扑以分散负载?

1 答案


0

我写这个答案是假设65个相同类型的主题中的每一个都包含相同类型的数据。

这个问题最简单的解决方案是更改Kafka设置,这样您就有4个主题,每个主题有65个分区。然后在程序中有4个数据源,具有高度并行性(65),这自然分布在集群中。

如果无法更改设置,我认为您可以做两件事:

    一种可能的解决方案是创建flinkkafcumer的修改版本,其中一个源可以使用多个主题(而不是一个主题的多个分区)。有了这个改变,它的 job 方式就好像使用了许多分区,而不是许多主题。如果您想使用此解决方案,我将ping邮件列表以获取对此的支持。无论如何,这将是对Flink代码的一个有价值的补充。

我认为第一种选择更可取。


我来回答

写文章

提问题

面试题