Springクラウドストリームでは、そのプロパティの使用方法は正確にspring.cloud.stream.instanceCount
ですか?スプリングクラウドストリームinstanceCountの目的は何ですか?
私は、その時点で1つ以上のマイクロサービスインスタンスが停止しているため、この値が間違っている場合、どのようにこれがインフラストラクチャの動作に影響を与える可能性がありますか?
Springクラウドストリームでは、そのプロパティの使用方法は正確にspring.cloud.stream.instanceCount
ですか?スプリングクラウドストリームinstanceCountの目的は何ですか?
私は、その時点で1つ以上のマイクロサービスインスタンスが停止しているため、この値が間違っている場合、どのようにこれがインフラストラクチャの動作に影響を与える可能性がありますか?
instanceCount
は、異なる消費者間でデータを分割するために使用されます。 1つ以上のサービスをダウンしても、実際にプロデューサに影響を与えてはいけません。それはブローカの仕事です。
ソースを3つのパーティションに送信すると、instanceCount = 3になり、各インスタンスにはinstanceIndex
で割り当てられたパーティションが割り当てられます。
各インスタンスはデータを消費しますが、インスタンス2がクラッシュした場合でも、0,1はパーティションからデータを読み取っているため、ソースは引き続き通常どおりデータを送信します。
プラットフォームに何らかのリカバリ機能があると仮定すると、クラッシュしたインスタンスは元の状態に戻って操作を再開します。
私たちがまだサポートしていないのは、実行時にパーティションを動的に割り当てることです。将来のリリースではこれをストーリーとして検討しています。
これは、パーティショニングを自然にサポートしていないバインダーにのみ適用されます。 Kafkaを使用すると、パーティションは残りのインスタンス間で再調整されます。たとえば、RabbitMQでは、パーティションごとにキューがあるため、メッセージは再起動されるまでデッドインスタンスのキューに蓄積されます。インスタンス数は、任意のバインダーでパーティション番号を計算する際にモジュロとして使用されます。 –