Да-да, в современном мире ИТ сети всё ещё важны. Их незнание может привести к долгому отклику (response time), неправильной настройке кластера (а ты же хочешь работать с Kubernetes?) и неправильной балансировке.
Есть такое понятие OSI — модель Open System Intercommunication. Это подход, который описывает движение данных по сети от верхнего уровня (программного) до нижнего (физического) и обратно.
Всего 7 уровней: 1-й — физический (например, кабели), а 7-й — прикладной (как мы работаем с данными в приложениях).
Но не пугайся, разработчикам обычно не нужно разбираться в передаче сигнала по кабелям. Мы будем работать с более высокоуровневыми штуками. Нам стоит хорошо знать лишь два уровня — 4 и 7. Но иногда ты можешь увидеть, что 3 и 4 уровни объединяют: L3/L4.
Вот что там происходит.
3-й уровень: сетевой слой отвечает за маршрутизацию данных между различными сетями и узлами. Он определяет оптимальные маршруты для передачи пакетов данных и управляет логическими адресами.
4-й уровень: транспортный слой отвечает за надёжную передачу данных между конечными узлами сети. Он обеспечивает сегментацию данных, управление потоком, контроль ошибок и упорядочивание сегментов. Самые известные протоколы: TCP & UDP.
7-й уровень: прикладной слой. Это верхний слой модели OSI, который отвечает за взаимодействие конечных пользователей и приложений с сетевыми сервисами. Он обеспечивает интерфейс для приложений, позволяя им обмениваться данными через сеть. Самый известный протокол — HTTP.
Как я уже говорил выше, 3-й и 4-й уровень часто используются вместе, L3/L4, и это окей — работая на этих уровнях, балансировщик принимает решения на основе комбинации IP-адреса назначения и порта назначения.
Так что есть два вида балансировщиков: L3/L4 и L7
- L3/L4 могут обрабатывать огромные объемы трафика с очень низкой нагрузкой на собственные ресурсы, поскольку не требуется глубокий анализ контента, как на L7. Это критически важно для инфраструктур с высокой пропускной способностью
- L7 подходит для более умной балансировки, но он медленнее, так как находится выше, если рассматривать сетевые уровни. А значит, нужно больше времени, чтобы собрать запрос и начать с ним работать.
Например, если ты хочешь делать балансировку по HTTP headers, тебе придется сначала идти до 7 уровня. Но зато она будет намного более точная и дает больше вариантов, чем на L3/L4, где часто берется хэш (hash) от IP.