Оценка пропускной способности

Базовый System Design
≈ 2 мин чтения

Частота запросов превращается в поток данных

RPS говорит, сколько операций происходит в секунду, но не показывает, сколько данных они переносят. Запрос с несколькими полями JSON и загрузка фотографии могут одинаково считаться как один request, хотя нагрузка на сеть у них отличается на порядки.

Базовая оценка пропускной способности связывает частоту операций со средним размером передаваемых данных.

bandwidth = requests/s × bytes/request

Если сервис отдаёт 5 000 ответов в секунду со средним размером 20 KB, получается примерно 100 MB/s исходящего трафика, то есть около 800 Mb/s.

5,000 requests/s × 20 KB ≈ 100 MB/s
100 MB/s × 8 ≈ 800 Mb/s

Байты и биты — разные единицы

Размер объектов обычно записывают в B, KB, MB или GB — это байты. Сетевую скорость часто указывают в bit/s: Mb/s или Gb/s. Один байт содержит восемь бит, поэтому при переходе между этими величинами появляется множитель 8.

Именно здесь легко получить ошибку в восемь раз, поэтому единицы лучше писать прямо рядом с числами, а преобразование выполнять отдельным шагом.

Ingress и egress лучше считать отдельно

Входящий и исходящий потоки часто сильно различаются. Например, сервис хранения фотографий может получать сравнительно редкие большие загрузки, но затем многократно отдавать те же изображения пользователям. У другого продукта, наоборот, основным потоком будут входящие события.

ingress  = write_RPS × average_request_size
egress   = read_RPS  × average_response_size

Разделение помогает увидеть направление, которое действительно определяет сетевую нагрузку. Общий объём трафика без этого контекста может скрыть важный дисбаланс.

Средний размер тоже является допущением

Если ответы бывают от 1 KB до нескольких мегабайт, одно среднее число упрощает реальность. Для быстрой оценки это нормально, пока допущение явно названо. Если крупные объекты составляют отдельный важный сценарий, полезнее считать их своим потоком, а не смешивать с маленькими API-ответами.

Так же как с RPS, после среднего потока стоит проверить пиковый период. Сетевой канал, рассчитанный ровно под среднее значение, может стать узким местом во время всплеска активности.

Количество запросов и сетевой трафик нельзя оценивать независимо. Один и тот же RPS может означать килобайты или гигабайты в секунду — всё решает размер данных на операцию.