Что такое CAP-теорема?

Поделиться
HTML-код
  • Опубликовано: 13 июл 2024
  • 🔥 Получи скидку 50% при оформлении онлайн-курса "Создание сайтов с Hugo" school.fullstackguy.ru/courses... Разбираемся в том, что такое CAP-теорема, и как с ней работать.
    Ссылка на статью:
    fullstackguy.ru/blog/2022/09/...
    Тайм-коды:
    -------------------
    0:00 - Начало
    0:55 - Что такое CAP-теорема?
    5:19 - Consistency или Согласованность
    9:56 - Availability или Доступность
    11:34 - Partition Tolerance или Устойчивость к секцианированию
    16:05 - Заключение
    💳Поддержать канал - (Сбер) - 2202 2023 7217 2415
  • НаукаНаука

Комментарии • 36

  • @egoryakimov240
    @egoryakimov240 4 месяца назад +4

    Крайне понятное и лаконичное объяснение темы. Один из лучших ресурсов про САР, что я видел. Большое вам спасибо!

    • @fullstackguy
      @fullstackguy  4 месяца назад

      Большое спасибо Вам, Егор, за теплые слова! 🤝

  • @user-qm8zj9gg3c
    @user-qm8zj9gg3c 26 дней назад +2

    спасибо, наконец понял

  • @alexandr6055
    @alexandr6055 3 месяца назад +3

    лучшее объяснение, что мне приходилось слышать, спасибо!!

    • @fullstackguy
      @fullstackguy  3 месяца назад

      Приятно слышать! Спасибо за добрые слова! 🤝

  • @hello_world_zz
    @hello_world_zz Год назад +9

    оч классно. Недоумеваю почему так мало просмотров. Удачи каналу. Шалом из Израиля

    • @fullstackguy
      @fullstackguy  Год назад

      Большое спасибо! Рад что мои видосы оказались полезными 🤓

  • @v.shinoxy
    @v.shinoxy 5 месяцев назад +2

    Очень понятно, с примерами и подробностями. Спасибо!

    • @fullstackguy
      @fullstackguy  5 месяцев назад

      Пожалуйста! Рад, что видео оказалось полезным! 🤝

  • @user-wo3wx1fv1l
    @user-wo3wx1fv1l Год назад +3

    Очень хорошо подан материал!

    • @fullstackguy
      @fullstackguy  Год назад

      Михаил, большое спасибо за отзыв! Я рад что моя работа оказалась полезной! 🤝

  • @iamusayev1337
    @iamusayev1337 7 месяцев назад +1

    Очень познавательно и интересно, спасибо больше за столь информативное видео

    • @fullstackguy
      @fullstackguy  7 месяцев назад

      Спасибо за добрые слова! Рад, что видео оказалось полезным! 🤝

  • @araavanesyan4616
    @araavanesyan4616 6 месяцев назад +1

    Thanks a lot, it was very helpful

    • @fullstackguy
      @fullstackguy  6 месяцев назад

      I’m happy that it was useful for you 🤝

  • @damka2011
    @damka2011 Год назад

    Топчик, однозначно👍

  • @TheBestMovies13
    @TheBestMovies13 Год назад +1

    Видео супер полезное, лайк

    • @fullstackguy
      @fullstackguy  Год назад

      Рад что пригодилось! 🤝

  • @mishaprokopovich5253
    @mishaprokopovich5253 3 месяца назад

    а как сделать СР систему, по идее, если какой-то узел выходит из строя или между узлами прерывается связь, то пользователям вообще должно быть запрещено взаимодействие с любым из узлов пока не устранится проблема?

    • @fullstackguy
      @fullstackguy  3 месяца назад +3

      Михаил, Вы все верно поняли. CP системы должны быть согласованы в любой момент времени. Это значит, что пока, например, запись данных не завершиться на всех узлах системы, система не вернет ответ пользователю и он будет ждать.
      Если запись на один или несколько узлов не удалась, происходит откат везде и сразу (пример: двухфазный коммит).
      Примером CP систем является Redis, например

  • @user-uy5gk1jv3d
    @user-uy5gk1jv3d Год назад

    А что с сайтом?(( Хотел статью почитать...

    • @fullstackguy
      @fullstackguy  Год назад

      Спасибо что обратили моё внимание! 🤝 Забыл обновить ссылку. Вот правильная: fullstackguy.anverbogatov.ru/cap-theorem/

    • @user-uy5gk1jv3d
      @user-uy5gk1jv3d Год назад +1

      @@fullstackguy Супер! Спасибо!

  • @AK-nb9cb
    @AK-nb9cb 6 месяцев назад

    Ссылка на статью not found

    • @fullstackguy
      @fullstackguy  6 месяцев назад

      Спасибо за наводку. Ссылку обновил 🤝

  • @igorgaponenko2001
    @igorgaponenko2001 Год назад +3

    не покрыт кейс: CP

    • @fullstackguy
      @fullstackguy  Год назад +3

      Прошу прощения за долгий ответ.
      О CP отвечу прямо тут:
      Исходя из определений C и P (www.fullstackguy.ru/knowledge-base/distributed-systems/cap-theorem/), можно представить, что CP система будет консистентна и при этом устойчива к секционированию.
      Что это значит?
      1) что система будет хранить свои данные на нескольких узлах. То есть - будет дупликация данных.
      2) что система будет позволять пользователям читать данные с любого узла, даже если связь между двумя узлами нарушена
      3) что система НЕ будет позволять производить запись новых данных, если узлы не связаны друг с другом (при дублировании данных на разных узлах - в случае, если узлы не могут связаться друг с другом, это нарушение целостности данных или Consistency принципа)

  • @user-zm2mn1kr6q
    @user-zm2mn1kr6q Год назад

    хотел уточнить по поводу партишн толеранс, в примере был запрос на один сервер, где мы обновили данные, потом идет запрос на чтение данных со второго сервера, и получает старые данные) так и в чем тут суть?) я туповат, признаюсь, не стыдно) суть в том, что второй сервер вместо того, чтоб отвалиться и сказать, что я не дам тебе данные, потому что я не общаюсь с первым сервером, просто возвращает старые данные?

    • @eggrevolver
      @eggrevolver Год назад +5

      Вы всё верно поняли: если у вас нарушен механизм общения между двумя серверами или кластерами, но вы всё еще хотите получать со всех них данные, то должны мириться с тем, что данные будут неконсистенты. Если же вы хотите консистентные данные, то должны попрощаться с partition tolerance и получать данные только с того сервера, где они последней версии, либо попрощаться с availability и ждать, пока связь между двумя частями (в данном случае) восстановится и целостность данных восстановится.
      Всё куда проблемней, если у вас кластеров несколько и на одном одни данные свежие, а на другом другие :) Поэтому в некоторых системах никуда не уйти от одного класса, в других от другого. Скажем, если вы закинули в корзинку товар, которого уже нет, это, хоть и нехорошо, но допустимо, однако он на чекауте уже должен быть обязательно недоступен.
      Можете посмотреть еще что такое eventually consistent, тоже интересно и полезно в этом свете. Также, отсюда вырастает еще один серьезный класс проблем: т.н. "split brain", с которым тоже надо знать, как бороться.

  • @a.danilenko
    @a.danilenko Месяц назад

    Теорема не может "работать" или "не работать". Теорема может быть истинной или нет, иметь доказательство или не иметь.

  • @MrYura999
    @MrYura999 Год назад

    Как всё медленно, скорость 1.5 выручает

    • @fullstackguy
      @fullstackguy  Год назад

      Целью этого канала Я ставлю просвещение. А сложные знания, вроде этих, торопежки не терпят.

    • @user-ho9yz5fo5x
      @user-ho9yz5fo5x Год назад +1

      Для меня скорость вполне комфортная. Есть возможность обдумать сказанное

  • @user-nr3ru4nv1z
    @user-nr3ru4nv1z 4 месяца назад

    Consistency (согласованность) - это свойство, которое говорит, что система имеет согласованное состояние. Ага. Не поспоришь.

    • @fullstackguy
      @fullstackguy  4 месяца назад

      Учился у лучших! От создателей «это вам не это» и «не только лишь все» 😀