Что такое CAP-теорема в контексте распределенных систем

Ответ

CAP-теорема (теорема Брюера) — это фундаментальный принцип проектирования распределенных систем, который гласит, что любая распределенная система может одновременно гарантировать только два из трех следующих свойств:

  • Consistency (Согласованность): Все узлы системы видят одни и те же данные в один и тот же момент времени. Любое чтение вернет результат последней успешной записи.
  • Availability (Доступность): Любой запрос к работающему узлу системы завершается корректным откликом, без ожидания или ошибок. Система всегда доступна для чтения и записи.
  • Partition Tolerance (Устойчивость к разделению): Система продолжает функционировать корректно даже в случае потери сетевых сообщений между узлами (возникновения "раздела").

Ключевой выбор

Поскольку в реальных распределенных системах сетевые сбои (partitions) неизбежны, свойство P (Partition Tolerance) является обязательным. Поэтому на практике выбор сводится к двум моделям:

  1. CP (Consistency + Partition Tolerance): Система жертвует доступностью ради согласованности. В случае сетевого раздела часть узлов может стать недоступной (например, для записи), чтобы избежать рассинхронизации данных.

    • Примеры: Реляционные СУБД (PostgreSQL, MySQL в кластерных конфигурациях), MongoDB.
  2. AP (Availability + Partition Tolerance): Система жертвует согласованностью ради доступности. В случае раздела все узлы остаются доступными, но некоторые из них могут возвращать устаревшие данные. Согласованность достигается позже (eventual consistency).

    • Примеры: Amazon DynamoDB, Cassandra, Riak.