2016-07-11 4 views

Antwort

1

Wahrscheinlich in der Dokumentation nicht, aber auf ein allgemeines Verständnis dieses Dienstes going basiert:

  • „Grob“ Bestellung soll in der Reihenfolge zu sagen, sie sind ein einfacher Weg, in dem die Server empfängt und speichert sie intern. Wenn Sie einen single-threaded Plattenproduzenten haben, werden sie in der gleichen Reihenfolge gesendet, in der Sie sie senden.

  • Sobald Sie mit mehreren Producer-Threads/Hosts beschäftigen, hängt es vollständig davon ab, welche Anfrage zuerst über die Netzwerk, in AWS und in den Backend-Code, der die Anfragen anordnet. Selbst wenn Anfrage A vor Anfrage B empfangen wird, kann Anfrage B den Backend-Code schneller durchlaufen und somit schneller gespeichert werden.

Nun, diese Informationen mit einer spezifischeren Antwort auf Ihre Frage zu geben:

  • Realistisch betrachtet, der Back-End-Code ist recht schnell - ein Single-Threaded Kinesis Produzent mit einer guten Anbindung an AWS (wie EC2) kann irgendwo im Bereich von 50-200 single-record PutRecord Aufrufe pro Sekunde unterstützen. Basierend darauf ist es sehr wahrscheinlich, dass diese "Grobheit" im Bereich von 5 bis 20 Millisekunden liegt.

Wenn Sie Notwendigkeit genaue Reihenfolge, sollten entweder eine Single-Threaded-Hersteller und/oder mit dem SequenceNumberForOrdering Parameter

1

Auf der Produzent Seite, die Datensätze, die auf dem gleichen Shard platziert sind sequentiell.

Wenn jedoch mehrere Datensätze, die in den Stream gepusht werden, auf verschiedenen Shards platziert werden, ist die Reihenfolge für Sie wichtig. Sie sollten den "ApproximateArrivalTimestamp" -Wert jedes Datensatzes auf der Seite des Verbrauchers überprüfen.

In Java ist dieser Zeitstempelwert java.util.Date und die Auflösung ist in Millisekunden.

Jeder Datensatz Amazon Kinesis enthält einen Wert, ApproximateArrivalTimestamp, das gesetzt wird, wenn ein Strom erfolgreich empfängt und speichert einen Datensatz. Dies wird allgemein als serverseitiger Zeitstempel bezeichnet, während ein clientseitiger Zeitstempel festgelegt wird, wenn ein Datenerzeuger den Datensatz in einem Stream erstellt oder sendet (ein Datenproduzent ist eine Datenquelle, die Datensätze in einen Stream einfügt, zum Beispiel mit PutRecords). Der Zeitstempel hat eine Genauigkeit von Millisekunden. Es gibt keine Garantien über die Zeitstempelgenauigkeit, oder dass der Zeitstempel immer größer wird. Beispielsweise können Datensätze in einem Shard oder über einen Stream Zeitstempel haben, die nicht in der richtigen Reihenfolge sind.

http://docs.aws.amazon.com/kinesis/latest/APIReference/API_GetRecords.html