Amazon sqs против пользовательской реализации - PullRequest
1 голос
/ 18 июля 2011

Нам нужно синхронизировать данные между различными веб-серверами. Идея очень проста: когда один объект создается на одном сервере, он должен быть отправлен на все остальные серверы. Какой правильный способ сделать это? В настоящее время мы оцениваем 2 подхода: службы Amazon и sqs и sns и пользовательскую реализацию с некоторой базой данных значений ключей (например, memcached и memqueue). Каковы распространенные ошибки пользовательских реализаций? Любые отзывы будут высоко оценены.

1 Ответ

2 голосов
/ 18 июля 2011

SQS будет работать нормально, если вы создадите новую очередь для каждого сервера и запишите данные в каждую очередь. Самым большим недостатком является то, что вам потребуется каждый сервер для опроса новых сообщений.

SNS будет работать более эффективно, поскольку позволяет передавать сообщения в несколько мест. Тем не менее, это одна попытка; если машина не может получить уведомление при отправке SNS, SNS не будет пытаться снова.

Вы не указываете, сколько сообщений вы отправляете или каковы ваши требования к производительности, но любая система SQS / SNS, вероятно, будет намного, намного медленнее (в основном из-за задержек между отправкой сообщения и получающими его серверами) локальное решение для memcache / key-value сервера.

Смешанным решением будет использование постоянного хранилища (например, SimpleDB) и использование SNS для оповещения серверов о наличии новых данных.

...