本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
處理啟動、關機和節流
以下是您在設計 Amazon Kinesis Data Streams 時應納入考量的一些其他事項。
啟動資料生產者和資料取用者
默認情況下,KCL開始從流的尖端讀取記錄,這是最近添加的記錄。依照這種組態,如果資料產生應用程式於任何接收端記錄處理器執行之前加入記錄至串流,記錄處理器啟動後並不會讀取這些記錄。
若要變更記錄處理器的行為,使其一律從串流開頭處讀取資料,請在您的 Amazon Kinesis Data Streams 應用程式屬性檔案中設定以下數值:
initialPositionInStream = TRIM_HORIZON
根據預設,Amazon Kinesis Data Streams 會 24 小時儲存所有資料。它還支援長達 7 天的延長保留和長達 365 天的長期保留。此時間範圍稱為保留期間。當起始位置設為 TRIM_HORIZON
時,將依保留期間的定義,就串流中最舊的資料啟動記錄處理器。即便使用 TRIM_HORIZON
設定,如果記錄處理器在超過了保留期間很長一段時間後啟動,則串流中的某些記錄將已無法再使用。因此,您應該始終讓消費者應用程式從串流讀取,並使用 CloudWatch 指標GetRecords.IteratorAgeMilliseconds
來監視應用程式是否跟上傳入資料。
在某些情況下,記錄處理器若錯過了串流中的前幾筆記錄其實並無妨。例如,您可以透過串流執行一些初始記錄,以測試串流是否如預期般運 end-to-end 作。經過這類初步驗證後,您即接著啟動工作者並開始將生產資料放入該串流。
如需 TRIM_HORIZON
設定的詳細資訊,請參閱使用碎片迭代器。
關閉 Amazon Kinesis Data Streams 應用程式
Amazon Kinesis Data Streams 應用程式完成預定的任務後,您應該終止執行該應用程式的EC2執行個體以將其關閉。使用 AWS Management Console
關閉 Amazon Kinesis Data Streams 應用程式之後,您應該刪除KCL用來追蹤應用程式狀態的 Amazon DynamoDB 表格。
讀取節流
串流的傳輸量是按照碎片級進行佈建。每個碎片可支援最高每秒 5 筆交易的讀取輸送量,最大總資料讀取速率為每秒 2 MB。如果某個應用程式 (或對同一串流進行操作的一組應用程式) 嘗試以較快的速率從碎片取得資料,則 Kinesis Data Streams 就會調節相應的 Get 操作。
在 Amazon Kinesis Data Streams 應用程式中,如果記錄處理器處理資料的速率高過限制 (比方容錯移轉的情況),則會發生限流。由於KCL管理應用程式和 Kinesis Data Streams 之間的互動,因此節流例外會發生在程式碼中,而不是在應用程式程式KCL碼中。但是,由於KCL記錄了這些例外,因此您會在日誌中看到它們。
若您發現應用程式一直受到調節,即應考慮增加串流的碎片數目。