Каково состояние нового объекта в DynamoDB сразу после того, как клиентское приложение вернуло 200 OK?
Я пытаюсь узнать, как записи / обновления работают внутри DynamoDB. Это то, что я мог найти.
"Когда ваше приложение записывает данные в таблицу 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, они могут использовать некоторые другие вещи за сценой.
надеюсь, это поможет