2017-07-19 7 views
1

Im Frühjahr Cloud-Stream, was genau ist die Verwendung dieser Eigenschaft spring.cloud.stream.instanceCount?Was ist der Zweck von Federwolkenstrom instanceCount?

Ich meine, wenn dieser Wert falsch wird, weil zu einem Zeitpunkt eine oder mehrere Mikrodienst-Instanzen ausgefallen sind, wie kann dies das Verhalten unserer Infrastruktur beeinflussen?

Antwort

2

instanceCount wird verwendet, um Daten über verschiedene Verbraucher zu verteilen. Wenn ein oder mehrere Dienste ausfallen, sollte das nicht wirklich Auswirkungen auf Ihre Produzenten haben, das ist die Aufgabe des Maklers.

Nehmen wir an, Sie haben eine Quelle, die Daten an 3 Partitionen sendet, also hätten Sie instanceCount = 3 und jeder Instanz würde eine eigene Partition zugewiesen werden über instanceIndex.

Jede Instanz würde Daten verbrauchen, aber wenn Instanz 2 abstürzt, würde 0,1 immer noch Daten von den Partitionen lesen, und die Quelle würde immer noch Daten wie gewohnt senden.

Angenommen, Ihre Plattform verfügt über eine gewisse Wiederherstellbarkeit, Ihre abgestürzte Instanz sollte wieder zum Leben erweckt werden und ihre Operationen fortsetzen.

Was wir immer noch nicht unterstützen, ist die dynamische Zuweisung von Partitionen zur Laufzeit, wir untersuchen dies als eine Geschichte für eine zukünftige Version.

+0

Beachten Sie, dass dies nur für Ordner gilt, die die Partitionierung nicht unterstützen. Mit Kafka werden die Partitionen in den verbleibenden Instanzen neu gewichtet. Bei RabbitMQ zum Beispiel gibt es eine Warteschlange pro Partition, so dass sich Nachrichten bis zum Neustart in der Warteschlange der toten Instanz ansammeln. Die Instanzzählung wird als Modulo verwendet, wenn die Partitionsnummer mit einem beliebigen Binder berechnet wird. –