Лучшие вопросы
Таймлайн
Чат
Перспективы
Причинная согласованность
Из Википедии, свободной энциклопедии
Remove ads
Причинная согласованность (англ. causal consistency) — модель согласованности, которая не требует, чтобы все процессы видели одну и ту же последовательность записей в памяти, проводя различие между потенциально-зависимыми (запись одной может зависеть от результата чтения другой ячейки) и потенциально-независимыми (параллельными) операциями записи[1].
Система обеспечивает причинную согласованность, если операции с памятью, которые потенциально причинно связаны, рассматриваются всеми узлами системы в том же порядке. Одновременные операции записи (то есть те, которые причинно не связаны), могут рассматриваться в различном порядке разными узлами. Этот вид согласованности слабее, чем последовательная согласованность, которая требует, чтобы все узлы видели все записи в том же порядке[2], но сильнее, чем PRAM-согласованность[англ.], при которой только записи, сделанные одним узлом, были бы видимы в том же порядке любым другим узлом[3].
Отношения причинности между операциями (событиями) для систем с распределённой общей памятью[англ.] можно определить следующим образом[4]:
- Последовательность операций чтения и записи на узле определяет локальный причинный порядок.
- Операция записи причинно предшествует операции чтения на другом узле, если чтение возвращает значение, записанное с помощью этой операции записи. Это отношение межпроцессного порядка.
- И, наконец, причинный порядок считается транзитивным: то есть, если операция А (причинно) следует до В, а В — до С, то А находится в порядке причинности перед С. То есть, транзитивное замыкание отношений локального и межпроцессного порядков определяет глобальный причинный порядок.
Remove ads
Достоинства и недостатки
Сохраняя свойство гарантированных операций с небольшой задержкой, причинная согласованность лучше согласованности в конечном счёте как для пользователей, так и для программистов. Она учитывает причинно-следственные связи между операциями и гарантирует, что каждый узел видит операции в заданном порядке. Причинная согласованность также делает программирование проще, устраняя необходимость рассматривать не относящиеся к делу операции[5].
Тем не менее, причинной согласованности присущи и некоторые недостатки[5]:
- не все причинные связи могут быть установлены в рамках системы,
- не всегда возможно требовать выполнения глобальных инвариантов,
- логика одновременной записи может представлять трудности при реализации.
В частности, требуется установить, достаточно ли простого затирания старых данных или требуются отдельные механизмы разрешения конфликтующих записей.
Remove ads
Примечания
Литература
Wikiwand - on
Seamless Wikipedia browsing. On steroids.
Remove ads