Resumen de una frase de FPNN:
Nadie quiere reinventar la rueda.
Pero, ¿qué debes hacer cuando todas las ruedas no funcionan?
En vista del hecho de que proyectos anteriores que utilizaban Thrift encontraron demasiados obstáculos, se gastaron muchos recursos en resolver los problemas del propio Thrift.
Con base en la preparación y acumulación técnica de las herramientas de infraestructura de la empresa, combinadas con la experiencia previa en el uso de marcos RPC conocidos como ICE, ACE y Codra, decidimos desarrollar un marco RPC que sea más adecuado para el negocio y la infraestructura de la empresa. .
No existe la mejor rueda, sólo la más adecuada.
Lo mismo ocurre con los marcos RPC.
Soporte IPv4
Soporte IPv6
Admite protocolo privado binario TCP
Admite protocolo privado binario UDP
Admite enlaces UDP confiables
Admite envío mixto de datos UDP confiable/no confiable
Soporte HTTP 1.1 (soporte opcional)
Soporte WebSocket
Soporte SSL/TLS
Admite codificación msgpack
Soporta formato Json
Admite parámetros opcionales
Admite parámetros de tipo indefinido
Admite parámetros de longitud variable y tipo variable
Compatibilidad de interfaz de soporte en escala de grises
Admite protocolo privado binario TCP y conversión de formato HTTP Json
Empuje del servidor de soporte
Admite operaciones asincrónicas
Admite operación sincrónica
Soporta función Lambda
Admite el ajuste dinámico de los parámetros a nivel del sistema
Admite el ajuste dinámico de los parámetros a nivel de marco
Admite visualización en tiempo real del estado de ejecución del servicio
Admite visualización en tiempo real del estado de cada parámetro
Soporte de conmutación por error
Soporte de resumen de registro unificado
Apoyar la salida elegante
Admite el manejo unificado de excepciones.
Admite múltiples protocolos (TCP/HTTP/WebSocket) en el mismo puerto
Apoyar el retorno temprano de la respuesta
Admite devolución asincrónica de respuestas
Estadísticas de tiempo de respuesta de solicitudes de soporte
Admite estadísticas de QPS
Admite estadísticas de solicitudes lentas
Admite la ejecución prioritaria de comandos integrados en el sistema
Admite cifrado AES
Admite el intercambio de claves ECDH
Admite claves de 128 o 256 bits
Admite lista blanca de IP
Admite lista blanca de segmentos de IP
Admite restricciones de cifrado al acceder a interfaces definidas por el usuario
Admitir restricciones de intranet al acceder a interfaces definidas por el usuario
En el ecosistema tecnológico FPNN, se proporcionan las siguientes funciones adicionales
Prueba de estrés (v1.0.0):
Resumen de datos TCP
Misma LAN
modelo | CPU virtual | Memoria (GB) | Número de enlaces | QPS | Tiempo medio de respuesta (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 |
Transmisión intercontinental: Frankfurt, Alemania a Oregón, oeste de Estados Unidos
modelo | CPU virtual | Memoria (GB) | Número de enlaces | QPS | Tiempo medio de respuesta (usec) | ping/2 (ms) |
---|---|---|---|---|---|---|
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 |
Resumen de datos UDP
Misma LAN
modelo | CPU virtual | Memoria (GB) | Número de enlaces | QPS | Tiempo medio de respuesta (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 |
Transmisión intercontinental: Frankfurt, Alemania a Oregón, oeste de Estados Unidos
modelo | CPU virtual | Memoria (GB) | Número de enlaces | QPS | Tiempo medio de respuesta (usec) | ping/2 (ms) |
---|---|---|---|---|---|---|
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 |
Enlaces masivos (v1.0.0):
Resumen de datos TCP
modelo | CPU virtual | Memoria (GB) | Número de enlaces | QPS | Tiempo medio de respuesta (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 |
Resumen de datos UDP
modelo | CPU virtual | Memoria (GB) | Número de enlaces | QPS | Tiempo medio de respuesta (usec) |
---|---|---|---|---|---|
AWS m5.2xgrande | 8 | 32 | 12.200 | 5.957 | 11.480 |
AWS m5.2xgrande | 8 | 32 | 19.000 | 721 | 1.857 |
Para obtener una introducción específica al rendimiento y más datos, consulte el informe de rendimiento de FPNN.
necesidades ambientales
Sistema operativo | compilador |
---|---|
CentOS 7 | GCC/G++ 4.8.5 |
CentOS 8 | CCG/G++ 8 |
ubuntu 20 | CCG/G++ 9 |
Mac OS 11.5 | XCode/sonido metálico de Apple 12 |
Dependencias de bibliotecas de terceros
Compile e instale el marco FPNN.
Simplemente ejecute make
en el directorio raíz del proyecto.
Para obtener más información, consulte Instalación e integración de FPNN.
Desarrollado utilizando el marco FPNN.
Ver
Notas y solución de problemas
Consulte las Notas de FPNN para conocer las precauciones.
Para solucionar problemas, consulte Solución de problemas de FPNN
mejores practicas
índice de documentos chinos