중국어
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를 참조합니다.