中国語
Netpoll は、ByteDance によって開発された、RPC シナリオに焦点を当てた高性能のノンブロッキング I/O ネットワーキング フレームワークです。
RPC は通常、処理ロジックに負荷がかかるため、I/O をシリアルに処理できません。ただし、Go の標準ライブラリ ネットは I/O API をブロックするように設計されているため、RPC フレームワークは One Conn One Goroutine 設計にしか従うことができません。同時実行性が高い状態では多数のゴルーチンが存在するため、コンテキストの切り替えに多大なコストが無駄になります。さらに、net.Conn には Alive をチェックするための API がないため、プール内に多数の失敗した接続が存在する可能性があり、RPC フレームワーク用の効率的な接続プールを作成することが困難です。
一方、オープンソース コミュニティには現在、RPC シナリオに焦点を当てた Go ネットワーク ライブラリが不足しています。 evio、gnet などの同様のリポジトリはすべて、Redis、HAProxy などのシナリオに焦点を当てています。
しかし今、Netpoll が誕生し、上記の問題を解決しました。これは、evio と netty の設計からインスピレーションを得ており、優れたパフォーマンスを備えており、マイクロサービス アーキテクチャにより適しています。また、Netpoll は多くの機能を提供するため、一部の RPC シナリオでは net を置き換えることをお勧めします。
当社は、Netpoll に基づいて RPC フレームワーク Kitex と HTTP フレームワーク Hertz を開発し、どちらも業界をリードするパフォーマンスを実現しました。
例では、Netpoll を使用して RPC クライアントとサーバーを構築する方法を示します。
詳細については、ドキュメントを参照してください。
すでに
IsActive
接続が生きているかどうかの確認をサポートしますDialer
クライアントの構築をサポートしますEventLoop
サーバーの構築をサポートします未来
サポートされていません
ベンチマークは産業用途の要件を満たしている必要があります。 RPC シナリオでは、同時実行性とタイムアウトは必須のサポート項目です。
参照用に、さまざまな条件下で Netpoll と他のフレームワークのパフォーマンスを追跡および比較するための netpoll-benchmark プロジェクトを提供します。
その他のベンチマークでは、kitex-benchmark と hertz-benchmark を参照しています。