AWS Kinesis
ネタざっくり備忘録
AWS Cli
Kinesisがどういうやり取りしてるかは、AWSCLI実行するのが一番わかりやすい。
※公式https://docs.aws.amazon.com/ja_jp/streams/latest/dev/fundamental-stream.html
細かい動作が書いてあるところ(読み取り時の細かい挙動とか)
Streamって何
データが溜まってるところ。
Streamに溜まるデータはパーティションキーによってシャードに割り当てられる(シャード数によって割り当てられるシャードが変わる)
シャードって何
Streamにたまっているデータをコンシューマに渡すための口。
Streamを作るときにシャードの数を指定できる。
Stream内のデータを取得するためのがシャードが決まっている(というかStreamにデータを登録する時点でそのデータがどのシャードで取得できるかが割り当てられる)
cli使うと分かるけど、データの取得はシャードに対して行う。
Kinesisのシャードの割り当てのルール
Patition key の値に応じてどのシャードを使うかが割り当てされる。
※シャードを増やした状態でawscli使ってput-recordsした結果見ると感覚が掴みやすい。
シャードの読み込み位置の話
シャードイテレータを取得する時の指定の仕方で、シャードの最初からとか、指定したシーケンスの続きからとかが指定できる。
※aws cliだと↓の赤字部分
aws kinesis get-shard-iterator --shard-id shardId-000000000000 --shard-iterator-type TRIM_HORIZON --stream-name Foo
KinesisClientLiblary(KCL)におけるLATESTとTRIM_HORIZONの挙動について
チェックポイント
DynamoDBにシャード単位?で、どこまで読み込んだかのシーケンスが記録されていて、シーケンスを記録するアクションがチェックポイント。
チェックポイントに記録されているシーケンス番号より古いシーケンス番号でチェックポイントを記録しようとすると実行時例外。