下圖演示 Kinesis Data Streams 的高級別架構。建立器會持續將數據推送到 Kinesis Data Streams,而且使用者 可實時處理數據。使用者(如在 Amazon EC2 上運行的自定義應用程序或 Amazon Kinesis Data Firehose 傳輸流)可使用 Amazon DynamoDB、Amazon Redshift 或 Amazon S3 等 AWS 服務存儲其結果。html
Kinesis data stream 是一組分片。每一個分片都有一系列數據記錄。每一個數據記錄都具備一個由 Kinesis Data Streams 分配的序列號。服務器
數據記錄 是存儲在 Kinesis data stream中的數據單位。數據記錄由序列號、分區鍵和數據 Blob 組成,後者是不可變的字節序列。Kinesis Data Streams 不以任何方式檢查、解釋或更改 Blob 中的數據。數據 Blob 能夠是 最多 1 MB。架構
保留期 是數據記錄在添加到流中後可供訪問的時間長度。在建立以後,流的保留期設置爲默認值 24 小時。您可使用 IncreaseStreamRetentionPeriod 操做將保留期增長到最高 168 小時(7 天),使用 DecreaseStreamRetentionPeriod 操做可將保留期減小到最短 24 小時。對於保留期設置爲 24 小時以上的流,將收取額外費用。有關更多信息,請參閱Amazon Kinesis Data Streams 訂價。app
建立器將記錄放入 Amazon Kinesis Data Streams 中。例如,發送日誌數據到流的 Web 服務器是建立器。ide
使用者 從 Amazon Kinesis Data Streams 獲取記錄並進行處理。這些使用者稱爲 Amazon Kinesis Data Streams Application。函數
Amazon Kinesis Data Streams application 是一般在 EC2 實例隊列上運行的流的使用者。ui
能夠開發的使用者有兩種:共享扇出功能使用者和加強型扇出功能使用者。要了解它們之間的區別,以及瞭解如何建立每種使用者,請參閱讀取 Amazon Kinesis Data Streams 中的數據。加密
Kinesis Data Streams 應用程序的輸出多是另外一個流的輸入,這使您可以建立實時處理數據的複雜拓撲。應用程序也可將數據發送到各類其餘 AWS 服務。一個流能夠有多個應用程序,每一個應用程序可同時單獨使用流中的數據。spa
分片 是流中數據記錄的惟一標識序列。一個流由一個或多個分片組成,每一個分片提供一個固定的容量單位。每一個分片都可支持 最多 每秒 5 次交易 可用於讀取,最多可達的最大總數據讀取速率爲 每秒 2 MB 和 最多 每秒 1000 條記錄 可用於寫入,最多可達的最大總數據寫入速率爲 每秒 1 MB (包括分區鍵)。流的數據容量是您爲流指定的分片數的函數。流的總容量是其分片容量的總和。日誌
若是數據速率增長,您能夠增長或減小分配給流的分片數量。
分區鍵 用於按分片對流中的數據進行分組。Kinesis Data Streams 將屬於一個流的數據記錄隔離到多個分片中。它使用與每一個數據記錄關聯的分區鍵肯定指定數據記錄屬於哪一個分片。分區鍵是最大長度限制爲 256 個字節的 Unicode 字符串。MD5 哈希函數用於將分區鍵映射到 128 位整數值並將關聯的數據記錄映射到分片。當應用程序將數據放入流中時,它必須指定一個分區鍵。
每一個數據記錄都有一個序列號,此序列號對於其分片中的每一個密鑰是惟一的。在您使用 client.putRecords
或 client.putRecord
寫入流以後,Kinesis Data Streams 將分配序列號。同一分區鍵的序列號一般會隨時間推移增長。寫入請求之間的時間段越長,序列號越大。
注意
序列號不能用做相同流中的數據集的索引。爲了在邏輯上分隔數據集,請使用分區鍵或者爲每一個數據集建立單獨的流。
Kinesis Client Library 將編譯成應用程序,從而支持以容錯方式使用流中的數據。Kinesis Client Library 確保每一個分片有一個用於運行和處理它的記錄處理器。庫還能夠簡化流中的數據讀取。Kinesis Client Library 使用 Amazon DynamoDB 表存儲控制數據。它會爲每一個正在處理數據的應用程序建立一個表。
Kinesis Client Library 有兩個主要版本。使用哪一個版本取決於要建立的使用者的類型。有關更多信息,請參閱 讀取 Amazon Kinesis Data Streams 中的數據。
Amazon Kinesis Data Streams application 的名稱標識應用程序。每一個應用程序必須具備一個惟一名稱,此名稱的範圍限定於應用程序使用的 AWS 帳戶和區域。此名稱用做 Amazon DynamoDB 中的控制表名稱和 Amazon CloudWatch 指標的命名空間。
當建立器將敏感數據輸入流時,Amazon Kinesis Data Streams 能夠自動加密這些數據。Kinesis Data Streams 使用 AWS KMS 主密鑰進行加密。有關更多信息,請參閱Amazon Kinesis Data Streams 中的數據保護。