中文
Netpoll é uma estrutura de rede de E/S sem bloqueio de alto desempenho, focada em cenários RPC, desenvolvida pela ByteDance.
O RPC geralmente exige muita lógica de processamento e, portanto, não pode lidar com E/S serialmente. Mas a rede de biblioteca padrão do Go é projetada para bloquear APIs de E/S, de modo que a estrutura RPC só pode seguir o design One Conn One Goroutine. Isso desperdiçará muitos custos com troca de contexto, devido ao grande número de goroutines sob alta simultaneidade. Além disso, net.Conn não possui API para verificar o Alive, por isso é difícil criar um pool de conexões eficiente para a estrutura RPC, pois pode haver um grande número de conexões com falha no pool.
Por outro lado, a comunidade de código aberto atualmente carece de bibliotecas de rede Go focadas em cenários RPC. Repositórios semelhantes, como: evio, gnet, etc., são todos focados em cenários como Redis, HAProxy.
Mas agora o Netpoll nasceu e resolveu os problemas acima. Inspira-se no design do evio e netty, tem excelente desempenho e é mais adequado para arquitetura de microsserviços. Além disso, o Netpoll fornece vários recursos e é recomendado substituir net em alguns cenários RPC.
Desenvolvemos o framework RPC Kitex e o framework HTTP Hertz baseado em Netpoll, ambos com desempenho líder do setor.
Os exemplos mostram como construir cliente e servidor RPC usando Netpoll.
Para mais informações, consulte Documento.
Já
IsActive
suporta verificar se a conexão está ativaDialer
oferece suporte à construção de clientesEventLoop
suporta a construção de um servidorFuturo
Não compatível
O benchmark deve atender aos requisitos de uso industrial. No cenário RPC, a simultaneidade e o tempo limite são itens de suporte necessários.
Fornecemos o projeto netpoll-benchmark para rastrear e comparar o desempenho do Netpoll e de outras estruturas sob diferentes condições para referência.
Mais benchmarks fazem referência ao kitex-benchmark e ao hertz-benchmark.