Latency

System Design. Подготовка к сложному интервью - Глава 4 - Проектирование ограничителя трафика

System Design. Подготовка к сложному интервью - Глава 4 - Проектирование ограничителя трафика

Переводы: EN

Каждое популярное программное обеспечение должно иметь ограничитель трафика. Это предотвращает DDOS-атаку, снижает затраты и предотвращает перегрузку серверов.

Есть несколько каверзных вопросов, которые необходимо учитывать при внедрении ограничителя трафика:

  • Где поставить ограничитель трафика: на стороне клиента, на стороне сервера, на шлюзе?
  • Алгоритмы ограничения скорости. Есть много алгоритмов со своими плюсами и минусами: Token Bucket, Leaking Bucket, Fixed window counter, Sliding window log, Sliding window counter. Особенности вашего бизнеса определят правильный алгоритм.
  • Как создаются правила ограничения трафика?
  • Где хранятся правила?
  • Как обрабатывать запросы, скорость которых ограничена?

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

Высоконагруженные приложения - Глава 8 - Проблемы с распределенными системами

Высоконагруженные приложения - Глава 8 - Проблемы с распределенными системами

Переводы: EN

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

Martin Kleppmann - Designing Data-Intensive Applications

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

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

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

В главе 8 раскрываются проблемы распределенных систем, не связанные с базами данных. Команды разработчиков должны учитывать их при разработке распределенного программного обеспечения.

  • Неисправности и частичные отказы. Необходимость строить надежную систему из ненадежных компонентов.
  • Проблема 1: ненадежные сети. Почему такое случается. Как это обнаружить. Как с этим бороться. Синхронные и асинхронные сети. Гибридные сети и эмуляция гибридных сетей.
  • Проблема 2: ненадежные часы. Монотонные часы и часы времени суток. Что использовать, а что не использовать в разных случаях. Хорошие практики.
  • Проблема 3: знание, правда и ложь. Что такое правда в распределенных системах. Проблема византийских генералов. Модель системы и реальность: что использовать в каких случаях.

Скачать всю майнд-мапу в PDF

Высоконагруженные приложения - Глава 5 - Репликация

Высоконагруженные приложения - Глава 5 - Репликация

Переводы: EN

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

Martin Kleppmann - Designing Data-Intensive Applications

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

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

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

Глава 5:

  • Вступление. Как масштабировать приложения. Репликация и партиционирование.
  • Три алгоритма репликации
  • Репликация с одним лидером
    • Лидеры и последователи
    • Синхроная и асинхронная репликация
    • Добавление новых последователей
    • Обработка перебоев в работе узлов
    • Технические реализации и все возможные проблемы
  • Многолидерная репликация
    • Случаи использования, когда это хорошо
    • Обработка конфликтов на запись
    • Три топологии и потенциальные проблемы
  • Репликация без лидера
    • Запись в базу данных, когда узел не работает
    • Кворумы и проблемы с ними
    • Обнаружение одновременных записей и способы разрешения конфликтов

Скачать всю майнд-мапу в PDF

Высоконагруженные приложения - Глава 1 - Надежные, масштабируемые и удобные в сопровождении приложения

Высоконагруженные приложения - Глава 1 - Надежные, масштабируемые и удобные в сопровождении приложения

Переводы: EN

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

Martin Kleppmann - Designing Data-Intensive Applications

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

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

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

Глава 1:

  • Строительные блоки приложений
  • Что такое надежность, масштабируемость и ремонтопригодность. Примеры и определения.
    • Неисправности и отказы
    • Производительность, нагрузка, задержка и время отклика
    • Работоспособность, простота, эволюционируемость
  • Почему вы должны убивать свои сервера случайным образом 😅
  • Как Twitter доставляет 12 000 твитов в секунду до 300 000 пользователей в секунду. (Очень интересно!)
  • Сколько денег Amazon теряет за каждые 100мс задержки ответа
  • Как быстро рассчитать персентили для мониторинга времени отклика в PROD

Скачать всю майнд-мапу в PDF