本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
處理大型記錄
Amazon Kinesis Data Streams 支援高達 10 MB (MiBs的記錄。建議將此功能用於處理超過預設 1 MiB 記錄大小限制的間歇性資料承載。現有和新建立串流的預設記錄大小上限設定為 1 MiB。
此功能有利於物聯網 (IoT) 應用程式、變更資料擷取 (CDC) 管道,以及需要偶爾處理較大資料承載的機器學習工作流程。若要開始在串流中使用大型記錄,請更新串流的記錄大小上限。
重要
對於寫入,個別碎片輸送量限制為 1 MB/s,對於讀取,2 MB/s 保持不變,但支援更大的記錄大小。Kinesis Data Streams 旨在適應間歇性大型記錄,以及小於或等於 1 MiB 的記錄基準流量。它的設計無法容納持續大量大型記錄擷取。
更新您的串流以使用大型記錄
使用 Kinesis Data Streams 處理較大的記錄
導覽至 Kinesis Data Streams 主控台。
選取您的串流,然後前往組態索引標籤。
按一下編輯,其位於記錄大小上限旁。
設定您的記錄大小上限 (最多 10 MiB)。
儲存您的變更。
此設定只會調整此 Kinesis 資料串流的記錄大小上限。在提高此限制之前,請確認所有下游應用程式都可以處理較大的記錄。
您也可以使用 CLI AWS 更新此設定:
aws kinesis update-max-record-size \ --stream-arn \ --max-record-size-in-ki-b 5000
使用大型記錄最佳化串流效能
建議將大型記錄維持在整體流量的 2% 以下。在串流中,每個碎片的輸送量容量為每秒 1 MiB。為了容納大型記錄,Kinesis Data 串流最多爆量 10 MiBs同時平均每秒 1 MiB。支援大型記錄的此容量會持續重新填入串流。重新填入速率取決於大型記錄的大小和基準記錄的大小。為了獲得最佳結果,請使用統一分佈的分割區索引鍵。如需 Kinesis 隨需擴展方式的詳細資訊,請參閱隨需模式功能和使用案例。
使用大型記錄緩解限流
緩解限流
在生產者應用程式中使用指數退避實作重試邏輯。
使用隨機分割區索引鍵,將大型記錄分散到可用的碎片。
將承載存放在 Amazon S3 中,並僅傳送中繼資料參考至串流,以取得大型記錄的連續串流。如需詳細資訊,請參閱使用 Amazon Kinesis Data Streams 處理大型記錄
。
使用 Kinesis Data Streams APIs 處理大型記錄
大型記錄支援引進一個新的 API,並更新兩個現有的控制平面 APIs,以處理高達 10 MiBs 的記錄。
用於修改記錄大小的 API:
UpdateMaxRecordSize:設定現有串流的記錄大小上限,上限為 10 MiBs。
現有 APIs更新:
CreateStream:新增選擇性MaxRecordSizeInKiB參數,以在建立串流期間設定記錄大小限制。DescribeStreamSummary:傳回MaxRecordSizeInKiB欄位以顯示目前的串流組態。
列出的所有 APIs 都會維持現有串流的回溯相容性。如需完整的 API 文件,請參閱 Amazon Kinesis Data Streams Service API 參考。
AWS 元件與大型記錄相容
下列 AWS 元件與大型記錄相容:
| 元件 | 描述 |
|---|---|
|
AWS 開發套件 |
AWS SDK 支援處理大型記錄。您可以使用 AWS SDKs 中的可用方法,將串流的記錄大小上限更新至 10 MiB。如需詳細資訊,請參閱搭配 AWS SDK 使用此服務。 |
|
Kinesis 消費者程式庫 (KCL) |
從 2.x 版開始,KCL 支援處理大型記錄。若要使用大型記錄支援,請更新串流 |
|
Kinesis Producer Library (KPL) |
從 1.0.5 版開始,KPL 支援處理大型記錄。若要使用大型記錄支援,請更新串流maxRecordSize的 ,並使用 KPL。如需詳細資訊,請參閱使用 Amazon Kinesis Producer Library (KPL) 開發生產者。 |
|
Amazon EMR |
Amazon EMR with Apache Spark 支援處理高達 Kinesis Data Streams 限制 (10 MiBs 的大型記錄。若要使用大型記錄支援,請使用 |
|
Amazon Data Firehose |
與 Kinesis Data Streams 搭配使用時,具有大型記錄的 Amazon Data Firehose 行為取決於交付目的地: 對於需要以大型記錄交付至 Snowflake 或 Redshift 的應用程式,請先將資料交付至 Amazon S3。之後,使用擷取、轉換、載入 (ETL) 程序載入資料。對於所有其他目的地,請在proof-of-concept環境中使用大型記錄測試行為,然後再擴展到生產用量。處理大型記錄會因目的地而異。 |
|
AWS Lambda |
AWS Lambda 支援最多 6 MiBs承載。此限制包括轉換為 base-64 編碼的 Kinesis 承載,以及與事件來源映射 (ESM) 相關聯的中繼資料。對於小於 6 MiBs的記錄,Lambda 會使用 ESM 來處理它們,而不需要額外的組態。對於大於 6 MiBs的記錄,Lambda 會使用失敗時的目的地來處理它們。您必須使用 ESM 設定失敗時目的地,以處理超過 Lambda 處理限制的記錄。傳送至失敗時目的地的每個事件都是 JSON 文件,其中包含有關失敗調用的中繼資料。 無論記錄大小為何,建議在 ESM 中建立失敗時目的地。這可確保不會捨棄任何記錄。如需詳細資訊,請參閱設定失敗呼叫的目的地。 |
|
Amazon Redshift |
從 Kinesis Data Streams 串流資料時,Amazon Redshift 僅支援小於 1 MiB 的記錄大小。超過此限制的記錄不會處理。未處理的記錄會記錄為 |
|
Kinesis Data Streams 的 Flink 連接器 |
使用來自 Kinesis Data Streams 的資料有兩種方法:Kinesis 來源連接器和 Kinesis 接收器連接器。來源連接器支援處理小於 1 MiB 的記錄,最多 10 MiBs 請勿將接收器連接器用於大於 1 MiB 的記錄。如需詳細資訊,請參閱使用連接器透過 DataStream API 在 Amazon Managed Service for Apache Flink 中移動資料。 |
支援大型記錄的區域
此 Amazon Kinesis Data Streams 功能僅適用於下列 AWS 區域:
| AWS 區域 | 區域名稱 |
|---|---|
|
eu-north-1 |
歐洲 (斯德哥爾摩) |
|
me-south-1 |
Middle East (Bahrain) |
|
ap-south-1 |
亞太地區 (孟買) |
|
eu-west-3 |
Europe (Paris) |
|
ap-southeast-3 |
亞太地區 (雅加達) |
|
us-east-2 |
美國東部 (俄亥俄) |
|
af-south-1 |
非洲 (開普敦) |
|
eu-west-1 |
歐洲 (愛爾蘭) |
|
me-central-1 |
中東 (阿拉伯聯合大公國) |
|
eu-central-1 |
歐洲 (法蘭克福) |
|
sa-east-1 |
南美洲 (聖保羅) |
|
ap-east-1 |
亞太地區 (香港) |
|
ap-south-2 |
亞太地區 (海德拉巴) |
|
us-east-1 |
美國東部 (維吉尼亞北部) |
|
ap-northeast-2 |
亞太地區 (首爾) |
|
ap-northeast-3 |
亞太地區 (大阪) |
|
eu-west-2 |
歐洲 (倫敦) |
|
ap-southeast-4 |
亞太地區 (墨爾本) |
|
ap-northeast-1 |
亞太地區 (東京) |
|
us-west-2 |
美國西部 (奧勒岡) |
|
us-west-1 |
美國西部 (加利佛尼亞北部) |
|
ap-southeast-1 |
亞太地區 (新加坡) |
|
ap-southeast-2 |
亞太地區 (悉尼) |
|
il-central-1 |
以色列 (特拉維夫) |
|
ca-central-1 |
加拿大 (中部) |
|
ca-west-1 |
加拿大西部 (卡加利) |
|
eu-south-2 |
歐洲 (西班牙) |
|
cn-northwest-1 |
中國 (寧夏) |
|
eu-central-2 |
歐洲 (蘇黎世) |
| us-gov-east-1 | AWS GovCloud (美國東部) |
| us-gov-west-1 | AWS GovCloud (美國西部) |