1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/cloudwego-netpoll

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
README.md 6.6 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 30.11.2024 07:07 59ea76c

CloudWeGo-Netpoll

中文

Release WebSite License Go Report Card OpenIssue ClosedIssue Stars Forks

Введение

Netpoll — это высокопроизводительный неблокирующий сетевой фреймворк для ввода-вывода, разработанный компанией ByteDance и ориентированный на сценарии RPC.

RPC обычно требует интенсивной обработки логики и поэтому не может обрабатывать ввод-вывод последовательно. Однако стандартная библиотека Go net разработана для блокирующих API ввода-вывода. Поэтому в рамках RPC можно использовать только дизайн One Conn One Goroutine. Это приводит к большим затратам на переключение контекста из-за большого количества горутин при высокой параллельности. Кроме того, net.Conn не имеет API для проверки состояния соединения, поэтому сложно создать эффективный пул соединений для RPC-фреймворка, поскольку в пуле может быть большое количество разорванных соединений.

С другой стороны, в сообществе открытого исходного кода в настоящее время не хватает сетевых библиотек Go, ориентированных на сценарии RPC. Подобные репозитории, такие как evio, gnet и т. д., ориентированы на такие сценарии, как Redis, HAProxy.

Но теперь появился Netpoll, который решает вышеуказанные проблемы. Он вдохновлён дизайном evio и netty, обладает отличной производительностью и больше подходит для микросервисной архитектуры. Также Netpoll предоставляет ряд функций, и его рекомендуется использовать вместо net в некоторых сценариях RPC.

На основе Netpoll мы разработали RPC-фреймворк Kitex и HTTP-фреймворк Hertz, оба с лучшей в отрасли производительностью.

Примеры показывают, как построить клиент и сервер RPC с помощью Netpoll.

Для получения дополнительной информации см. Документ.

Функции

  • Уже

    • LinkBuffer предоставляет nocopy API для потокового чтения и записи
    • gopool предоставляет высокопроизводительный пул горутин
    • mcache обеспечивает эффективное повторное использование памяти
    • IsActive поддерживает проверку активности соединения
    • Dialer поддерживает создание клиентов
    • EventLoop поддерживает создание сервера
    • TCP, Unix Domain Socket
    • Linux, macOS (операционная система)
  • Будущее

    • multisyscall поддерживает пакетные системные вызовы
    • io_uring
    • Shared Memory IPC
    • Серийное планирование ввода-вывода, подходящее для чистых вычислений
    • TLS
    • UDP
  • Не поддерживается

    • Windows (операционная система)

Производительность

Тесты должны соответствовать требованиям промышленного использования. В сценарии RPC параллелизм и тайм-аут являются необходимыми элементами поддержки.

Мы предоставляем проект netpoll-benchmark для отслеживания и сравнения производительности Netpoll и других фреймворков в различных условиях для справки.

Дополнительные тесты см. в проектах kitex-benchmark и hertz-benchmark.

Ссылка

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/cloudwego-netpoll.git
git@api.gitlife.ru:oschina-mirror/cloudwego-netpoll.git
oschina-mirror
cloudwego-netpoll
cloudwego-netpoll
develop