3

我有一个由 n 个分区组成的主题。为了进行分布式处理,我创建了两个在不同机器上运行的进程。他们使用相同的分组 id 订阅主题并分配 n/2 个线程,每个线程处理单个流(每个进程 n/2 个分区)。

有了这个,我将实现负载分配,但是现在如果进程 1 崩溃,那么进程 2 将无法使用分配给进程 1 的分区中的消息,因为它在开始时只监听 n/2 个流。

否则,如果我为 HA 配置并在两个进程上启动 n 个线程/流,那么当一个节点发生故障时,所有分区将由另一个节点处理。但是在这里,我们已经妥协了分布,因为所有分区将一次由单个节点处理。

有没有办法同时实现以及如何实现?

4

1 回答 1

2

是的,使用现有的流处理引擎。Storm是一个不错的选择,SparkSamza 也是如此,这取决于您的用例。

现在您可以自己动手了,但正如您已经发现的那样,管理失败的进程和高可用性是很棘手的。一般来说,分布式处理充满了许多其他人已经解决的微妙问题。在你的鞋子里,我会使用现有的软件来处理这个问题。

于 2015-05-06T12:40:25.003 回答