Основы дизайна систем: пропускная способность

Пропускную способность (throughput) можно понимать как максимальную производительность машины или системы. Ее часто используют на заводах, чтобы рассчитать, сколько работы сборочная линия может сделать за час или день, или в другую единицу измерения времени.

Например, сборочная линия может собирать 20 автомобилей в час, что составляет ее пропускную способность. При вычислениях это будет объем данных, который может быть передан за единицу времени. Таким образом, интернет-соединение со скоростью 512 Мбит/с - это мера пропускной способности - 512 Мбит (мегабит) в секунду.

А теперь представьте себе веб-сервер. Если он получает 1 миллион запросов в секунду и может обслуживать только 800 000 запросов, тогда его пропускная способность составляет 800 000 в секунду. Вы можете в конечном итоге измерить пропускную способность в битах, а не в запросах, так что это будет N бит в секунду.

В этом примере есть узкое место, потому что сервер не может обрабатывать более N бит в секунду, но запросов больше, чем это количество. Таким образом, узкое место - это ограничение системы. Система работает ровно настолько, насколько быстро ее самое медленное узкое место.

Если один сервер может обрабатывать 100 бит в секунду, а другой - 120 бит в секунду, а третий - только 50, тогда вся система будет работать со скоростью 50 бит в секунду, потому что это ограничение - оно поддерживает скорость других серверов, в данной системе.

Поэтому увеличение пропускной способности в любом месте, кроме узкого места, может быть пустой тратой - вы можете сначала просто увеличить пропускную способность на самом низком узком месте.

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

Увеличение пропускной способности иногда может быть краткосрочным решением, и поэтому хороший системный разработчик продумает лучшие способы масштабирования пропускной способности данной системы, в том числе путем разделения запросов (или любой другой формы «нагрузки») и их распределения между другими ресурсами и т. д. Ключевой момент, о котором следует помнить, - это пропускная способность, ограничение или узкое место и их влияние на систему.

Устранение задержки и пропускной способности не являются изолированными универсальными решениями сами по себе и не связаны друг с другом. Они воздействуют на всю систему и влияют на нее, поэтому важно понимать систему в целом и природу требований, которые будут предъявляться к системе с течением времени.


Читайте также:

Комментарии

Популярные сообщения из этого блога

Язык поисковых запросов в Graylog

Хэш-таблица: разрешение коллизий

Нормальные формы, пример нормализации в базе данных