Protocole d'API gRPC pour l'api WS2P?


#1

Après le billet de @cgeek sur le développement de l’API WS2P, j’attire votre attention sur l’api gRPC

Elle semble ressembler à ce que veut obtenir @cgeek, donc je pense qu’il est bon d’y jetter un oeil…

  • Binaire pour la rapidité
  • stream bi-directionnel avec authentification interne
  • Fonctionne sur HTTP/2

A voir si les licences des librairies sont compatibles et libres…


#2

Concernant la compatibilité c’est bon :slight_smile:

Un projet sous GPLv3 (et donc aussi sous AGPLv3*) peut intégrer des librairies sous licence Apache2.0, en revanche l’inverse est impossible : https://www.apache.org/licenses/GPL-compatibility.html

*note : duniter est sous licence AGPLv3


#3

Je viens de zieuter un peu c’est un projet très dynamique soutenu par une énorme communauté et bien abouti, en plus ya un module npm donc c’est directement utilisable en nodejs, je pense effectivement que ça vaut le détour :slight_smile:


#4

OK ça m’a l’air très bien, je vais sûrement partir là-dessus :slight_smile:

Ça me solutionne notamment la problématique de validation des données (typage notamment) et d’authentification. Apparemment je peux même gérer mon histoire de signature à chaque requête, mais je dois creuser le sujet pour vérifier.

Et il y a bien sûr l’avantage de la rapidité, la gestion d’erreurs, … bref bien des choses ! Je pourrais peut-être avoir accès à des informations de débit, à vérifier aussi !

Merci bien vit !


#5

hum, tout cela me donne des idées pour l’iplementation de la synchro des noeuds ES sur le réseau ! :wink:


#6

A voir si ça correspond vraiment à notre besoin de support des clients derrière du NAT ? Je tombe sur des issues comme celle ci par exemple : https://github.com/grpc/grpc-go/issues/484#issuecomment-288880402


#7

Tu as raison, j’ai parlé un peu vite.

On n’a pas la communication bidirectionnelle que je souhaite, c’est vraiment une architecture client/serveur. Il est quand même possible d’ouvrir un flux bidirectionnel, mais alors la forme du message est toujours la même : par exemple le flux parle uniquement de blocs, ou uniquement d’identités, ou uniquement de transactions, […], ou alors que des chaînes de caractères générique.

Mais on perd tout l’intérêt du typage gRPC.

Piste à écarter dans le cadre de WS2P donc, par contre visiblement ça fait une très bonne API publique.


Nouvelle API : WS2P
#8

Il existe aussi nanomsg qui a aussi une implémentation nodejs