3

n 個のパーティションで構成されるトピックがあります。分散処理を行うために、異なるマシンで実行される 2 つのプロセスを作成します。同じグループ ID でトピックにサブスクライブし、n/2 スレッドを割り当てます。それぞれが単一のストリームを処理します (プロセスごとに n/2 パーティション)。

これで負荷分散が達成されますが、プロセス 1 がクラッシュした場合、プロセス 2 はプロセス 1 に割り当てられたパーティションからメッセージを消費できません。

または、HA を構成し、両方のプロセスで n スレッド/ストリームを開始すると、1 つのノードに障害が発生すると、すべてのパーティションが他のノードによって処理されます。しかし、ここでは、すべてのパーティションが一度に 1 つのノードによって処理されるため、分散に問題があります。

両方を同時に達成する方法はありますか?

4

1 に答える 1

2

はい、既存のストリーム処理エンジンを使用します。ユース ケースによっては、 SparkSamzaと同様、 Stormが適しています。

これで独自のロールを作成できますが、すでにお気づきのように、失敗したプロセスと高可用性の管理は難しいものです。一般的に言えば、分散処理には、他の誰かが解決済みの微妙な問題がたくさんあります。あなたの場合、私はその問題に対処するために既存のソフトウェアを使用します。

于 2015-05-06T12:40:25.003 に答える