0

Apache Kafka で要求/応答パターンを実装するにはどうすればよいですか? 実装は、サービス インスタンス (kubernetes の fe ポッド) のスケーリングでも機能する必要があります。

うさぎでは、他のサービスからの応答を受信するインスタンスごとに、永続的ではない一時的な一意のキューを作成できます。このキューは、接続が失われたとき (サービスのインスタンスがダウンしたとき) に自動的に削除されます。

どうすればカフカでこれを行うことができますか? このソリューションを拡張する方法は?

ノードjsを使用しています

4

1 に答える 1

1

Rabbit の例が応答を受信するためのチャネルについてのみ話している (要求の送信を無視している) ことを考えると、(Kafka は動的なトピックの作成/削除を特にうまく処理しないため) そのサービスへの応答に単一のトピックを用意することが最も実用的です。ただし、スループットの目標を達成するために必要なパーティションの数は多くありません。リクエスタ インスタンスは、消費するパーティションをランダムに選択し (複数のインスタンスが同じパーティションを消費する可能性があります)、そのパーティションと一意の相関 ID をリクエストと通信します。次に、応答が選択されたパーティションに対して生成され、相関 ID でキー付けされます。リクエスターは、待機している相関 ID のセットを追跡し、そのセットにないキーを持つ応答を無視します。

相関 ID の衝突のリスクは、リクエスター同士で調整することによって軽減できます (おそらく etcd/zookeeper/consul などを使用します)。

これは、Kafka がそれほど適しているメッセージング パターンではありません (これは間違いなく最善の組み合わせではありません) が、実行可能です。

于 2021-09-03T13:05:31.150 に答える