Amazon Kinesis Data Streams的架構簡介如下。
架構
- producer - 發送資料到Kinesis Data Streams的應用程式。
- consumer - 從Kinesis Data Streams獲取資料的應用程式,又稱為Kinesis Data Streams Application。
- shard - Kinesis Data Stream的資料處理及容量單位,包含一連串的record。
- record - Kinesis Data Streams的資料單位,由sequence number、parition key及data blob組成。
- partition key - record根據partition key放在不同的shard。
- sequence number - 每一個record的唯一序號。
- data blob - producer發送的資料本體。
┌───────────────────────────────────┐ Kinesis
│ Amazon Kinesis Data Stream │ Data Streams
│ │ Applications
│ ┌─────────────────────────────┐ │
┌──────────┐ │ │ shard1 │ │ ┌──────────┐
│ │ │ │ ┌───────┬───────┬───────┐ │ │ │ │
│ producer ├───┼──┼─►│record1│record2│record3├──┼──┼───►│ consumer │
│ │ │ │ └───────┴───────┴───────┘ │ │ │ │
└──────────┘ │ └─────────────────────────────┘ │ └──────────┘
│ ┌─────────────────────────────┐ │
┌──────────┐ │ │ shard2 │ │ ┌──────────┐
│ │ │ │ ┌───────┬───────┬───────┐ │ │ │ │
│ producer ├───┼──┼─►│record1│record2│record3├──┼──┼───►│ consumer │
│ │ │ │ └───────┴───────┴───────┘ │ │ │ │
└──────────┘ │ └─────────────────────────────┘ │ └──────────┘
│ ┌─────────────────────────────┐ │
┌──────────┐ │ │ shard3 │ │ ┌──────────┐
│ │ │ │ ┌───────┬───────┬───────┐ │ │ │ │
│ producer ├───┼──┼─►│record1│record2│record3├──┼──┼───►│ consumer │
│ │ │ │ └───────┴───────┴───────┘ │ │ │ │
└──────────┘ │ └─────────────────────────────┘ │ └──────────┘
└───────────────────────────────────┘
應用場景
Producer可能是一個手機或網路應用程式,處理業務邏輯中將持續把資料如log以record依設定的partition key發送到Kinesis Data Streams中特定的shard。Consumer可能是一個Lambda或是另一個EC2應用程式,當Kinesis Data Stream的shard中有record的時候會持續抓取下來並處理,可能是轉交到資料庫或S3存放起來,或送到Kinesis Data Analytics進行分析,或送到Amazon EMR進行大數據理,或送到Kinesis Data Firehose轉交到指定目的地等。
沒有留言:
張貼留言