Résumé en une phrase de FPNN :
Personne ne veut réinventer la roue.
Mais que faire lorsque toutes les roues ne fonctionnent pas ?
Étant donné que les projets précédents utilisant Thrift rencontraient trop d'embûches, de nombreuses ressources ont été dépensées pour résoudre les problèmes de Thrift lui-même.
Sur la base de la préparation et de l'accumulation technique des outils d'infrastructure de l'entreprise, combinées à une expérience antérieure dans l'utilisation de frameworks RPC bien connus tels que ICE, ACE et Codra, nous avons décidé de développer un framework RPC plus adapté aux activités et à l'infrastructure de l'entreprise. .
Il n’y a pas de meilleure roue, seulement la plus adaptée.
Il en va de même pour les frameworks RPC.
Prise en charge d'IPv4
Prise en charge d'IPv6
Prise en charge du protocole privé binaire TCP
Prise en charge du protocole privé binaire UDP
Prend en charge les liens UDP fiables
Prise en charge de l'envoi mixte de données UDP fiables/peu fiables
Prise en charge HTTP 1.1 (prise en charge facultative)
Prise en charge de WebSocket
Prise en charge SSL/TLS
Prise en charge de l'encodage msgpack
Prise en charge du format Json
Prend en charge les paramètres facultatifs
Prise en charge des paramètres de type indéfinis
Prise en charge des paramètres de longueur variable et de type variable
Prise en charge de la compatibilité des niveaux de gris de l'interface
Prise en charge du protocole privé binaire TCP et de la conversion du format HTTP Json
Prise en charge du serveur push
Prise en charge des opérations asynchrones
Prise en charge du fonctionnement synchrone
Prise en charge de la fonction Lambda
Prise en charge de l'ajustement dynamique des paramètres au niveau du système
Prise en charge de l'ajustement dynamique des paramètres au niveau du framework
Prise en charge de la visualisation en temps réel de l'état d'exécution du service
Prise en charge de la visualisation en temps réel de l'état de chaque paramètre
Prise en charge du basculement
Prise en charge du résumé du journal unifié
Soutenir une sortie en douceur
Prise en charge d'une gestion unifiée des exceptions
Prend en charge plusieurs protocoles (TCP/HTTP/WebSocket) sur le même port
Prise en charge d'un retour rapide de la réponse
Prend en charge le retour asynchrone des réponses
Statistiques sur les temps de réponse aux demandes d'assistance
Prise en charge des statistiques QPS
Prise en charge des statistiques de requêtes lentes
Prend en charge l'exécution prioritaire des commandes intégrées au système
Prise en charge du cryptage AES
Prise en charge de l'échange de clés ECDH
Prend en charge les clés 128 bits ou 256 bits
Prise en charge de la liste blanche IP
Prise en charge de la liste blanche des segments IP
Prise en charge des restrictions de chiffrement lors de l'accès aux interfaces définies par l'utilisateur
Prise en charge des restrictions intranet lors de l'accès aux interfaces définies par l'utilisateur
Dans l'écosystème technologique FPNN, les fonctions supplémentaires suivantes sont fournies
Test de résistance (v1.0.0) :
Résumé des données TCP
Même réseau local
modèle | processeur virtuel | Mémoire (Go) | Nombre de liens | RPS | Temps de réponse moyen (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 |
Transmission intercontinentale : de Francfort, en Allemagne, à l'Oregon, dans l'ouest des États-Unis
modèle | processeur virtuel | Mémoire (Go) | Nombre de liens | RPS | Temps de réponse moyen (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 |
Résumé des données UDP
Même réseau local
modèle | processeur virtuel | Mémoire (Go) | Nombre de liens | RPS | Temps de réponse moyen (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 |
Transmission intercontinentale : de Francfort, en Allemagne, à l'Oregon, dans l'ouest des États-Unis
modèle | processeur virtuel | Mémoire (Go) | Nombre de liens | RPS | Temps de réponse moyen (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 |
Liens massifs (v1.0.0) :
Résumé des données TCP
modèle | processeur virtuel | Mémoire (Go) | Nombre de liens | RPS | Temps de réponse moyen (usec) |
---|---|---|---|---|---|
AWS m5.2xlarge | 8 | 32 | 2 040 000 | 81 351 | 446 |
AWS m5.2xlarge | 8 | 32 | 2 040 000 | 137 294 | 4 985 |
AWS m5.2xlarge | 8 | 32 | 2 040 000 | 179 794 | 11 345 |
Résumé des données UDP
modèle | processeur virtuel | Mémoire (Go) | Nombre de liens | RPS | Temps de réponse moyen (usec) |
---|---|---|---|---|---|
AWS m5.2xlarge | 8 | 32 | 12 200 | 5 957 | 11 480 |
AWS m5.2xlarge | 8 | 32 | 19 000 | 721 | 1 857 |
Pour une introduction spécifique aux performances et plus de données, veuillez vous référer au rapport sur les performances du FPNN.
besoins environnementaux
système opérateur | compilateur |
---|---|
CentOS7 | GCC/G++ 4.8.5 |
CentOS 8 | GCC/G++ 8 |
Ubuntu 20 | GCC/G++ 9 |
MacOS 11.5 | XCode/Apple clang 12 |
Dépendances de bibliothèques tierces
Compiler et installer le framework FPNN
Exécutez simplement make
dans le répertoire racine du projet.
Pour plus de détails, voir Installation et intégration de FPNN
Développé à l'aide du framework FPNN
Voir
Remarques et dépannage
Veuillez vous référer aux notes FPNN pour les précautions.
Pour le dépannage, veuillez vous référer à Dépannage FPNN
meilleures pratiques
Index des documents chinois