Мой блог

Один большой или много маленьких

Практически во всех клиент-серверных системах, есть большое количество маленьких блоков данных, которые нужны в разных частях клиентского кода, либо все одновременно. Очевидным решением кажется вынести все такие данные в один обработчик и запросить разом при инициализации клиентского приложения или при первом обращении к данным. В веб-приложениях интересным решением может показаться встраивание данных непосредственно в JavaScript код при загрузке.

Когда приложение только начинает свой жизненный путь, а сервер один. Объединение данных в один запрос дает прирост производительности. Тесты показывают уменьшение времени инициализации в 3 – 5 раз по сравнению с запросом всех данных по-отдельности. И в дальнейшем правильность такого подхода уже не вызывает сомнений.

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

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

26 мар.2018