[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"question-arkhitektura-prilozheniy-chto-takoe-cap-teorema":3},{"id":4,"slug":5,"topicId":6,"topicSlug":7,"topicName":8,"topicEmoji":9,"question":10,"answer":11,"codeLang":12,"codeSrc":12,"important":12,"commonMistakes":12,"modernUsage":12,"difficulty":13,"tags":14,"related":19,"progress":20,"seo":21},1059,"chto-takoe-cap-teorema",3,"arkhitektura-prilozheniy","Архитектура приложений","🏗️","Что такое CAP-теорема","CAP-теорема (теорема Брюера) утверждает, что в распределённой системе невозможно одновременно обеспечить все три свойства: согласованность (Consistency), доступность (Availability) и устойчивость к разделению (Partition Tolerance).\n\n- **C (Consistency)** — согласованность: все узлы видят одинаковые данные в одно время. Любое чтение возвращает результат последней успешной записи.\n- **A (Availability)** — доступность: каждый запрос получает ответ (успех или ошибка), даже если часть узлов недоступна.\n- **P (Partition Tolerance)** — устойчивость к разделению: система продолжает работать при потере связи между узлами сети.\n\n### Визуализация\n\n```\n                    Consistency (C)\n                         ╱╲\n                        ╱  ╲\n                       ╱    ╲\n                 CP   ╱  CAP ╲   CA\n                     ╱ (невоз-╲\n                    ╱  можно)  ╲\n                   ╱────────────╲\n     Partition    ╱      AP      ╲  Availability (A)\n     Tolerance (P)\n```\n\n### Реальный выбор: CP vs AP\n\nПоскольку в реальных распределённых системах сетевые разделения (P) неизбежны, фактический выбор — между CP и AP:\n\n| Тип системы | Жертвует | Приоритет | Примеры БД | Подходит для |\n|-------------|----------|-----------|-----------|-------------|\n| **CP** | Доступностью | Согласованность | HBase, ZooKeeper, MongoDB (majority) | Финансовые операции, где важна точность |\n| **AP** | Немедленной согласованностью | Доступность | Cassandra, DynamoDB, CouchDB | Аналитика, каталоги, eventual consistency допустима |\n| **CA** | Устойчивости к разделению | И то, и другое | PostgreSQL, MySQL (без репликации) | Одиночный узел, нет распределённости |\n\n### Практическое применение\n\n- Для основных финансовых операций (переводы, платежи) выбирают CP — лучше вернуть ошибку, чем провести некорректную транзакцию.\n- Для сервисов аналитики и отображения истории можно использовать AP — допустима задержка в несколько секунд.\n\nВажно понимать, что CAP-теорема описывает предел, а не бинарный выбор. Многие современные системы позволяют настраивать уровень согласованности на уровне отдельных операций (например, Cassandra поддерживает уровни консистентности от ONE до ALL).\n\n> **На собеседовании:** Интервьюер хочет услышать, что P неизбежна в распределённых системах и реальный выбор — между CP и AP. Частая ошибка — говорить, что можно выбрать CA в распределённой системе, или не понимать, что CAP — это спектр, а не жёсткий выбор.","","middle",[15,16,17,18],"distributed-systems","cap-theorem","consistency","architecture",[],null,{"title":22,"description":23,"ogTitle":22,"ogDescription":24,"keywords":25,"schemaAnswer":33,"featuredSnippetReady":34},"CAP-теорема (теорема Брюера) — Gymterview","CAP-теорема: в распределённой системе невозможно одновременно обеспечить Consistency, Availability и Partition Tolerance. CP vs AP системы.","CAP-теорема: невозможно одновременно обеспечить согласованность, доступность и устойчивость к разделению в распределённой системе.",[26,27,28,29,30,31,32],"CAP-теорема","теорема Брюера","Consistency","Availability","Partition Tolerance","CP системы","AP системы","CAP-теорема (теорема Брюера) утверждает, что в распределённой системе невозможно одновременно обеспечить три свойства: Consistency (все узлы видят одинаковые данные), Availability (каждый запрос получает ответ) и Partition Tolerance (система работает при потере связи между узлами). Поскольку сетевые разделения неизбежны, выбор фактически между CP (согласованность, например HBase, ZooKeeper) и AP (доступность, например Cassandra, DynamoDB). Для финансовых операций обычно выбирают CP.",true]