2016-07-11 14 views

答えて

1

おそらくドキュメントではなく、本サービスの一般的な理解に基づいたつもりはない:

  • 「粗」の順序付けは、彼らが順番にいるというのが簡単な方法であることを意味するものでサーバーはそれらを受信して​​内部的に保管します。シングルスレッドレコードプロデューサをお持ちの場合、それらは同じ順序で送信されます。

  • 複数のプロデューサスレッド/ホストを扱うと、どのリクエストが最初にネットワーク、AWS、そして要求を発注するバックエンドコードに変換します。リクエストBの前にリクエストAが受信されたとしても、リクエストBはバックエンドコードを介してより速くそれを速く格納するかもしれません。

は今、あなたの質問に、より具体的な答えを与えるために、その情報を使用して:現実的

  • を、バックエンドのコードは非常に高速である - AWSへの接続が良好でシングルスレッドキネシスプロデューサー(EC2など)は、1秒あたり50〜200の単一レコードのPutRecordコールの範囲のどこかをサポートできます。これに基づいて、この「粗さ」は5〜20ミリ秒の範囲内にある可能性が非常に高いです。

あなたは必要正確な順序は、シングルスレッドのプロデューサーおよび/またはSequenceNumberForOrderingパラメータプロデューサー

1

を使用してのいずれかを使用することを検討している場合、同じシャード上に置かれているレコードがありますシーケンシャル。

しかし、ストリームにプッシュされた複数のレコードが異なるシャードに置かれていて、順序が重要です。 コンシューマ側の各レコードの「ApproximateArrivalTimestamp」の値を確認する必要があります。

Javaでは、そのタイムスタンプ値はjava.util.Dateで、解像度はミリ秒単位です。

各アマゾンキネシスレコードが値、 ApproximateArrivalTimestampを含むストリームが正常に 受信して、レコードを格納する場合、そのが設定されています。 データプロデューサがストリームにレコードを作成または送信すると、クライアント側のタイムスタンプが設定されます(データプロデューサ は、データレコードをストリームに格納する任意のデータソースです。これは、通常、 というサーバー側のタイムスタンプと呼ばれます)たとえば、PutRecordsの場合は )。タイムスタンプの精度はミリ秒です。 には、タイムスタンプの正確性に関する保証はなく、タイムスタンプは常に であることが保証されています。たとえば、シャード内またはストリーム内のレコード には、タイムスタンプの順序が間違っている可能性があります。

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