mehrere Konsumenten pro Kinesis-Shard

8

Ich habe gelesen, dass Sie mehrere Consumer-Apps pro Kinesis-Stream haben können.

Ссылка

Allerdings habe ich gehört, dass Sie nur Verbraucher pro Shard haben können. Ist das wahr? Ich finde keine Dokumentation, die dies unterstützt, und ich kann mir nicht vorstellen, wie das sein könnte, wenn mehrere Verbraucher aus demselben Stream lesen. Natürlich bedeutet das nicht, dass der Produzent Inhalte in verschiedenen Shards für verschiedene Konsumenten wiederholen muss.

    
bhomass 29.12.2015, 01:34
quelle

2 Antworten

10

Die Kinesis-Client-Bibliothek startet Threads im Hintergrund, jeder hört auf 1 Shard im Stream. Sie können keine Verbindung zu einem Shard über mehrere Threads herstellen, dh nach Design.

Ссылка

  

Beispiel: Wenn Ihre Anwendung auf einer EC2-Instanz ausgeführt wird, und   verarbeitet einen Amazon Kinesis-Stream mit vier Shards. Dieses   Instanz hat einen KCL-Worker und vier Record-Prozessoren (ein Record   Prozessor für jeden Shard). Diese vier Plattenprozessoren laufen rein   parallel im selben Prozess.

In der obigen Erläuterung bezieht sich der Begriff "KCL-Worker" auf eine Kinesis-Consumer-Anwendung. Nicht die Fäden.

Aber unten bezieht sich derselbe "KCL-Worker" -Begriff auf einen "Worker" -Thread in der Anwendung; was ist ein runnable.

  

Wenn Sie die KCL verwenden,   Sie sollten sicherstellen, dass die Anzahl der Instanzen den Wert von   Anzahl der Shards (außer bei Ausfallbereitschaft). Jeder Scherbe ist   verarbeitet von genau einem KCL-Worker und hat genau einen korrespondierenden   Record-Prozessor, so dass Sie nie mehrere Instanzen benötigen, um einen zu verarbeiten   Scherbe.

Siehe Worker.java Klasse in der KCL-Quelle.

    
az3 29.12.2015, 10:58
quelle
2

Bis zur Party, aber die Antwort ist, dass Sie mehrere Kunden pro Kinesis-Shard haben können. Eine KCL-Instanz wird nur einen Prozess pro Shard starten, aber Sie können eine andere KCL-Instanz verwenden, die den gleichen Stream (und den gleichen Shard) verwendet, vorausgesetzt, der zweite hat die Berechtigung.

Es gibt jedoch Grenzen, wie in docs , einschließlich:

  

Jeder Shard kann bis zu 5 Transaktionen pro Sekunde für Lesevorgänge unterstützen, bis zu einer maximalen Gesamtdatenrate von 2 MB pro Sekunde.

Wenn Sie einen Stream mit mehreren Consumern haben möchten, in dem jede Nachricht einmal verarbeitet wird, sind Sie vermutlich mit einer Amazon Simple Queue besser dran Service .

    
Cameron Stone 12.05.2017 23:19
quelle