『JAWS-UG CLI専門支部 #22 - Kinesis入門』参加メモ
- イベント:https://jawsug-cli.doorkeeper.jp/events/24370
- スライド:http://www.slideshare.net/daikumatan/jawsugcli-22-kinesis3
- 資料:http://qiita.com/daikumatan/items/3828b2ce5ff833ce2f4a
実際には、この資料ページから順にリンクされて進んでいき #1 〜 #8 があります。 - 講師: @daakumatan さん
スライドと資料がとても丁寧で、進行は比較的速いハンズオン形式でしたが詰まることなく進められました。本当に感謝です。ありがとうございます。 以下はメモです。
一言で言うと
kinesisとは、大規模なストリーミングデータをリアルタイムで収集可能なAWSのフルマネージドサービス。
キーワード
- キュー
- リアルタイム
- スケーラビリティ
- 複数のconsumerが利用可能。→経路分け。
- 高い信頼性・可用性
構成
- Stream: kinesisのサービス利用の単位。
Stream 1:n Shard - Shard: スループットの単位。1Shardあたりのスループットは決められている。
Shard 1:n Data Record - Data Record: データ、パーティションキー、シーケンスナンバ
- データ: 任意。ユーザがputする目的物。
- パーティションキー: どのShardに振り分けるかを決定するキー
- シーケンスナンバ: Stream内で Data Record をユニークに識別する番号。putするとkinesisが発番してくれる。
Shard
- Shardのスループットは
- 入力:1.0MB/秒、1,000件/秒
- 出力:2.0MB/秒、5件/秒
ハンズオン中は見逃していたけど、件数では入力のほうが値が大きくデータサイズでは出力のほうが大きいので、イベントの発生に同期して都度putされたデータをある程度まとめてガツッとgetするような使い方を想定するから、こんな感じのバランスなのだろうか。
shardを分割すると新しいshard id が2つ作成される。
- 古いshardはクローズされるが、そのまま(表示上は)残る。(ステータスも"closed"になってました。)
Shard数の分割はマネジメントコンソールからはできない。CLIのみ。
shard-iterator は取得から5分間のみ有効。
パーティションキー
シーケンスナンバ
シーケンスはストリームの中でユニーク(Shardをまたいでユニーク)な値。
シーケンスの順番、だいたい時系列。ちゃんと保証するにはオプションを付けるそう。
その他
データを蓄積できるのは24時間まで。変更不可。
KCL(Kinesis Client Library)はEC2上で動作させる必要がある。
SQSとの違い。
- SQSには順序立ててデータ取得するというのはできない。
- スケールさせやすい。
- (もっとあったけど聞き逃しました。)
操作(コマンド)はputかgetしかない。deleteはできない!stareamごと消すのはできる。