Продолжаю серию статей об основных терминах в распределенных системах, которые стоит знать и понимать Senior разработчику. Часть 1 👉 тут.
Поехали!
Первое определение, которое интуитивно понятно, но нужно нам для понимания "тривиальных" вещей:
Согласованность данных (консистентность данных, англ. data consistency) — согласованность данных друг с другом, целостность данных, а также внутренняя непротиворечивость.
Отсюда нам важно два пункта: согласованные данные - целостны и непротиворечивы.
Теперь дадим определение модели согласованности:
Модель согласованности — подход, используемый в той или иной распределённой системе (пример: распределённой общей памяти, СУБД, файловой системе, микросервисы, ...) для обеспечения гарантий согласованности данных.
Поэтому модель согласованности актуальна на аппаратном уровне, на программном уровне и на архитектурном уровне.
Основные модели согласованности:
🟠Строгая согласованность (англ. strict consistency)
🟠Последовательная согласованность (англ. sequential consistency)
🟠Причинная согласованность (англ. causal consistency)
🟠PRAM-согласованность (англ. PRAM consistency)
🟠Процессорная согласованность (англ. processor consistency)
🟠Слабая согласованность (англ. weak consistency)
🟠Согласованность в конечном счете (англ. eventual consistency)
🟠Согласованность по выходу (англ. release consistency)
🟠Согласованность по входу (англ. entry consistency)