Правильная ссылка на статью:
Макаров И.С., Ларин Д.В., Воробьева Е.Г., Емелин Д.П., Карташов Д.А..
Влияние асинхронных и многопоточных моделей обработки запросов на производительность серверных веб-приложений
// Программные системы и вычислительные методы.
2025. № 1.
С. 13-20.
DOI: 10.7256/2454-0714.2025.1.73665 EDN: UZPPWT URL: https://nbpublish.com/library_read_article.php?id=73665
Читать статью
Результаты процедуры рецензирования статьи:
|
EDN: UZPPWT
|
Аннотация:
Объектом исследования являются серверные веб-приложения и их производительность при обработке большого количества одновременных запросов. В качестве предмета исследования рассматриваются асинхронные технологии (Node.js, Python Asyncio, Go, Kotlin Coroutines) и многопоточные модели (Java Threading, Python Threading). Авторы подробно анализируют асинхронные циклы событий, горутины, корутины и классические многопоточные подходы, оценивая их эффективность в задачах с интенсивным использованием I/O и вычислительных ресурсов. Проводится эксперимент с разработкой API на трёх языках (Java, Node.js, Go) и тестированием при помощи утилиты hey. Также исследуются особенности масштабируемости, оптимизации производительности, использование кэширования, обработка ошибок, нагрузочные тесты и особенности реализации параллельных вычислений. Цель исследования — определить, какие подходы обеспечивают наибольшую производительность в серверных приложениях. Методы исследования включают нагрузочное тестирование, сбор метрик (время отклика, пропускная способность и потребление ресурсов сервера ) и анализ результатов. Научная новизна заключается в сравнении асинхронных и многопоточных методов в реальных сценариях веб-разработки. Основными выводами исследования являются рекомендации по использованию асинхронных технологий в высоконагруженных I/O задачах и многопоточности в вычислительно сложных сценариях. Полученные результаты помогут разработчикам оптимизировать производительность серверных приложений в зависимости от их задач и нагрузки. Дополнительно исследование рассматривает аспекты сложности отладки асинхронных приложений, влияние пулов потоков на производительность многопоточных решений, а также сценарии, в которых асинхронные и многопоточные подходы могут дополнять друг друга. Особое внимание уделено управлению ресурсами сервера при масштабируемых нагрузках, что позволит IT-специалистам более точно выбирать инструменты и технологии для решения конкретных задач. В заключении обсуждаются возможные пути оптимизации работы серверных приложений, включая использование новых подходов и алгоритмов, а также перспективы развития асинхронных и многопоточных технологий в контексте высоконагруженных систем, их влияние на общую архитектуру приложений, а также на повышение отказоустойчивости и безопасности.
Ключевые слова:
асинхронность, многопоточность, производительность, серверные веб-приложения, нагрузочное тестирование, Node.js, Python Asyncio, Go горутины, Java Threading, производительность серверных приложений
Abstract:
The object of the study is server-side web applications and their performance when processing a large number of simultaneous requests. Asynchronous technologies (Node.js, Python Asyncio, Go, Kotlin Coroutines) and multithreaded models (Java Threading, Python Threading). The authors analyze asynchronous event loops, goroutines, coroutines, and classical multithreaded approaches in detail, evaluating their effectiveness in tasks with intensive use of I/O and computing resources. An experiment is underway with API development in three languages (Java, Node.js, Go) and testing using the hey utility. It also explores the features of scalability, performance optimization, caching, error handling, load tests, and implementation features of parallel computing. The purpose of the study is to determine which approaches provide the highest performance in server applications. Research methods include load testing, collection of metrics (response time, bandwidth, and server resource consumption), and analysis of the results. The scientific novelty lies in comparing asynchronous and multithreaded methods in real-world web development scenarios. The main conclusions of the study are recommendations on the use of asynchronous technologies in high-load I/O tasks and multithreading in computationally complex scenarios. The results obtained will help developers optimize the performance of server applications depending on their tasks and workload. Additionally, the study examines aspects of the complexity of debugging asynchronous applications, the impact of thread pools on the performance of multithreaded solutions, as well as scenarios in which asynchronous and multithreaded approaches can complement each other. Special attention is paid to server resource management under scalable loads, which will allow IT specialists to more accurately select tools and technologies for solving specific tasks. In conclusion, possible ways to optimize the operation of server applications are discussed, including the use of new approaches and algorithms, as well as the prospects for the development of asynchronous and multithreaded technologies in the context of highly loaded systems, their impact on the overall application architecture, as well as on increasing fault tolerance and security.
Keywords:
Go goroutines, Python Asyncio, load testing, Node.js, server-side web applications, efficiency, Java Threading, multithreading, asynchrony, performance of server applications