Основы дизайна систем: задержка

«Задержка» и «пропускная способность» - это термины, которые вы часто будете слышать по мере того, как начнете получать больший опыт в проектировании систем для поддержки внешнего интерфейса вашего приложения. Они очень важны для работы и производительности вашего приложения и системы в целом. Часто существует тенденция использовать эти термины в более широком смысле, чем предполагалось, или вне контекста.

Задержка (latency) - это просто мера продолжительности. Какая продолжительность? Продолжительность действия, чтобы завершить что-то или дать результат. Например: для перемещения данных из одного места в системе в другое. Вы можете думать об этом как о задержке или просто о времени, затраченном на выполнение операции.

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

Когда вы загружаете сайт, вы хотите, чтобы это было как можно быстрее и плавнее. Другими словами, вам нужна низкая задержка. Быстрый поиск означает низкую задержку. Таким образом, поиск значения в массиве элементов происходит медленнее (большая задержка, потому что вам нужно перебирать каждый элемент в массиве, чтобы найти тот, который вам нужен), чем поиск значения в хэш-таблице (меньшая задержка, потому что вы просто смотрите данные за "постоянное" время с помощью ключа. Итерация не требуется).

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

В этом смысле задержка - это величина, обратная скорости. Вам нужны более высокие скорости и меньшая задержка. Скорость (особенно при сетевых вызовах, таких как HTTP) также определяется расстоянием. Таким образом, на задержку из Лондона в другой город будет влиять расстояние от Лондона.

Как вы понимаете, вы хотите спроектировать систему, чтобы избежать проверки связи с удаленными серверами, но в таком случае хранение вещей в памяти может оказаться невозможным для вашей системы. Это компромиссы, которые делают проектирование системы сложным, трудным и чрезвычайно интересным!

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


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

Комментарии

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

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

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

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