15.
データ入力イメージ
Stream
Shard-0
Shard-1
Data
Record
Data
Record
Data
Record
Kinesisは、受け取ったデータをShardに振り分ける
16.
データ入力イメージ
Stream
Shard-0
Shard-1
Data
Record
Data
Record
Data
Record
Data Recordに設定されたパーティションキーを基にShard
に分配
DataRecordの中身
データブロブ
(Max 50KB)
パーティ
ションキー
(Max 256B)
26.
Kinesis Client Library サンプルコード
public class SampleRecordProcessor implements IRecordProcessor {
@Override
public void initialize(String shardId) {
LOG.info("Initializing record processor for shard: " + shardId);
this.kinesisShardId = shardId;
}
@Override
public void processRecords(List<Record> records, IRecordProcessorCheckpointer checkpointer) {
LOG.info("Processing " + records.size() + " records for kinesisShardId " + kinesisShardId);
// Process records and perform all exception handling.
processRecordsWithRetries(records);
// Checkpoint once every checkpoint interval.
if (System.currentTimeMillis() > nextCheckpointTimeInMillis) {
checkpoint(checkpointer);
nextCheckpointTimeInMillis = System.currentTimeMillis() + CHECKPOINT_INTERVAL_MILLIS;
}
}
}
[Sample RecordProcessor ]
27.
Kinesis Client Library サンプルコード
IRecordProcessorFactory recordProcessorFactory = new SampleRecordProcessorFactory();
Worker worker = new Worker(recordProcessorFactory, kinesisClientLibConfiguration);
int exitCode = 0;
try {
worker.run();
} catch (Throwable t) {
LOG.error("Caught throwable while processing data.", t);
exitCode = 1;
}
[Sample Worker]
28.
Kinesis Client Libraryの動き
Stream
Shard-0
Shard-1
Kinesis
アプリケーション
(KCL)
ワーカー シーケンス番号
Instance A 12345
Instance B 98765
Data
Record
(12345)
Data
Record
(24680)
Data
Record
(98765)
DynamoDB
Instance A
Kinesis
アプリケーション
(KCL)
Instance B
1. Kinesis Client LibraryがShardからData Recordを取得
2. 設定された間隔でシーケンス番号をそのワーカーのIDをキーにした
DynamoDBのテーブルに格納
(*)実際のKey, Attribute名は異なります。
29.
Kinesis Client Libraryの動き – 可用性
Stream
Shard-0
Kinesis
アプリケーション
(KCL)
ワーカー シーケンス番号
Instance A
→
Instance B
12345
Data
Record
(12345)
Data
Record
(24680)
DynamoDB
Instance A
Kinesis
アプリケーション
(KCL)
Instance B
Instance Aがデータ取得されない状況を検知し、Instance Bが、DynamoDBに
格納されているシーケンス番号からデータ取得を行う
(*)実際のKey, Attribute名は異なります。
30.
Kinesis Client Libraryの動き – 拡張性
Stream
Shard-0
Kinesis
アプリケーション
(KCL)
Shard ワーカー シーケンス
番号
Shard-0 Instance A 12345
Shard-1 Instance A 98765
Data
Record
(12345)
Data
Record
(24680)
DynamoDB
Instance A
Shard-1を増やしたことを検知し、データ取得を開始し、Shard-1のチェックポ
イント情報をDynamoDBに追加
Shard-1
Data
Record
(98765)
New
(*)実際のKey, Attribute名は異なります。
46.
Digital Ad. Tech Metering with Kinesis
Incremental Ad.
Statistics
Computation
Metering Record Archive
Ad Analytics Dashboard
Continuous Ad
Metrics Extraction
47.
Streamをパイプラインのようにつなげるパターン
Data
Sources
Data
Sources
Data
Sources
Kinesis
App
Kinesis
App
Kinesis
App
Data
Sources
Data
Sources
Data
Sources
Kinesis
App
Kinesis
App
Kinesis
App
Kinesis
App
Data Source群A
Data Source群B
Data Source群A用ETL
(クレンジング)
Data Source群B用ETL
(クレンジング)
集計
48.
その他のAWSサービスと連携したアーキテクチャ
AWSEndpoint
Kinesis
App.1
Kinesis
App.2 Redshift
DynamoDB
Kinesis
App.3
Availabilit
y Zone
Shard 1
Shard 2
Shard N
Availabil
ity Zone
Availabil
ity Zone
RDS
企業内データ
アナリスト
BIツールで
統計分析
データ as a Serviceを提供
エンドユーザ向けサービス提供
S3
企業データ
の保存
エンドユーザへの通知
Kinesisによるストリーム保存
Be the first to comment