Wie hängen Checkpoints und Trimming in der AWS KCL-Bibliothek zusammen?Amazon KCL Checkpoints und Trim Horizon
Die Dokumentation Seite Startup Handhabung, Shutdown und Throttling sagt:
standardmäßig die KCL Datensätze aus der Spitze des Strom ;, lesen, die der zuletzt hinzugefügten Datensatz beginnt. Wenn in dieser Konfiguration eine datenerzeugende Anwendung dem Stream Datensätze hinzufügt, bevor irgendwelche empfangenden Datensatzprozessoren ausgeführt werden, werden die Datensätze nach ihrem Start von den Aufzeichnungsprozessoren nicht gelesen.
Um das Verhalten der Aufzeichnungsprozessoren zu ändern, so dass es immer Daten vom Anfang des Streams liest, stellen Sie den folgenden Wert in den Eigenschaften für Ihre Amazon Kinesis Streams Anwendung Datei:
initialPositionInStream = TRIM_HORIZON
Die Dokumentation Seite Entwicklung eines Amazon Kinesis-Client-Bibliothek für Endverbraucher in Java sagt:
Streams erfordert, dass der Aufzeichnungsprozessor Aufzeichnungen über die bereits in einem Shard verarbeiteten Datensätze führt. Die KCL kümmert sich um dieses Tracking für Sie, indem Sie einen Prüfpunkt (IRecordProcessorCheckpointer) ProcessRecords übergeben. Der Aufzeichnungsprozessor ruft die Prüfpunktmethode auf dieser Schnittstelle auf, um die KCL darüber zu informieren, wie weit es bei der Verarbeitung der Datensätze im Shard fortgeschritten ist. In dem -Ereignis, das der Worker fehlschlägt, verwendet die KCL diese Information, um die Verarbeitung des Shards bei dem letzten bekannten verarbeiteten Datensatz neu zu starten.
Die erste Seite scheint zu sagen, dass der KCL an der Spitze des Stroms wieder aufnimmt, die zweite Seite an dem letzten bekannten verarbeiteten Aufzeichnungs (das wurde von den RecordProcessor
mit dem checkpointer
als verarbeitet markiert). In meinem Fall muss ich unbedingt beim letzten bekannten verarbeiteten Datensatz neu starten. Muss ich initialPositionInStream auf TRIM_HORIZON setzen?
Vielen Dank, also in der Realität die initialPositIionInStream gilt, um den Wert zu bestimmen, um zu starten, wenn kein Chekpoint verfügbar ist? – Edmondo1984
Ja, wird verwendet, wenn in Ihrem KCL keine Kontrollpunkte gespeichert sind. –