Dynamo db每批只允许25个请求。有没有办法在Java中增加这一点,因为我必须每秒处理1000条记录?还有比分批处理更好的解决方案吗?
发布于 2015-07-09 00:49:43
这里记录的每个BatchWriteItem 25是一个严格的dynamodb限制:http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Limits.html
没有什么能阻止你并行地做多个BatchWrites。决定你能写多少的东西是表上的写配置吞吐量。
发布于 2015-07-13 01:34:02
引入DynamoDB中的BatchWrites是为了减少对不提供并行线程执行工作的机会的语言执行多个写操作所需的往返次数。
虽然由于使用批处理API减少了往返,您仍然可以获得更好的性能,但仍然存在个别写入失败的可能性,并且您的代码将需要查找这些写入。使用Java执行大规模并行写入的一种健壮方法是使用ExecutorService类。这提供了一种使用多个线程执行插入的简单机制。但是,正如批处理中的单个项可能失败一样,您将希望跟踪Future对象以确保成功执行写入。
另一种提高吞吐量的方法是在EC2上运行代码。如果您从笔记本电脑或亚马逊网络服务以外的数据中心调用DynamoDB,往返时间会更长,请求也会稍微慢一些。
底线是使用标准的Java多线程技术来获得您想要的性能。但是,超过某个时间点后,您可能需要分散并使用额外的硬件来实现更高的写入OPS。
发布于 2017-09-21 05:59:22
每当您有大量的实时数据流需要在AWS中结束时,Kinesis Streams可能是最佳选择。特别是使用AWS Kinesis Firehose,您可以通过管道将数据大规模传输到S3,而无需管理开销。然后可以使用DataPipeline将其移动到Dynamo。
https://stackoverflow.com/questions/31296967
复制相似问题