Amazon Kinesis KPL与AWS SDK的优缺点比较

14
情境是我会向Kinesis流写入大量数据(每天几个TB),我想知道实现高写入吞吐量的更好方法。我考虑以下两种生产者客户端选项。
选项1:使用Kinesis生产者库(KPL)。

选项2:AWS SDK (API)。
我知道KPL是在AWS-SDK之上使用的抽象,因此基本上归结为(KPL与AWS-SDK)或仅AWS-SDK。从我所研究的内容来看,似乎AWS-SDK不提供将多个记录聚合成单个put的能力,而KPL支持此聚合(如果我有错请纠正我)。
PutRecords(来自Kinesis数据流API)和KPL(使用聚合)都提供了高写入吞吐量,问题是哪个选项更好,为什么?简而言之,我想知道哪一个在将数据写入Kinesis流方面更快,一旦写入流中,我就不关心它如何被读取。还想知道两种情况下重试机制的差异和异步写入性能。

1
KPL目前仅作为Java API包装C++可执行文件而存在,这可能不适用于所有部署环境。因此,如果您选择的语言不是Java,则目前无法使用KPL。 - shamanth Gowdra Shankaramurthy
1
PutRecords/SDK API 用于同步处理,而 KPL 用于异步处理。例如,如果您正在处理关键事件,则应使用异步方式,如果是信息性事件,则应使用异步方式。 - murtihash
1个回答

2

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

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

总之,SDK是基本操作,而KPL是在此基础上构建的,其中包括对批量/聚合/重试功能的支持。出于这个原因,相比于SDK,KPL具有更高的延迟,因为它具有更多的内置功能。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接