

# 低延迟处理 Kafka 事件源
<a name="with-kafka-low-latency"></a>

AWS Lambda 原生支持低延迟事件处理，适用于需要端到端延迟始终小于 100 毫秒的应用程序。本页提供了启用低延迟工作流程的配置详细信息和建议。

## 启用低延迟处理
<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 支持通过配置名为**事件轮询器**的最小和最大资源数来微调配事件源映射的吞吐量。事件轮询器（或**轮询器**）代表一种计算资源，支持预置模式下的事件源映射，最多可分配 5MB/s 的吞吐量。每个事件轮询器最多支持 5 次 Lambda 并发调用。

要为应用程序确定最佳的轮询器配置，需要考虑您的峰值摄取率和处理要求。让我们看一个简化的例子：

一个批次大小为 20 条记录，目标函数平均持续时间为 50 毫秒，则吞吐量限制为 5 Mb/s 的情况下，每个轮询器每秒可以处理 2,000 条记录。计算公式为：（20 条记录 x 1000ms/50ms）x 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 条记录。

**重要**  
低延迟处理的最佳配置因特定工作负载而不同。我们强烈建议根据实际工作负载测试不同的配置，以确定适合使用案例的最佳设置。