Бразильский разработчик Леандро Перейра (Leandro Pereira) из
Intel Open Source Technology Center развивает новый легковесный http-сервер Lwan (https://lwan.ws/), нацеленный на минимальное потребление ресурсов и поддерживающий отдачу как статического, так и динамического контента. Lwan может использовать обособленно или в форме встраиваемой библиотеки. Разработка Lwan началась четыре года назад в форме персонального исследовательского проекта, нацеленного на изучение методов многопоточной обработки данных и неблокирующего ввода. Код проекта написан на языке Си и распространяется (https://github.com/lpereira/lwan) под лицензией GPLv2+. Поддерживается работа в Linux и FreeBSD.
Сервер включает встроенный движок-шаблонизатор Mustache (https://mustache.github.io/), поддерживает подключение обработчиков контента, написанных на языках Си и Lua,
и предоставляет API для разработки интегрированных с http-сервером web-приложений и для создания дополнений, расширяющих возможности http-сервера. Lwan поддерживает протоколы HTTP/1.0, HTTP/1.1 (с поддержкой keep-alive и pipelined) и PROXY, для перенаправления запросов применяется сопоставление по шаблонам Lua (http://www.lua.org/manual/5.2/manual.html#6.4.1).
Для асинхронной обработки соединений используются сопрограммы, выполнение которых координируется встроенным планировщиком совместной многозадачности, что позволяет создать иллюзию блокирующего ввода/вывода для обработчиков запросов. Сервер обеспечивает минимальное потребление памяти и минимизирует число системных вызовов, операций копирования и распределения памяти. Например, для 10 тысяч ожидающих обработки соединений расходуется около 500 Кб ОЗУ. Размер исполняемого файла составляет 110 Кб.
В зависимости от размера файла выбирается оптимальный метод его отдачи, например, для файлов больше 16 Кб не используется прямая отдача без промежуточного копирования в пространство пользователя, а для небольших файлов применяется векторизированный ввод/вывод из созданных через mmap буферов.
URL: https://lwan.ws/
Новость: http://www.opennet.ru/opennews/art.shtml?num=44301