我正在考虑使用amazon Simpledb作为队列来减轻我的web服务的负载。请求大于64k,我需要fifo,所以我不能使用SQS。我想知道simpledb上的并发限制是什么。我能让10000个客户端同时插入新行吗?
如果有任何帮助就太好了
您可能会遇到SimpleDb的问题,因为它在写时的"最终一致性"。这意味着当您写入数据时,它不能保证在随后立即进行的查询中返回。我听说几秒钟后你就安全了,但你得给系统编码,把这个考虑进去。
这个问题通过引入条件放入(conditional put)得到了轻微的缓解,条件放入可以确保在并发写操作时不会丢失更新。最终的一致性模型会使编写计数器和队列等简单的代码变得相当复杂。
下面是一个使用AWS SDK在Java中实现的递增计数器的示例。nextValue
方法中的注意事项:
while (!done) {
客户端基本上会重试,直到它们的put被干净地处理。这是不可扩展的!