Каково состояние нового объекта в DynamoDB сразу после того, как клиентское приложение вернуло 200 OK?

Я пытаюсь узнать, как записи / обновления работают внутри DynamoDB. Это то, что я мог найти.

Ссылка на учебник AWS

"Когда ваше приложение записывает данные в таблицу DynamoDB и получает ответ HTTP 200 (ОК), все копии данных обновляются. В конечном итоге данные будут согласованы во всех местах хранения, обычно в течение одной секунды или менее".

Например: если у моей DynamoDB 50 разделов, и она реплицируется в 3 зонах доступности в регионе, что происходит в DynamoDB

After it receives an API request to create an item
After it sends the 200 OK response to the client

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

Спасибо

1 ответ

Dynamodb согласно этому копирует свои данные в 3 зонах доступности в пределах области.

Поэтому вопрос в том, как он управляет доступностью данных.

Предположим, есть один получатель, который получит запрос от пользователей.

Приемник для write request буду иметь m/n значение для согласованности данных.

n количество зон доступности

m будет ((n+1)/2) для поддержания согласованности.

В этом случае это 2/3.

Теперь, когда получатель получает какой-либо запрос, он отправляет команду записи данных во все 3 зоны, но ожидает ответа от 2 зон. Когда 2 зоны записали значение, получатель отправит пользователю 200 OK, не дожидаясь ответа зоны 3.

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

За read request приемник будет использовать 1/(number of availability zones), В этом случае это 1/3.

Таким образом, получатель будет запрашивать данные для всей зоны, скажем, что зона А ответит. Этот ответ будет немедленно отправлен пользователю.

Предполагая, что при запросе записи 2/3 данные хранятся в Зоне A и Зоне B, Зона C по-прежнему не обновляется.

Теперь, когда мы читаем данные, если зона A или B отвечают, мы получим значение, если зона C ответит, тогда это приведет к тому, что он не будет найден, поэтому AWS говорит, что DynamoDB в конечном итоге непротиворечивый.

Когда мы запрашиваем данные со строго согласованным чтением, значение изменяется на 2/3, что гарантирует, что обновленное значение будет отправлено пользователю, потому что в зоне доступности времени 2 будет самое новое значение

Примечание: это просто упрощенное объяснение, и я не связан с Amazon, они могут использовать некоторые другие вещи за сценой.

надеюсь, это поможет

Другие вопросы по тегам