Wie kafka Nachrichtendaten mit Partition Offset in einer S3 PutObject-Transaktion zu Exactly Once Semantik zu speichern? Ist es möglich?Wie erreicht man genau einmal Semantik beim Archivieren von Kafka-Nachricht in AWS S3?
Antwort
Ja sollte es möglich sein. Eine Möglichkeit, dies zu tun, ist die Kontrolle über das Offset-Management.
Ihr Kunde kann eine Nachricht von Kafka um eine Uhrzeit lesen und diese als Objekt in AWS ablegen, während der Offset + Partitionsname als Schlüssel in der AWS gespeichert wird. Nun sagen wir, Ihr Client ist abgestürzt. Wenn Sie das nächste Mal auftauchen, fragen Sie S3, um herauszufinden, was der letzte Versatz in S3 ist, und beginnen Sie, die Nachricht von dort zu lesen. Für zusätzlichen Schutz, bevor Sie Nachricht in S3 setzen, überprüfen Sie, ob Objekt mit diesem Schlüssel (Es wäre besser, wenn Ihr Produzent UUID für Nachricht produziert und Sie können das verwenden) existiert in S3, wenn ja, überschreiben Sie es nicht, stattdessen überspringen Sie die Nachricht.
kafkaConsumer.subscribe(Arrays.asList(topicName), new ConsumerRebalanceListener() {
public void onPartitionsRevoked(Collection<TopicPartition> partitions) {}
public void onPartitionsAssigned(Collection<TopicPartition> partitions) {
Iterator<TopicPartition> topicPartitionIterator = partitions.iterator();
while(topicPartitionIterator.hasNext()){
TopicPartition topicPartition = topicPartitionIterator.next();
System.out.println("Current offset is " + kafkaConsumer.position(topicPartition) + " committed offset is kafkaConsumer.committed(topicPartition)
System.out.println("Resetting offset to " + startingOffset);
kafkaConsumer.seek(topicPartition, startingOffset);
}
}
}
});
Hoffnung, die
- 1. Warum ist genau einmal Semantik undurchführbar?
- 2. Brechen von AWS S3 Uploads
- 3. Xcode: Archivieren eines Gesamtziels nur einmal möglich
- 4. Wie man Card Stack UI genau wie Zunder erreicht?
- 5. Verwendet AWS CLI beim Hochladen von Daten in S3 SSL?
- 6. Upload von AWS Lambda zu AWS S3
- 7. Wie fügt man die Cachesteuerung in AWS S3 hinzu?
- 8. Fehler beim Archivieren
- 9. Wie genau erreicht PHP 'dynamische' Variablen?
- 10. PHP Wie erstellt man Ordner in den aws s3 Eimer?
- 11. AWS Cognito und S3
- 12. 'AccessKeyId' Fehlerausgabe beim Ausführen von aws s3-Befehle
- 13. dynamische Pfade in AWS S3
- 14. Zugriff aws s3 public bucket
- 15. AWS S3-Zugriff verweigert
- 16. Wie lädt man AWS SDK in CakePHP?
- 17. Wie legt man einen eindeutigen aws S3-Dateinamen fest?
- 18. Aws S3 CompleteMultipartUpload-Fehler
- 19. Android und AWS S3
- 20. AWS S3 Objektliste
- 21. AWS-Inhaltstyp-Einstellungen in S3 mit Boto3
- 22. AWS S3 mit Grails
- 23. Wie kann ich CertificateError von AWS-S3 in Django lösen?
- 24. Wie erfolgt die Bereitstellung in AWS S3 von Codeship?
- 25. Inserieren von Buckets mit AWS :: S3 in Sinatra
- 26. AWS SDK S3 Hochladen von Anmeldeinformationen
- 27. Wie erreicht man const-Korrektheit in C#?
- 28. AWS S3 in Schienen - wie der Parameter s3_signature_version eingestellt wird
- 29. Wie verwende ich AWS S3 zum Speichern von hochgeladenen Bildern?
- 30. OPT Dateien von S3 AWS abgerufen sind
hilft Ja, das ist Ihre Idee möglich. Aber es gibt vielleicht viele Offset + Partition Schlüssel in S3, Abfrage der letzte Offset wird langsamer und langsamer. Und check key existiert in s3 ist auch nicht einfach außer für einige mem db. Darüber hinaus benötigen wir Daten der Gruppe s3 in der Datumszeit, um Daten bei Bedarf in einem bestimmten Datumsbereich wiederherzustellen. Wie man s3 Schlüssel dann entwirft? –