SimpleDB параллелизм - PullRequest
       3

SimpleDB параллелизм

0 голосов
/ 17 декабря 2010

В документации SimpleDB есть комментарий, в котором говорится, что если вам нужно больше параллелизма, вам следует использовать несколько доменов.

Это подводит меня к этому вопросу. Сериализует ли SimpleDB все свои запросы, даже если они приходят из нескольких клиентских приложений?

Есть ли у кого-нибудь однозначный ответ на этот вопрос?

Ответы [ 2 ]

1 голос
/ 06 мая 2011

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 - «мы масштабируемся, вы беспокоитесь о коде», но реальность такова, что мы просто еще не пришли.

Вам все еще нужно беспокоиться о нескольких деталях.

0 голосов
/ 17 декабря 2010

Нет, конечно, SimpleDB не "сериализует все свои запросы"; однако для обеспечения согласованности транзакций он должен выполнять определенную блокировку. Разделение между доменами - это простой способ минимизировать влияние этого.

...