0507d3711b2a902736d16f09c437e1a6
1-grpc concepts & http2 介绍

写在前面

grpc 介绍

grpc 是 google 开源的一款高性能的 rpc 框架。github 上介绍如下:

gRPC is a modern, open source, high-performance remote procedure call (RPC) framework that can run anywhere

市面上的 rpc 框架数不胜数,包括 alibaba dubbo 和微博的 motan 等。grpc 能够在众多的框架中脱颖而出是跟其高性能是密切相关的。

CONCEPTS

阅读 grpc 源码之前,我们不妨先了解一些 concepts,github 上也有一些 concepts 介绍

https://github.com/grpc/grpc/blob/master/CONCEPTS.md

1.接口设计
Developers using gRPC start with a language agnostic description of an RPC service (a collection of methods). From this description, gRPC will generate client and server side interfaces in any of the supported languages. The server implements the service interface, which can be remotely invoked by the client interface.

By default, gRPC uses Protocol Buffers as the Interface Definition Language (IDL) for describing both the service interface and the structure of the payload messages. It is possible to use other alternatives if desired.

对一个远程服务 service 的调用,grpc 约定 client 和 server 首先需要约定好 service 的结构。包括一系列方法的组合,每个方法定义、参数、返回体等。对这个结构的描述,grpc 默认是用 protocol buffer 去实现的。

2. Streaming

streaming 在 http/1.x 已经出现了,http2 实现了 streaming 的多路复用。grpc 是基于 http2 实现的。所以 grpc 也实现了 streaming 的多路复用,所以 grpc 的请求有四种模式:Simple RPC、Client-side streaming RPC、Server-side streaming RPC、Bidirectional streaming RPC 。也就是说同时支持单边流和双向流

3. Protocol

grpc 的协议层是基于 http2 设计的,所以你如果想了解 grpc 的话,可以先深入了解 http2

4. Flow Control

grpc 的协议支持流量控制,这里也是采用了 http2 的 flow control 机制。

top Created with Sketch.