关键字: [Amazon Web Services re:Invent 2024, 亚马逊云科技, Serverless Data Streaming, Throughput Optimization, Event Source Mapping, Concurrency Parallelization, Monitoring Observability]
导读Amazon Lambda事件源映射简化了流式工作负载的处理层构建。将您的事件源连接到Lambda函数,以使用内置集成来过滤和批处理消息,并轻松处理错误。参加本次会话,了解如何使用新推出的功能来提高新旧处理工作负载的吞吐量和可观察性,而无需更改函数代码。探索如何在使用Apache Kafka事件源时满足最严格的处理需求,以及新的增强指标如何改善对Amazon SQS、Amazon Kinesis、Kafka和Amazon DynamoDB事件源的可见性。
演讲精华以下是小编为您整理的本次演讲的精华。
讲者Anton通过类比选择高性能汽车来阐明数据处理系统中吞吐量和加速的重要性。他指出,就像赛车需要较高的最高时速和快速加速一样,数据流应用程序必须能够处理大量数据(吞吐量)并快速适应数据速率的峰值(加速)。
他解释了数据流是高效摄取和处理来自点击流、物联网(IoT)设备、金融行情和交易日志等源的大量连续、有序和时间敏感数据的架构组件。他阐述了处理数据峰值的挑战 - 过度配置会导致支付过多,而配置不足会导致积压和延迟处理。
Anton随后深入探讨了利用Amazon Lambda、Amazon Kinesis和Amazon Managed Streaming for Apache Kafka(Amazon MSK)等服务提高无服务器流工作负载的吞吐量的技术。他介绍了常见的技术,如并行化数据处理、减少函数持续时间、过滤无关消息和批量处理消息。
关于并行化数据处理,他解释说这可以在不同层面实现。在Lambda并发级别,增加并发执行环境的数量可自动处理更多并行处理。此外,优化代码效率和分配更多内存来提高CPU可以减少处理时间。他举了一个真实的例子,一位客户处理来自10,000个IoT传感器每月产生近5亿条消息的数据,通过在调用Lambda函数之前过滤掉无关消息,实现了92%的成本节约。
Anton阐述,批量处理消息是另一种提高效率的技术。与单独处理消息不同,批量处理消息并调整批量窗口和大小可以显著提高吞吐量。他强调了实验的重要性,因为每个工作负载都是独一无二的,最佳批量大小可能会有所不同。
对于Amazon Kinesis,Anton解释了分片、吞吐量容量、增强扇出等消费模式、用于扩展的并行化因子以及监控指标的概念。他强调Kinesis支持两种模式:一种是完全自动模式,由亚马逊云科技管理分片数量;另一种是手动模式,由用户决定分片数量。Kinesis消费者可以从流中的所有分片读取数据,消费可以通过两种模式进行:共享吞吐量和增强扇出(EFO)。共享吞吐量模式允许最多5个不同的消费者从Kinesis拉取数据,吞吐量为每秒5次读取,约2MB/s在消费者之间共享。EFO模式旨在支持低延迟和高吞吐量工作负载,将数据推送给消费者,为每个消费者提供专用的2MB/s吞吐量,延迟低至70毫秒。
关于扩展,Anton解释说,当为Kinesis流启用事件源映射时,Amazon Lambda会创建与分片数量相等的轮询器数量。每个轮询器以大约每秒一次的速率轮询分片。为了提高吞吐量,用户可以增加流中的分片数量,从而增加并发性和并行化程度。或者,用户可以利用并行化因子配置属性,允许在不添加新分片的情况下,扩展每个分片的并发执行环境数量。
对于Apache Kafka和Amazon MSK,Anton介绍了分区、分区键、扩展轮询器、新的预配置模式(用于在峰值时提供可预测的性能)以及监控偏移量延迟。他将Kinesis分片与Kafka分区进行了类比,解释说生产者使用分区键来确定记录将存储在哪个分区中,确保每个分区内的数据有序。
当从Kafka集群消费时,Lambda最初会创建一个单一的轮询器,该轮询器可以并发调用多个Lambda函数实例。根据传入的工作负载和偏移量延迟,Lambda会自动扩展或缩减轮询器的数量,增长直到执行环境的数量与主题中分区的数量相匹配,从而保持数据顺序。
Anton随后介绍了最近推出的Kafka预配置模式,旨在处理具有可预测性能的峰值、延迟敏感型工作负载。在此模式下,用户可以配置始终运行的最小和最大轮询器数量,即使在低流量期间也是如此。这允许在发生峰值时更快地扩展和降低延迟,因为预配置的轮询器已经可以在几秒钟内处理数据。他建议从单个预配置轮询器开始,并根据工作负载的吞吐量要求进行实验,以确定最佳数量。
关于可观察性,Anton强调了从函数和事件源的角度监控指标的重要性。他宣布在Lambda中推出了开箱即用的EventSource Mapping指标,提供了有关摄取消息状态的见解。这些指标包括poll_deviant_event_counts和invoked_event_counts,分别允许用户跟踪从数据源拉取的事件数量和发送到Lambda函数的事件数量。此外,用户还可以观察被过滤事件的数量,从而评估其过滤策略的有效性。
Anton总结了可用于提高无服务器流工作负载吞吐量的多种技术。他重申了并行化数据处理、减少函数持续时间、过滤无关消息和批量处理消息的重要性。对于Kinesis,他强调使用分区键均匀分布记录、在生产者端缓冲、在适用时增加分区和分片数量、利用并行化因子以及对于低延迟工作负载使用增强扇出。对于Kafka和MSK,他建议使用预配置模式来实现峰值时的可预测性能,并优雅地处理故障以避免缩减问题。
在整个演讲过程中,Anton提供了真实世界的示例和数据点来支持他的建议。他引用了一个客户案例,过滤掉无关消息导致成本节约92%,以及另一个案例,单个预配置轮询器可以处理高达5MB/s的Kafka吞吐量。这些实际案例有助于加强他所倡导技术的有效性。
总之,Anton的全面指南阐述了利用亚马逊云科技的无服务器功能构建高度可扩展、高性价比的数据流管道,能够处理不可预测的突发数据量,同时保持较高的吞吐量性能。适当的分区、并行化、过滤、批量处理和监控成为他富有见地的演讲中强调的关键技术。
下面是一些演讲现场的精彩瞬间:
Andy Jassy,亚马逊云科技首席执行官,通过询问观众中有多少人已经或正在计划使用无服务器、Kafka、Lambda和Kinesis实现流式工作负载,从而吸引了观众的注意力。
演讲者概述了讨论Lambda并发性、事件源映射、常见技术和新功能的议程,并承诺在最后会有可操作的收获。
Amazon Lambda的事件源映射允许您配置批处理窗口,以优化特定工作负载的成本和性能,在较小批量和更多调用或较大批量和较少调用之间进行权衡。
通过使用Amazon EventBridge过滤掉不必要的消息,而不是在函数代码中进行过滤,Amazon Lambda函数可以实现显著的成本节约和性能提升。
Kinesis消费者可以从流中的所有分片读取数据,最多5个消费者可以共享5次/秒和2MB/秒的吞吐量,提供大约200毫秒的基线延迟。
Amazon Lambda会根据传入的工作负载和偏移量延迟自动扩展或缩减轮询器的数量,确保有效且有序地处理Kafka或Kinesis分区。
演讲者鼓励观众探索亚马逊云科技无服务器支持材料,包括指南、研讨会和徽章,以展示他们在无服务器技术方面的专业知识。
演讲者Anton深入探讨了提高无服务器流式工作负载的吞吐量和监控能力的技术。他首先以数据处理和汽车性能之间的类比为例,强调了最大化速度和加速度的重要性。Anton随后概述了提高吞吐量的常见策略,例如并行化数据处理、缩短函数持续时间、过滤无关消息以及批量处理记录。
一个关键点是在调用Lambda函数之前过滤掉不必要的数据,这可能会带来大幅的成本节约和性能提升。Anton提供了一个实际案例,其中过滤减少了92%的成本。另一个至关重要的方面是批量处理消息以提高效率,而不是单独处理它们。
此外,Anton探讨了针对Kinesis和Apache Kafka的事件源映射(ESM)配置。对于Kinesis,他讨论了增加分片、并行化因子以及对于低延迟工作负载使用增强扇出模式等技术。对于Kafka,他强调了新引入的预配置模式,以实现可预测的性能和在流量高峰期间更快的扩展。
最后,Anton强调了监控和可观察性的重要性,介绍了新的开箱即用的ESM指标,这些指标可以提供有关接收消息的见解。他鼓励与会者探索这些功能,尝试不同的配置,并利用提供的资源进一步学习和实践。
亚马逊云科技(Amazon Web Services)是全球云计算的开创者和引领者。提供200多类广泛而深入的云服务,服务全球245个国家和地区的数百万客户。做为全球生成式AI前行者,亚马逊云科技正在携手广泛的客户和合作伙伴,缔造可见的商业价值 – 汇集全球40余款大模型,亚马逊云科技为10万家全球企业提供AI及机器学习服务,守护3/4中国企业出海。