gRPC
Présentation officielle Google
REST et gRPC
REST:
- Paradigme:
resources
(URL path http) etverbes
(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) etmessage
(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