Skip to content

gRPC

Présentation officielle Google

REST et gRPC

REST:

  • Paradigme: resources (URL path http) et verbes (http verbs). Un client REST est un client HTTP. Le paradigme est adapté au CRUD (manipulation d'une ressource)
  • Protocole: aucun n'est défini -> plusieurs niveaux de maturité possible en fonction de l'intégration des principes HTTP
  • Schéma: indirectement via documentation externe. Certaines implémentations REST permettent la navigation entre resources (HATEOAS) ou la validation d'un JSON Schema
  • Inspiration: services HTTP pour des machines

gRPC:

  • Paradigme: remote procedure call (un gRPC client apelle un gRPC service) et message (payloads typés). Le paradigme est adapté à l'exécution d'actions.
  • Protocole: spécifié par Google en 2015
  • Schéma: obligatoire (.proto files), doit être partagé entre client et serveur et toujours avoir la même version.
  • Inspiration: RPC (CORBA, RPC SOAP) en plus moderne

Protocole

  • Interface Definition Language (IDL)
  • Protobuf 3 par défaut (binary protocol, retire la redondance des noms de champs etc)
  • utilise HTTP/2
  • Trois modes: streaming bi-directionnel, streaming uni-directionnel, unary

Timeouts vs Deadlines

gRPC ajoute la notion de deadline. C'est un timeout, mais qui se propage jusqu'au client. Designé pour une architecture microservice layered: la requête doit traverser plusieurs services gRPC.

Load balancing

N'importe quel code gRPC peut enable un load balancing logiciel.

  • Service = groupement logique de serveurs
  • Channel = connexion à un service

comme kubernetes!

Est-ce utile lorsque le service gRPC est déployé sur un K8S qui a lui-même un LB?

Migration vers gRPC

gRPC Gateway

Tools

  • h2i
  • prometheus
  • polyglot grpc client