0

SimpleDB 文档中有一条评论基本上指出,如果您需要更多并行性,那么您应该使用多个域。

这让我想到了这个问题。SimpleDB 是否会序列化所有请求,即使它们来自多个客户端应用程序?

有人对此有明确的答案吗?

4

2 回答 2

1

SimpleDB(根据 Netflix 的首席工程师,在博客中介绍了他们的过渡)似乎对每个域的帐户进行了速率限制。因此,您可能有 1 个帐户,并且正在从 10 个线程到单个域进行查询或插入,而这些(根据我收集的)将被限制为每秒大约 40-70 个请求(我看到了不同的报告)。

另一件要考虑的事情是您的域规模扩大,查询性能下降。

由于这两种行为,建议对于大数据,跨多个域“分片”数据。

因此,考虑一个跟踪推文的社交应用程序,您可能会创建以下 5 个域:TWEETS_0、TWEETS_1、TWEETS_2、TWEETS_3、TWEETS_4

然后在它们之间分割你的插入: int domainIndex = tweet.getId() % 5; simpleDB.doInsert(domainIndex, arguments...)

或一些这样的伪代码。Aws 最近将每个客户的域限制提高到 250 个,因此似乎预计会使用这种分片设计。

SimpleDB 的梦想承诺是“我们扩展,您担心代码”,但现实是我们还没有实现。

您仍然需要担心一些细节。

于 2011-05-06T16:50:16.477 回答
0

不,当然 SimpleDB 不会“序列化所有请求”;但是,它必须进行一定量的锁定以确保事务一致性。跨域分片是一种将其影响降至最低的简单方法。

于 2010-12-17T01:38:53.937 回答