CAP Theorem

System Design. Подготовка к сложному интервью - Глава 6 - Проектирование хранилища типа Ключ-Значение

System Design. Подготовка к сложному интервью - Глава 6 - Проектирование хранилища типа Ключ-Значение

Переводы: EN

Дизайн хранилища типа Ключ-Значене состоит из понимания следующих тем:

  • Что мы хотим от хранилища Ключ-Значение?
  • Односерверное хранилище Ключ-Значение
  • РАСПРЕДЕЛЕННОЕ хранилище Ключ-Значение:
    • Теорема CAP
    • Реальные компромиссы для распределенных систем
  • Системные компоненты:
    • Партиционирование данных
    • Репликация данных
    • Консистентность
    • Разрешение неконсистентности: Версии
    • Обработка всех типов сбоев: Обнаружение сбоев, Обработка ВРЕМЕННЫХ сбоев, Обработка ПОСТОЯННЫХ сбоев, Устранение сбоев в работе центра обработки данных
  • Схема архитектуры системы
  • Путь записи
  • Путь чтения

Эти пункты раскрыты в очень интересной главе 6 книги:

Высоконагруженные приложения - Глава 9 - Согласованность и Консенсус

Высоконагруженные приложения - Глава 9 - Согласованность и Консенсус

Переводы: EN

Ранее книжный клуб нашей компании изучил отличную книгу:

Martin Kleppmann - Designing Data-Intensive Applications

Мартин Клеппман - Высоконагруженные приложения. Программирование, масштабирование, поддержка

Это - лучшая книга о создании комплексных масштабируемых программных систем, которые я когда-либо читал. 💪

Как обычно, я подготовил краткий обзор и майнд-мапу.

В главе 9 рассказывается о согласованности и консенсусе в распределенных системах. Она охватывает следующие темы:

  • Что такое согласованность и согласованность в конечном счете.
  • Линеаризуемость. Зачем это нужно. Отличие от сериализуемости. Как реализовать линеаризуемость. Стоимость линеаризуемости. Теорема CAP.
  • Гарантии определения порядка. Что такое порядок и причинность. Их отношение к линеаризуемости. Sequence Number Ordering и как его реализовать. Total Order Broadcast и как его реализовать.
  • Распределенные транзакции и консенсус. Зачем нужны консенсус и распределенные транзакции. Как их реализовать, связанные с ними проблемы и программное обеспечение, которое помогает.

Резюме: