Data Center

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

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

Переводы: EN

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

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

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

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

System Design. Подготовка к сложному интервью - Глава 2 - Приблизительные оценки

System Design. Подготовка к сложному интервью - Глава 2 - Приблизительные оценки

Переводы: EN

Очень короткая глава 2 посвящена тому, как делать приблизительные оценки, чтобы начать с самых важных моментов при разработке программного обеспечения.

Концепции, которые должен знать КАЖДЫЙ разработчик программного обеспечения:

  • “Сила двух”
  • Стандартные цифры задержки! Насколько быстрой является память, насколько медленным является диск и т.д.
  • Показатели доступности
  • Про какие ключевые метрики стоит думать

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

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

System Design. Подготовка к сложному интервью - Глава 1 - Масштабирование от нуля до миллионов пользователей

System Design. Подготовка к сложному интервью - Глава 1 - Масштабирование от нуля до миллионов пользователей

Переводы: EN

Отличный общий план для масштабирования любого приложения с нуля до миллионов пользователей.

  • Настройка одного сервера
  • Выбор и использование базы данных
  • Вертикальное масштабирование против горизонтального масштабирования подходов. И почему вы должны предпочесть горизонтальный
  • Добавлен балансировщик нагрузки для горизонтального масштабирования
  • Добавление репликации базы данных для горизонтального масштабирования
  • Добавление кеша
  • Добавление CDN
  • Архитектура без сохранения состояния и с сохранением состояния и использование внешнего хранилища состояния
  • Добавление дополнительных центров обработки данных
  • Добавление очереди сообщений
  • Добавление ведения журнала, метрик и автоматизации
  • Масштабирование базы данных
  • и дальнейшие шаги…

Все это тщательно, но кратко раскрыто в Главе 1 книги: