網頁

2021/12/25

AWS Kinesis Data Streams架構簡介

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轉交到指定目的地等。



沒有留言:

張貼留言