

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 處理啟動、關閉和限流
<a name="kinesis-record-processor-additional-considerations"></a>

以下是您在設計 Amazon Kinesis Data Streams 時應納入考量的一些其他事項。

**Topics**
+ [啟動資料生產者和資料消費者](#kinesis-record-processor-producer-consumer-coordination)
+ [關閉 Amazon Kinesis Data Streams 應用程式](#developing-consumers-with-kcl-shutdown)
+ [讀取限流](#kinesis-record-processor-read-throttling)

## 啟動資料生產者和資料消費者
<a name="kinesis-record-processor-producer-consumer-coordination"></a>

預設情況下，KCL 會從串流的頂端開始讀取記錄，也就是最近加入的記錄。依照這種組態，如果資料產生應用程式於任何接收端記錄處理器執行之前加入記錄至串流，記錄處理器啟動後並不會讀取這些記錄。

若要變更記錄處理器的行為，使其一律從串流開頭處讀取資料，請在您的 Amazon Kinesis Data Streams 應用程式屬性檔案中設定以下數值：

```
initialPositionInStream = TRIM_HORIZON
```

根據預設，Amazon Kinesis Data Streams 會 24 小時儲存所有資料。它還支援長達 7 天的延長保留和長達 365 天的長期保留。此時間範圍稱為*保留期間*。當起始位置設為 `TRIM_HORIZON` 時，將依保留期間的定義，就串流中最舊的資料啟動記錄處理器。即便使用 `TRIM_HORIZON` 設定，如果記錄處理器在超過了保留期間很長一段時間後啟動，則串流中的某些記錄將已無法再使用。因此，您應讓取用者應用程式隨時讀取串流，並使用 CloudWatch 指標 `GetRecords.IteratorAgeMilliseconds` 進行監控，以確保應用程式能及時處理傳入的資料。

在某些情況下，記錄處理器若錯過了串流中的前幾筆記錄其實並無妨。例如，您可能傳遞一些初始記錄通過串流，以便測試串流的端對端運作是否如預期。經過這類初步驗證後，您即接著啟動工作者並開始將生產資料放入該串流。

如需 `TRIM_HORIZON` 設定的詳細資訊，請參閱[使用碎片疊代運算](developing-consumers-with-sdk.md#kinesis-using-sdk-java-get-data-shard-iterators)。

## 關閉 Amazon Kinesis Data Streams 應用程式
<a name="developing-consumers-with-kcl-shutdown"></a>

當您的 Amazon Kinesis Data Streams 應用程式已完成預定任務後，您應終止其執行所在的 EC2 執行個體以關閉該應用程式。使用 [AWS 管理主控台](https://console.aws.amazon.com//ec2/home) 或 [AWS CLI](https://docs.aws.amazon.com/cli/latest/reference/ec2/index.html) 皆可終止執行個體。

 關閉您的 Amazon Kinesis Data Streams 應用程式後，您應刪除 KCL 用於追蹤該應用程式狀態的 Amazon DynamoDB 資料表。

## 讀取限流
<a name="kinesis-record-processor-read-throttling"></a>

串流的傳輸量是按照碎片級進行佈建。每個碎片可支援最高每秒 5 筆交易的讀取輸送量，最大總資料讀取速率為每秒 2 MB。如果某個應用程式 (或對同一串流進行操作的一組應用程式) 嘗試以較快的速率從碎片取得資料，則 Kinesis Data Streams 就會調節相應的 Get 操作。

在 Amazon Kinesis Data Streams 應用程式中，如果記錄處理器處理資料的速率高過限制 (比方容錯移轉的情況)，則會發生限流。由於 KCL 管制著應用程式與 Kinesis Data Streams 之間的互動，限流例外狀況是發生在 KCL 程式碼而非應用程式的程式碼。不過，由於 KCL 會記錄這些例外狀況，您可由日誌中進行查看。

若您發現應用程式一直受到調節，即應考慮增加串流的碎片數目。