Теорема CAP простыми словами

Представь себе распределённую систему, например, базу данных, которая работает на нескольких серверах в разных местах.

Когда один из серверов выходит из строя или между ними нарушается связь (например, из-за проблем в сети), то система оказывается в трудной ситуации.

Теорема CAP говорит:

Когда что-то ломается, ты можешь выбрать только два из трёх:

  1. Согласованность (Consistency)
    Все видят одни и те же данные. Если ты записал что-то, все другие сразу это увидят.
  2. Доступность (Availability)
    Система всегда отвечает на запросы, даже если есть проблемы.
  3. Устойчивость к разделению (Partition tolerance)
    Система продолжает работать, даже если связь между серверами прервалась.

Простой пример:

Представь, что у тебя есть банкоматы в разных городах, и они подключены к общей системе. Вдруг интернет между ними пропал (это разделение сети).

Теперь:

  • Если ты выберешь доступность и устойчивость к разделению (AP) — банкоматы будут работать, но может быть, что один покажет, что у тебя есть деньги, хотя другой уже показал снятие. Данные могут временно отличаться (нет согласованности).
  • Если ты выберешь согласованность и устойчивость к разделению (CP) — банкоматы будут показывать только правильные данные, но, возможно, ты не сможешь снять деньги, пока сеть не восстановится (нет доступности).

Вывод:

Нельзя получить всё сразу. При сбоях ты должен пожертвовать либо точностью, либо доступом.