web-dev-qa-db-fra.com

Plusieurs appels de RPC Unary appellent à la diffusion en streaming bidirectionnel à long terme dans le GRPC?

J'ai un cas d'utilisation où de nombreux clients doivent continuer à envoyer beaucoup de métriques au serveur (presque perpétuellement). Le serveur doit stocker ces événements et les traiter plus tard. Je ne m'attends pas à une réponse du serveur pour ces événements.
[.____] Je pense utiliser GRPC pour cela. Initialement, je pensais que le streaming côté client ferait ( comme l'envoyé ), mais le problème est que le streaming côté client ne peut garantir une livraison fiable au niveau de l'application (c.-à-d. Si le flux est fermé entre les deux. Les messages envoyés ont été traités par le serveur) et je ne peux pas me le permettre.
[.
Lequel d'entre eux serait mieux?

10
avmohan

Les flux garantissent que les messages sont livrés dans l'ordre dans lequel ils ont été envoyés, cela signifierait que S'il y a des messages simultanés, il y aura une sorte de goulot d'étranglement. Englisons

L'équipe de GRPC de Google conseille contre l'utilisation de flux sur le marché de la performance, mais néanmoins, des arguments que théoriquement, des ruisseaux devraient avoir une surcharge inférieure. Mais cela ne semble pas être vrai.

Pour un nombre inférieur de demandes simultanées, les deux semblent avoir des latences comparables. Cependant, pour des charges plus élevées, les appels unaires sont beaucoup plus performants.

Il n'y a pas de raison apparente que nous devrions préférer les flux sur unaire, donné à l'aide de flux vient avec des problèmes supplémentaires comme

  • Mauvaise latence quand nous avons des demandes simultanées
  • Mise en œuvre complexe au niveau de l'application
  • Manque d'équilibrage de la charge: le client connectera un serveur et ignorera tous les nouveaux serveurs.
  • Mauvaise résilience aux interruptions de réseau (même petites interruptions de TCP échouera la connexion)

Quelques points de repère ici: https://nshnt.medium.com/using-grpc-streams-for-unary-Calls-cd64a1638c8a

1
Nishant