流模式
- 包括client_to_server_streaming、server_to_client_streaming、bidirectional_streaming三种类型
- 就是说同时支持单边流和双向流
- 对于 streaming 模式,可以充分利用 HTTP/2.0 协议的多路复用功能,实现在一条 HTTP 链路上并行双向传输数据
- 有效的解决了 HTTP/1.X 的数据单向传输问题,在大幅减少 HTTP 连接的情况下,充分利用单条链路的性能,可以媲美传统的 RPC 私有长连接协议
- stream调用比多次rpc调用的好处
负载均衡
- 负载均衡比起thrift很容易做
- 主流的proxy都要支持http2,自然就支持grpc
- 而thrift采用私有协议,很多load balancer不支持
- Kubernetes 中使用gRPC会有负载不均衡的原因
- gRPC基于 HTTP/2 实现的,HTTP/2会复用原有的连接
- 这将导致 kube-proxy 只有在连接建立时才会做负载