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-оптимизации!