2017-03-09 15 views
0

現在、大量のセンサーデータを受信するアプリケーションがあります。各センサーは固有のセンサーID(例: '5834f7718273f92cc326f620')を持ち、異なる間隔で状況を発信します。入ってくるメッセージの処理順序は重要ではありません。たとえば、あるセンサの新しいメッセージを別のセンサの古いメッセージより先に処理することができます。ただし、重要なことは、特定のセンサーの各メッセージを順次処理する必要があることです。彼らがストリームに到着した順序で。AWSキネシスストリームFIFOキュー

私はKinesisクライアントライブラリを見て、KCLがシャードごとに1つのプロセッサにメッセージをプッシュすることを理解しました。ストリームにシャードが1つだけあれば、プロセッサは1つしかなく、ボトルネックが発生しないということですか?あるいは、KCLに複数のプロセッサが搭載されていて、おそらくパーティションキーを使用すると、同じパーティションキーのメッセージが同時に処理されることはありませんか?

注:sqs fifoを見てきましたが、1秒あたり300メッセージの制限が間もなく問題になるため、これを排除しました。

答えて

1

はい、各シャードは、特定の瞬間(アプリケーションごとに)に1つのプロセッサしか持つことができません。

しかし、あなたのキネシスputレコード要求のパーティションキーとしてsensor idを使用できます。 (see here

これは、すべてのセンサーイベントが同じシャードとプロセッサーに入ることを保証します。 これを実行すると、プロセスとシャードの規模を変更することはできますが、各センサーイベントは単一のプロセッサで処理されます。

関連する問題