Введение

Слово «согласованность» имеет много значений в информатике. В этой статье мы ясно и просто объясним различные аспекты согласованности репликации распределенной системы.


Сериализуемость

Репликация конечного автомата с линеаризуемостью сортирует транзакции в последовательность, и эта последовательность гарантируется для всех реплик. Это совершенно не зависит от реального времени.

Линеаризуемость вызывает проблемы, показанные на следующем рисунке.

Описание изображения

Линеаризуемость гарантирует только порядок обновления между репликами, как показано на рисунке выше, и невозможно узнать, когда эта информация будет передана другим репликам. Таким образом, можно прочитать последнее значение только на той реплике, где была выполнена последняя запись, но не гарантируется, что последнее значение может быть прочитано на других репликах.


Линеаризуемость

Разница между линеаризуемостью и сериализуемостью всегда заключается в возможности чтения последнего значения в любой реплике. Линеаризуемость позволяет любой реплике считывать последнее значение.

Описание изображения

Следующие слова являются синонимами линеаризуемости.

  1. Атомная согласованность
  2. Сильная консистенция
  3. Немедленная согласованность
  4. Внешняя согласованность


Как добиться линеаризации?

Линеаризуемость хочет, чтобы данные выглядели как единое целое. Для этого просто заблокируйте все это при обновлении. Следовательно, гарантия линеаризуемости приносит в жертву доступность.


Конечная согласованность

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