Resumo de uma frase do FPNN:
Ninguém quer reinventar a roda.
Mas o que você deve fazer quando todas as rodas não funcionam?
Tendo em vista que projetos anteriores que usaram o Thrift encontraram muitas armadilhas, muitos recursos foram gastos para resolver os problemas do próprio Thrift.
Com base na preparação e acumulação técnica das ferramentas de infraestrutura da empresa, aliada à experiência anterior na utilização de frameworks RPC conhecidos como ICE, ACE e Codra, decidimos desenvolver um framework RPC mais adequado ao negócio e infraestrutura da empresa .
Não existe a melhor roda, apenas a mais adequada.
O mesmo vale para estruturas RPC.
Suporte IPv4
Suporte IPv6
Suporta protocolo privado binário TCP
Suporta protocolo privado binário UDP
Suporta links UDP confiáveis
Suporta envio misto de dados UDP confiáveis/não confiáveis
Suporte HTTP 1.1 (suporte opcional)
Suporte WebSocket
Suporta SSL/TLS
Suporta codificação msgpack
Suporte ao formato Json
Suporta parâmetros opcionais
Suporta parâmetros de tipo indefinido
Suporta parâmetros de comprimento variável e tipo variável
Suporta compatibilidade com tons de cinza da interface
Suporta protocolo privado binário TCP e conversão de formato HTTP Json
Push do servidor de suporte
Suporta operações assíncronas
Suporta operação síncrona
Função Lambda de suporte
Suporta ajuste dinâmico de parâmetros em nível de sistema
Apoie o ajuste dinâmico de parâmetros no nível da estrutura
Suporta visualização em tempo real do status de execução do serviço
Suporta visualização em tempo real do status de cada parâmetro
Failover de suporte
Resumo de log unificado de suporte
Apoie a saída elegante
Apoie o tratamento unificado de exceções
Suporta vários protocolos (TCP/HTTP/WebSocket) na mesma porta
Apoie o retorno antecipado da resposta
Suporta retorno assíncrono de respostas
Estatísticas de tempo de resposta de solicitação de suporte
Suporta estatísticas QPS
Suporta estatísticas de solicitações lentas
Suporta execução prioritária de comandos integrados do sistema
Suporta criptografia AES
Suporta troca de chaves ECDH
Suporta chaves de 128 ou 256 bits
Lista de permissões de IP de suporte
Lista branca de segmentos IP de suporte
Suporta restrições de criptografia ao acessar interfaces definidas pelo usuário
Suporta restrições de intranet ao acessar interfaces definidas pelo usuário
No ecossistema tecnológico FPNN, são fornecidas as seguintes funções adicionais
Teste de estresse (v1.0.0):
Resumo de dados TCP
Mesma LAN
modelo | CPU virtual | Memória (GB) | Número de links | QPS | Tempo médio de resposta (usec) |
---|---|---|---|---|---|
AWS m5.xlarge | 4 | 16 | 1000 | 49.708 | 335 |
--- | --- | --- | --- | --- | --- |
AWS m5.xlarge | 4 | 16 | 130 | 227.919 | 12.854 |
AWS m5.xlarge | 4 | 16 | 1.500 | 148.959 | 10.403 |
AWS m5.xlarge | 4 | 16 | 2.000 | 99.552 | 356 |
AWS m5.xlarge | 4 | 16 | 3.000 | 149.615 | 27.456 |
Transmissão intercontinental: Frankfurt, Alemanha para Oregon, oeste dos Estados Unidos
modelo | CPU virtual | Memória (GB) | Número de links | QPS | Tempo médio de resposta (usec) | ping/2 (mseg) |
---|---|---|---|---|---|---|
AWS m5.xlarge | 4 | 16 | 10 | 17.921 | 147.825 | 137 |
--- | --- | --- | --- | --- | ---- | --- |
AWS m5.xlarge | 4 | 16 | 190 | 338.601 | 151.772 | 139 |
AWS m5.xlarge | 4 | 16 | 700 | 339.240 | 183.541 | 136 ~ 137 |
AWS m5.xlarge | 4 | 16 | 3.200 | 312.073 | 256.980 | 139 ~ 141 |
AWS m5.xlarge | 4 | 16 | 6.000 | 299.175 | 346.927 | 136 ~ 137 |
Resumo de dados UDP
Mesma LAN
modelo | CPU virtual | Memória (GB) | Número de links | QPS | Tempo médio de resposta (usec) |
---|---|---|---|---|---|
AWS m5.xlarge | 4 | 16 | 10 | 17.628 | 199 |
--- | --- | --- | --- | --- | --- |
AWS m5.xlarge | 4 | 16 | 70 | 123.009 | 1.174 |
AWS m5.xlarge | 4 | 16 | 80 | 122.641 | 24.623 |
AWS m5.xlarge | 4 | 16 | 800 | 73.030 | 1.306 |
AWS m5.xlarge | 4 | 16 | 200 | 95.894 | 400 |
AWS m5.xlarge | 4 | 16 | 1.000 | 49.590 | 3.832 |
Transmissão intercontinental: Frankfurt, Alemanha para Oregon, oeste dos Estados Unidos
modelo | CPU virtual | Memória (GB) | Número de links | QPS | Tempo médio de resposta (usec) | ping/2 (mseg) |
---|---|---|---|---|---|---|
AWS m5.xlarge | 4 | 16 | 100 | 48.493 | 138.859 | 138 |
--- | --- | --- | --- | --- | ---- | --- |
AWS m5.xlarge | 4 | 16 | 60 | 107.528 | 139.968 | 140 |
AWS m5.xlarge | 4 | 16 | 800 | 79.503 | 139.974 | 138 ~ 139 |
Links massivos (v1.0.0):
Resumo de dados TCP
modelo | CPU virtual | Memória (GB) | Número de links | QPS | Tempo médio de resposta (usec) |
---|---|---|---|---|---|
AWS m5.2xgrande | 8 | 32 | 2.040.000 | 81.351 | 446 |
AWS m5.2xgrande | 8 | 32 | 2.040.000 | 137.294 | 4.985 |
AWS m5.2xgrande | 8 | 32 | 2.040.000 | 179.794 | 11.345 |
Resumo de dados UDP
modelo | CPU virtual | Memória (GB) | Número de links | QPS | Tempo médio de resposta (usec) |
---|---|---|---|---|---|
AWS m5.2xgrande | 8 | 32 | 12.200 | 5.957 | 11.480 |
AWS m5.2xgrande | 8 | 32 | 19.000 | 721 | 1.857 |
Para introdução específica de desempenho e mais dados, consulte o relatório de desempenho da FPNN
necessidades ambientais
sistema operacional | compilador |
---|---|
CentOS 7 | GCC/G++ 4.8.5 |
CentOS 8 | CGC/G++ 8 |
Ubuntu 20 | CGC/G++ 9 |
macOS 11.5 | XCode/Apple clang 12 |
Dependências de bibliotecas de terceiros
Compile e instale a estrutura FPNN
Basta executar make
no diretório raiz do projeto.
Para obter detalhes, consulte Instalação e integração do FPNN
Desenvolvido usando a estrutura FPNN
Ver
Notas e solução de problemas
Consulte as notas do FPNN para precauções.
Para solução de problemas, consulte Solução de problemas de FPNN
melhores práticas
Índice de documentos chineses