Найти в Дзене

System Design лекция 1

Низкая задержка (low latency) обеспечивает быструю работу, в то время как высокая (high latency) приводит к торможению, как пробка на дороге. Заметки подчёркивают, что оптимизация latency — это ключ к улучшению пользовательского опыта.
Заметки подробно описывают алгоритмы балансировки нагрузки: Эти методы, как указано, помогают избежать перегрузки и повысить производительность. 99,9% Uptime (SLA)
Latency < 100 мс, Throughput > X операций/с (SLO)
Измерение: Latency, Throughput, Uptime % (SLI) Forward Proxy: Клиент ----> Proxy ---|-> Сервис (защита клиента, кэширование).
Reverse Proxy: Клиент -|---> Reverse Proxy ----> Сервис (защита сервера, балансировка). Как мы видим при forward proxy, клиент понимает, что обращается к сервису проксирования ( примре vpn-сервисы). При reverse proxy, клиет ничего не занет о проксировании(пример любой крупный сервис, Google) Заметки выделяют типичные проблемы: В 2025 году эти концепции — не просто технические термины, а инструменты, ко
Оглавление

1. Производительность: Latency, Throughput и I/O

  • Latency (задержка): Время, необходимое для передачи данных между компонентами системы. Как указано в заметках, задержка состоит из этапов: Latency = t1 + t2 + t3 + t4 + t5 + t6, где:t1 — время запроса от клиента,
    t2 — время обработки сервером,
    t3 — время обращения к базе данных,
    t4 — время обработки запроса в базе,
    t5 — время ответа базы данных,
    t6 — время ответа сервера,
    t7 — время передачи запроса на клиент

Низкая задержка (low latency) обеспечивает быструю работу, в то время как высокая (high latency) приводит к торможению, как пробка на дороге. Заметки подчёркивают, что оптимизация latency — это ключ к улучшению пользовательского опыта.

  • Throughput (пропускная способность): Количество операций, обработанных системой за единицу времени. Это зависит от скорости обработки и объёма данных. В заметках указано, что высокий throughput достигается при низкой задержке и эффективном балансировании нагрузки.
  • I/O (ввод-вывод): Операции чтения (read) и записи (write), влияющие на производительность. Заметки упоминают соотношение read/write ratio, где баланс между чтением и записью критичен. Например, высокая доля записей может замедлить систему, а сбалансированное распределение улучшает throughput.

2. Масштабирование: Vertical и Horizontal Scaling

  • Vertical Scaling (вертикальное масштабирование): Улучшение одного сервера путём добавления ресурсов (процессоров, памяти, дисков). Заметки указывают, что это имеет ограничения: сервер не может бесконечно расти, как башня с потолком высоты.
  • Horizontal Scaling (горизонтальное масштабирование): Добавление новых серверов (инстансов) для распределения нагрузки. В заметках описаны L4 и L7 Load Balancers, а также DNS Load Balancing:L4 работает на сетевом уровне, распределяя запросы по IP/порту.
    L7 анализирует содержимое запросов (HTTP/HTTPS) на уровне приложения.
    DNS балансировка распределяет запросы через географическое расположение (geo load balancing) или случайное распределение.

3. Балансировка нагрузки: алгоритмы и подходы

Заметки подробно описывают алгоритмы балансировки нагрузки:

  • Random: Случайное распределение запросов между серверами.
  • Round Robin: Поочерёдное распределение (1-й запрос — сервер 1, 2-й — сервер 2, и т.д.).
  • Weighted Round Robin: Распределение с учётом весов серверов (например, более мощный сервер получает больше запросов).
  • Sticky Sessions: Фиксация сессии для пользователя (например, по hash), чтобы запросы шли к одному серверу.
  • Least Connections: Направление запроса на сервер с наименьшим количеством активных соединений.
  • Power of Two Choices: Выбор между двумя наименее загруженными серверами.
  • Least Response Time: Направление на сервер с наименьшим временем ответа.

Эти методы, как указано, помогают избежать перегрузки и повысить производительность.

4. Надёжность: MTBF, Health Checks, SLA/SLO/SLI

  • MTBF (Mean Time Between Failures): Среднее время между отказами, показатель надёжности системы. Заметки подчёркивают, что снижение downtime и увеличение uptime напрямую влияют на доступность. Например, MTBF помогает прогнозировать вероятность сбоев.
  • Health Checks: Проверки состояния серверов, такие как heartbeat (пульс системы), позволяют отслеживать работоспособность и автоматически переключаться на резервные инстансы при сбоях.
  • SLA (Service Level Agreement): Договор, гарантирующий доступность, например, 99,9% uptime. Заметки уточняют, что SLA — это формальное обязательство.
  • SLO (Service Level Objectives): Конкретные цели, такие как задержка менее 100 мс или throughput не ниже определённого уровня.
  • SLI (Service Level Indicators): Метрики, измеряющие производительность, например, latency, throughput, и процент доступности.

99,9% Uptime (SLA)

Latency < 100 мс, Throughput > X операций/с (SLO)

Измерение: Latency, Throughput, Uptime % (SLI)


5. Безопасность и архитектура

  • Безопасность: Заметки упоминают шифрование данных, защиту от атак и использование прокси. Forward Proxy защищает клиента, направляя запросы через посредника, а Reverse Proxy — сервер, распределяя и проверяя запросы.
  • Stateful vs Stateless:Stateful системы сохраняют состояние между запросами, что может замедлить работу.
    Stateless системы обрабатывают запросы независимо, улучшая масштабируемость и отказоустойчивость.
  • Data Intensive/Compute Intensive: Высоконагруженные данные требуют оптимизации I/O, а вычисления — мощных процессоров. Заметки подчёркивают баланс между этими аспектами для стабильной работы.
  • Forward/Reverse Proxy:

Forward Proxy: Клиент ----> Proxy ---|-> Сервис (защита клиента, кэширование).
Reverse Proxy: Клиент -|---> Reverse Proxy ----> Сервис (защита сервера, балансировка).

Как мы видим при forward proxy, клиент понимает, что обращается к сервису проксирования ( примре vpn-сервисы).

При reverse proxy, клиет ничего не занет о проксировании(пример любой крупный сервис, Google)


6. Проблемы и решения

Заметки выделяют типичные проблемы:

  • Высокая задержка (high latency), медленные операции I/O, перегрузка при скачке трафика.
  • Решения включают мониторинг latency, throughput, read/write ratio, а также автоматизацию через оркестрацию (Kubernetes) и Service Discovery для автоматического поиска сервисов.
  • Устойчивость достигается через горизонтальное масштабирование, stateless архитектуру и регулярные health checks. Заметки подчёркивают, что эти подходы минимизируют риски и улучшают производительность.

В 2025 году эти концепции — не просто технические термины, а инструменты, которые обеспечивают скорость, надёжность и безопасность IT-систем. А сталкивались ли вы с медленными сайтами или сбоями серверов? Какие из описанных методов, по вашему мнению, наиболее эффективны? Делитесь в комментариях — интересно узнать ваше мнение!

Если вас интересуют подобные технические аспекты, подпишитесь на мой канал — будем вместе разбираться в тонкостях IT-оптимизации!