Модели согласованности и кворумы: что выбрать и как это объяснить продукту?
Модели выстраиваются по силе гарантий. Линеаризуемость — система ведёт себя так, будто операция происходит мгновенно в один момент: любое чтение после подтверждённой записи видит её. Последовательная согласованность слабее: порядок один для всех, но не обязан совпадать с реальным временем. Причинная гарантирует порядок только связанных операций — этого достаточно для комментариев и лент. Итоговая обещает лишь то, что при прекращении записей реплики сойдутся. Практически важны производные гарантии клиента: read-your-writes (вижу собственные изменения), monotonic reads (не вижу более старое после более нового), read-after-write для конкретного объекта. В системах с настраиваемыми кворумами уровень выбирают формулой R + W > N: при трёх репликах запись в две и чтение из двух гарантируют пересечение. Дороже гарантия — выше задержка и ниже доступность при разделении сети, поэтому уровень задают на операцию, а не на всю систему.