Основная проблема, которую мы пытаемся решить, такова:
Может ли возникнуть ситуация, при которой чтение не возвращает наиболее актуальное значение?
Очевидно, что по возможности этого лучше избегать!
Если R + W <= N, то такая ситуация может возникнуть. </strong>
Запись может отправить новое значение в одну группу узлов, в то время как последующее чтение может считывать данные из совершенно отдельной группы узлов и, таким образом, пропустить записанное новое значение.
Если R + W> N, тогда эта ситуация гарантированно не произойдет.
Есть N узлов, которые могут содержать значение.A записывать контакты не менее чем на W узлах - наклеить на каждый из них наклейку "write" .Последующее чтение контактов по крайней мере на R узлах - поместите наклейку «read» на каждый из них.Есть наклейки R + W, но только N узлов, поэтому как минимум один узел должен иметь обе наклейки.То есть, по крайней мере, один узел участвует как в чтении, так и в записи, поэтому он может вернуть последнюю запись в операцию чтения.
R + W >> N невозможно.
Максимальное количество узлов, с которых вы можете читать или записывать, равно N (коэффициент репликации по определению).Таким образом, самое большее, что мы можем иметь, это R = N и W = N, то есть R + W = 2N.Это соответствует чтению и письму на ConsistencyLevel ALL.То есть вы просто пишете на все узлы и читаете со всех узлов, ничего сложного не происходит.