中文
Netpoll — это высокопроизводительная неблокирующая сетевая среда ввода-вывода, ориентированная на сценарии RPC, разработанная ByteDance.
RPC обычно требует много логики обработки и поэтому не может обрабатывать последовательный ввод-вывод. Но сеть стандартных библиотек Go предназначена для блокировки API-интерфейсов ввода-вывода, поэтому структура RPC может следовать только дизайну One Conn One Goroutine. Это приведет к большим затратам на переключение контекста из-за большого количества горутин с высокой степенью параллелизма. Кроме того, у net.Conn нет API для проверки активности, поэтому сложно создать эффективный пул соединений для платформы RPC, поскольку в пуле может быть большое количество неудачных соединений.
С другой стороны, в сообществе открытого исходного кода в настоящее время отсутствуют сетевые библиотеки Go, ориентированные на сценарии RPC. Подобные репозитории, такие как: evio, gnet и т. д., ориентированы на такие сценарии, как Redis, HAProxy.
Но теперь родился Netpoll и решил вышеуказанные проблемы. Он черпает вдохновение из дизайна evio и netty, имеет отличную производительность и больше подходит для микросервисной архитектуры. Также Netpoll предоставляет ряд функций, и в некоторых сценариях RPC рекомендуется заменить net.
Мы разработали платформу RPC Kitex и платформу HTTP Hertz на основе Netpoll, обе из которых обладают лучшей в отрасли производительностью.
В примерах показано, как создать клиент и сервер RPC с помощью Netpoll.
Для получения дополнительной информации обратитесь к документу.
Уже
IsActive
поддерживает проверку активности соединения.Dialer
поддерживает создание клиентовEventLoop
поддерживает создание сервераБудущее
Не поддерживается
Эталон должен отвечать требованиям промышленного использования. В сценарии RPC параллелизм и тайм-аут являются необходимыми элементами поддержки.
Для справки мы предоставляем проект netpoll-benchmark для отслеживания и сравнения производительности Netpoll и других платформ в различных условиях.
Дополнительные тесты ссылаются на Kitex-Benchmark и Hertz-Benchmark.