Timestamp

System Design. Подготовка к сложному интервью - Глава 7 - Проектирование генератора уникальных идентификаторов в распределенных системах

System Design. Подготовка к сложному интервью - Глава 7 - Проектирование генератора уникальных идентификаторов в распределенных системах

Переводы: EN

Генерация уникального идентификатора кажется простой задачей, но не в высоконагруженных распределенных системах!

Эта тема состоит из:

  • Понимание требований и почему это сложная задача
  • Возможные решения:
    • Репликация с несколькими мастерами
    • Универсальный уникальный идентификатор (UUID)
    • Сервер билетов
    • Подход Twitter SNOWFLAKE (похоже, что он наилучший!)
  • Подробности:
    • Штамп времени
    • Номер последовательности
  • Другие вопросы
    • Синхронизация часов
    • Настройка длины секции
    • Высокая доступность

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

“System Design. Подготовка к сложному интервью” Алекса Сюй. Оригинал: “System Design Interview – An insider’s guide” by Alex Xu

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

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

Переводы: EN

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

Martin Kleppmann - Designing Data-Intensive Applications

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

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

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

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

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

Резюме: