Гарантирует ли Amazon S3 порядок записи? - PullRequest
5 голосов
/ 06 июля 2010

Amazon S3 предоставляет модель «возможной согласованности», при которой сохраняемые вами данные в конечном итоге становятся видимыми для всех клиентов.

Я не могу найти никакой официальной информации о том, гарантирован ли порядок записи или нет. Это принципиально важно, если вы строите архитектуру, в которой клиент может захотеть прочитать данные сразу после того, как кто-то еще их сохранил.

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

Если порядок записи не гарантирован, то у меня серьезная проблема, потому что я не могу быть уверенным, что могу безопасно прочитать данные.

Я прочитал статью Вернера Фогеля о согласованности (http://www.allthingsdistributed.com/2007/12/eventually_consistent.html),), где он отмечает, что системы без монотонной согласованности записи общеизвестно сложно программировать, но не говорит, гарантирует ли это S3 или нет.

Ответы [ 2 ]

3 голосов
/ 02 августа 2010

Было бы очень глупо, если бы Amazon гарантировал упорядочение записи, если целью является масштабная масштабируемость.Рассмотрим следующий случай:

  • Значение X, связанное с ключом K, существует в S3.
  • Клиент 1 (Гонконг): записывает значение A в ключ K, обслуживаемый сервером A
  • Клиент 2 (Канзас-Сити): записывает значение B в ключ K, обслуживаемый сервером B

Окончательная согласованность гарантирует, что все читатели в любой точке мира увидят значение Aили значение B или значение X, и, в конце концов, все читатели увидят либо значение A, либо B, но не сочетание.

Если клиенты 1 и 2 выпустили свои записи одновременно, то единственный способ гарантировать записьпорядок состоит в том, чтобы связывать записи друг с другом по временной шкале.Тем не менее, трансатлантические часы не будут идеально синхронизированы.Настоящий вопрос здесь заключается в том, что вы подразумеваете под порядком записи, когда два клиента на противоположных концах света выдают запись близко друг к другу во времени.

Обновление

То же самое относится и к одному клиенту.Предположим, что значение подается из 2 местоположений, и один клиент выдает 2 последовательных обновления.Если обе записи обслуживаются одной и той же конечной точкой, то, скорее всего, ваш порядок будет сохранен.Однако ничто не препятствует выполнению чтения из второго местоположения (маршрутизация, разделение сети и т. Д.).

2 голосов
/ 11 июля 2010

Чтобы ответить на ваш прямой вопрос «Гарантирует ли Amazon S3 порядок записи?», Я думаю, что ответ «нет». Я хотел бы спросить на форумах AWS, чтобы быть уверенным.

Если вы можете жить с почти идеальной согласованностью, я бы порекомендовал вашему писателю проверить все файлы перед возвращением успеха. Хотя не гарантирует того, что файл будет доступен для всех клиентов, этого достаточно для большинства случаев использования. Лично у меня никогда не было проблем с согласованностью S3 для клиентов, когда я это делал. Я должен отметить, что это займет немного больше времени, и вы будете платить немного больше за дополнительные запросы, но в вашем случае это, вероятно, того стоит.

С другой стороны, если вам нужна гарантированная безупречная согласованность, я бы рекомендовал использовать регион, отличный от стандартного региона США. Все регионы, за исключением стандартного региона США, предлагают «согласованность чтения после записи для PUTS новых объектов и возможную согласованность для перезаписи PUTS и DELETES» . Это должно решить вашу проблему для новых записей, но опять же, это будет стоить немного больше.

Best

Zach

Разработчик, LongTail Video

...