Repolode
valyala

valyala/fasthttp

Быстрая реализация HTTP-сервера и клиента для Go с высокой пропускной способностью и низкими накладными расходами на выделение памяти.

Звёзды
23,489
Форки
1,883
Открытые issues
66
Последний коммит
позавчера

Что это?

fasthttp — это реализация HTTP для Go с API сервера и клиента. Она рассчитана на экстремально высокую нагрузку: повторно использует объекты запросов и ответов и избегает выделения памяти на горячих путях. В README приведены бенчмарки со сравнением с net/http: в описанных сценариях сервер работает примерно до 6 раз быстрее, а клиент — до 4 раз.

API намеренно отличается от net/http. Обработчики принимают один аргумент *RequestCtx, а ServeMux отсутствует, поэтому для маршрутизации нужны сторонние роутеры или фреймворки, например Fiber. Заголовки и тело ответа можно записывать в любом порядке до возврата из обработчика. Для переноса существующего кода потребуется адаптировать обработчики и не обращаться к контексту после их завершения.

В README проекта для большинства приложений рекомендуется net/http: с ним проще работать, он обрабатывает больше нестандартных случаев HTTP и поддерживает HTTP/2. fasthttp лучше всего подходит сервисам, обрабатывающим тысячи небольших и средних запросов в секунду и которым нужна стабильно низкая задержка.

Ключевые возможности

  • 01API сервера и клиента с повторным использованием объектов запросов и ответов для сокращения числа выделений памяти.
  • 02Обработчики принимают один RequestCtx; заголовки и тело можно записывать в любом порядке.
  • 03Поддержка слушателей reuseport и схем развёртывания с распределением по ядрам для масштабирования на многоядерных системах.
  • 04Включает вспомогательные средства для преобразования обработчиков net/http, раздачи файлов и обработки таймаутов.
  • 05Согласно FAQ в README, требуется Go версии 1.26 или новее.

Сценарии использования

  • Высоконагруженные API-шлюзы или прокси, обрабатывающие большое количество небольших запросов.
  • Сервисы на Go, чувствительные к задержкам, где нагрузка на выделение памяти — подтверждённое измерениями узкое место.
  • Пограничные сервисы, обслуживающие множество keep-alive-подключений на одном сервере.

Быстрый старт

  1. 1

    Установите библиотеку с помощью Go

    go get -u github.com/valyala/fasthttp

Что важно знать

  • fasthttp не является полноценной заменой net/http, и его API отличается.
  • В README сказано, что обычно лучше выбрать net/http, если только вам не нужна очень высокая пропускная способность.

Темы

Частые вопросы

Что такое fasthttp?
Быстрая реализация HTTP-сервера и клиента для Go с высокой пропускной способностью и низкими накладными расходами на выделение памяти. fasthttp — это реализация HTTP для Go с API сервера и клиента. Она рассчитана на экстремально высокую нагрузку: повторно использует объекты запросов и ответов и избегает выделения памяти на горячих путях. В README приведены бенчмарки со сравнением с net/http: в описанных сценариях сервер работает примерно до 6 раз быстрее, а клиент — до 4 раз.
fasthttp можно использовать бесплатно? Какая у него лицензия?
fasthttp распространяется с открытым исходным кодом под лицензией MIT. Перед использованием в коммерческих продуктах проверьте условия лицензии.
fasthttp всё ещё поддерживается?
Активно поддерживается. Последний коммит в fasthttp — 21 окт. 2026 г..
Для чего можно использовать fasthttp?
Высоконагруженные API-шлюзы или прокси, обрабатывающие большое количество небольших запросов. Сервисы на Go, чувствительные к задержкам, где нагрузка на выделение памяти — подтверждённое измерениями узкое место. Пограничные сервисы, обслуживающие множество keep-alive-подключений на одном сервере.
Как установить fasthttp?
Установите библиотеку с помощью Go: go get -u github.com/valyala/fasthttp
Где скачать fasthttp?
Исходный код и инструкции по установке — на GitHub: https://github.com/valyala/fasthttp

Описание создано ИИ на основе README проекта. Статистика GitHub обновляется ежедневно.

Похожие проекты