Моделью строгой согласованности, называется модель удовлетворяющая условию:
Операция чтения переменной X должна возвращать значение, записанное самой последней операцией записи переменной X,
Все однопроцессорные системы обеспечивают строгую согласованность, но в распределенных многопроцессорных системах ситуация намного сложнее…
Предположим, что переменная
Х = 1 расположена в памяти/ на диске нашей базы данных (БД), и процесс, который выполняется в нашем сервисе Р1, пытается прочитать значение этой переменной в момент времени T1. Для этого сервис посылается запрос чтения переменной X. Немного позже, в момент времени T2 > T1, другой процесс P2, производит операцию записи нового значения в переменную X = 2. Для обеспечения строгой консистентности операция чтения должна возвратить в процесс P1 старое значение переменной (X = 1) вне зависимости от того, где расположен наш сервис (P1) и насколько близки между собой два момента времени T1 и T2. Однако, если между разница между
T1 и T2 мала, и по каким-то причинам процесс P2 смог быстрее выполнить операцию (за счет меньших сетевых издержек, или P2 этот локальный процесс в БД), P1 получит результат X = 2. Строгая консистентность представляет собой идеальную модель для программирования, но ее, к сожалению программистов, невозможно реализовать для распределенных систем...
——————
Ставьте 🔥 если хотите узнать подробнее про остальные модели согласованности данных, 🗿 — новая тема.
