

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

# Kafka 事件來源的低延遲處理
<a name="with-kafka-low-latency"></a>

AWS Lambda 對於需要低於 100 毫秒一致end-to-end延遲的應用程式，原生支援低延遲事件處理。本頁提供了啟用低延遲工作流程的組態詳細資訊和建議。

## 啟用低延遲處理
<a name="enable-low-latency"></a>

為實現 Kafka 事件來源映射的低延遲處理，需進行以下基礎組態設定：
+ 啟用佈建模式。如需詳細資訊，請參閱[佈建模式](kafka-scaling-modes.md#kafka-provisioned-mode)。
+ 將事件來源映射的 `MaximumBatchingWindowInSeconds` 參數設定為 0。如需詳細資訊，請參閱[批次處理行為](invocation-eventsourcemapping.md#invocation-eventsourcemapping-batching)。

## 微調低延遲 Kafka ESM
<a name="recommendations-low-latency"></a>

參考下列建議，最佳化 Kafka 事件來源映射來達成低延遲目標：

### 佈建模式組態
<a name="recommendations-pollers"></a>

在 Kafka 事件來源映射的佈建模式下，Lambda 允許透過設定稱為**事件輪詢器**的資源數量下限與上限，實現對事件來源映射輸送量的微調。事件輪詢器 (或**輪詢器**) 代表在佈建模式下支援事件來源映射的運算資源，並且會配置高達 5 MB/s 的輸送量。每個事件輪詢器最多支援 5 個並行 Lambda 調用。

若要判斷應用程式的最佳輪詢器組態，建議考量尖峰擷取速率與處理需求。我們來看一個簡化範例：

在批次大小為 20 筆記錄且目標函式平均持續時間為 50 毫秒的情況下，每個輪詢器在 5 MB/s 的限制下每秒可處理 2,000 筆記錄。其計算方式為：(20 筆記錄 × 1000 毫秒/50 毫秒) × 5 個並行 Lambda 調用。因此，如果所需的尖峰擷取速率為每秒 20,000 筆記錄，將至少需要 10 個事件輪詢器。

**注意**  
建議將額外的事件輪詢器佈建為緩衝區，避免持續以容量上限運作。

佈建模式會在設定的**事件輪詢器**下限與上限範圍內，根據流量模式自動擴展事件輪詢器。這可能會觸發重新平衡，進而引入額外的延遲。將**事件輪詢器**下限與上限設定為相同的值，即可停用自動擴展。

### 其他考量
<a name="additional-considerations-low-latency"></a>

其他考量事項包括：
+ 調用 Lambda 目標函式時產生的冷啟動可能會增加端對端延遲。若要降低此風險，建議在事件來源映射的目標函式上啟用[佈建並行](provisioned-concurrency.md)或 [SnapStart](snapstart.md)。此外，最佳化函式的記憶體配置，確保一致且最佳的執行效能。
+ 當 `MaximumBatchingWindowInSeconds` 設定為 0 時，Lambda 會立即處理任何可用的記錄，而不會等待累積到完整的批次大小。例如，若批次大小設定為 1,000 筆記錄，但只有 100 筆記錄可用，Lambda 會立即處理這 100 筆記錄，而不是等待累積到完整的 1,000 筆記錄。

**重要**  
低延遲處理的最佳組態會因特定工作負載而存在顯著差異。強烈建議使用實際工作負載測試不同的組態，判斷適合使用案例的最佳設定。