netpoll
v0.6.5
中文
Netpoll是位元組跳動開發的一款高效能非阻塞I/O網路框架,專注於RPC場景。
RPC 通常處理邏輯很重,因此無法串行處理 I/O。但Go的標準庫net是為阻塞I/O API而設計的,因此RPC框架只能遵循One Conn One Goroutine的設計。由於高並發下有大量的goroutine,會浪費大量的上下文切換成本。另外,net.Conn沒有檢查Alive的API,因此很難為RPC框架製作一個高效的連接池,因為池中可能存在大量失敗的連接。
另一方面,開源社群目前缺乏專注於RPC場景的Go網路庫。類似的倉庫如:evio、gnet等,都是針對Redis、HAProxy等場景。
但現在,Netpoll橫空出世,解決了上述問題。它從evio和netty的設計中汲取靈感,具有出色的性能,更適合微服務架構。另外Netpoll提供了很多Feature,在一些RPC場景下建議替換net。
我們基於Netpoll開發了RPC框架Kitex和HTTP框架Hertz,效能均處於業界領先。
範例展示如何使用 Netpoll 建置 RPC 用戶端和伺服器。
欲了解更多信息,請參閱文件。
已經
IsActive
支援檢查連接是否存活Dialer
支援建立客戶端EventLoop
支援搭建伺服器未來
不支援
基準應滿足工業使用的要求。在RPC場景中,並發和超時是必要的支撐項。
我們提供netpoll-benchmark專案來追蹤和比較Netpoll與其他框架在不同條件下的效能,以供參考。
更多基準參考 kitex-benchmark 和 Hertz-benchmark。