gRPC是什么
gRPC是什么可以用官网的一句话来概括:
A high-performance, open-source universal RPC framework
所谓RPC(remote procedure call 远程过程调用)框架实际是提供了一套机制,使得应用程序之间可以进行通信,而且也遵从server/client模型。使用的时候客户端调用server端提供的接口就像是调用本地的函数一样。如下图所示就是一个典型的RPC结构图。
gRPC的优点
gRPC和restful API都提供了一套通信机制,用于server/client模型通信,而且它们都使用http作为底层的传输协议(严格地说, gRPC使用的http2.0,而restful api则不一定)。不过gRPC还是有些特有的优势,如下:
gRPC+K8S
gRPC目前是k8s生态里的事实标准,而Kubernetes又是容器编排的事实标准。gRPC已经广泛应用于Istio体系,包括:
在Cloud Native的潮流下,开放互通的需求必然会产生基于HTTP/2的RPC。即使没有gRPC,也会有其它基于HTTP/2的RPC。一方面,通过gRPC接入扩展兼具了sdk与RESTful的优势: 支持跨语言调用的同时支持友好安全的接入方式。另一方面,gRPC的stream特性虽然好多答主说用不上,但在服务治理的场景下是非常合适的。轻舟微服务框架就使用了gRPC stream实现心跳检查、配置下发,ServiceMesh服务发现、路由规则的下发用的也是gRPC协议。在这些场景下,gRPC stream成为了很常用的一种手段。