Теорема CAP
Когда данные лежат на нескольких серверах и связь между ними оборвалась, система не может одновременно отвечать на каждый запрос и показывать всем одни и те же данные: приходится либо ждать восстановления связи, либо отвечать по своей, возможно устаревшей, копии. Эрик Брюер высказал это в 2000 году, Сет Гилберт и Нэнси Линч доказали в 2002-м. Позже Брюер писал, что формула «два из трёх» упрощает картину: выбор встаёт только во время разрыва.
Буквы названия: C — согласованность, все видят одни и те же данные; A — доступность, каждый запрос получает ответ; P — устойчивость к разрыву связи, система продолжает работать, когда сообщения между серверами теряются или опаздывают. Разрывы связи случаются сами, поэтому на практике выбирают между C и A на время разрыва.
Общее ядро с теоремой Райса: пока событие не произошло, нельзя понять, случится ли оно позже или не случится никогда, сколько бы ни ждать. Сервер не знает, потеряно сообщение соседа или опаздывает; проверка программы не знает, закончится программа или будет работать вечно. Поэтому и выходы похожи: пока время не ограничено, выбирают одно из двух — ждать или ответить сейчас с риском ошибки; а ограничение времени снимает саму развилку, потому что после предела «никогда» уже известно. Причины невозможности разные: серверу не хватает сведений, а проверке программы сведений хватает, весь код перед ней, но ответ из него нельзя вычислить. Это сопоставление автора, единой теоремы для обоих случаев нет.
Источник: Эрик Брюер: CAP двенадцать лет спустя
Подробнее: Теорема Райса и связь с CAP
Где встречается · 2
- Где ставить проверку работы ИИ-агента · Спеки и контекст
- Теорема Райса простыми словами · Спеки и контекст