Amazon Kinesis KPL vs AWS 开发工具包的优缺点



场景是我将向 kinesis 流写入大量数据(每天 TB 级)。我想知道哪种方法是实现高写入吞吐量的更好方法。 我正在为生产者客户考虑以下两种选择。

选项 1:使用 Kinesis 生产者库 ( KPL)。

选项 2:AWS 开发工具包 (API)。

我知道KPL是建立在aws sdk之上的抽象,所以它基本上可以归结为(带有AWS-SDK的KPL)或只是AWS-SDK。根据我的研究,在我看来,AWS-SDK 不提供将多个记录聚合到单个放置中的功能,而 KPL 确实支持此聚合(如果这是错误的,请纠正我)。

PutRecords(来自 Kinesis Data Streams API)和 KPL(使用聚合)都提供高写入吞吐量,问题是这两个选项中哪一个更好,为什么? 简而言之,有兴趣知道将数据写入 kinesis 流方面哪个会更快,一旦写入流,我不在乎如何读取它。还有兴趣了解两种情况下的重试机制差异和异步写入性能。

是的,所以SDK和KPL之间有两个主要区别。 首先,SDK同步发送记录,没有延迟,而KPL允许批处理(聚合和收集),这是以RecordMaxBufferedTime确定的一些延迟为代价的,这有助于最大限度地提高效率和吞吐量。 其次,对于 KPL,您需要使用 Java 进行部署,而 SDK 允许使用 CLI 或 Boto3 库,它使用 SDK 来帮助调用 python 或其他编程语言中的 API。请参考 API 参考。

如果您的方法与语言无关,并且没有一点延迟的问题,请选择 KPL。但是,如果您希望通信保持同步,请使用 API 并选择您喜欢的任何语言。

最后,SDK是基本操作,而KPL是建立在包括批处理/聚合/重试功能的基础上的。因此,KPL 具有更高的延迟,因为与 SDK 相比,它具有更多的内置功能。

相关内容

最新更新