gRPC作为Web网站和APP后端的最常用服务提供方式之一和分布式微服务架构不同节点间的最常见通信方式之一,它自身是如何进行通信的呢,这个问题就是我们本篇文章将要研究的重点,先从全局的角度分析gRPC服务端和客户端进行通信的主要流程,再从细节剖析gRPC是如何进行高效的远程过程调用的,在RPC的思想上又做了哪些优化。
gRPC服务端与客户端通信模式
在上一篇文章中我们可以大概的知道RPC的主要概念和一个RPC系统中的不同角色和各自的职责,gRPC作为RPC概念的框架实现,当然也会严格的按照论文中所讲述的模式进行不同角色和概念的组合,但与之不同的时,RPC框架可以相对灵活的定义服务端与客户端的存根和服务间调用的通信方式,比如我们当前正在学习的gRPC框架,服务端和客户端由用户进行实现,服务端和客户端存根则由另一种插件Protobuf进行定义与编码实现,传输方式则使用的是HTTP/2协议进行通信,下面是它的概念图:
我们开始逐个分析下:
- gRPC Server:gRPC服务的提供方。
- gRPC Client:gRPC服务的消费方。
- gRPC Server Stub、gRPC Client Stub:Protobuf编译后生成的存根(Stub),相同语言间可共用,不同语言间需要多次生成。
- 数据传输方式:gRPC采用HTTP/2协议作为数据传输方式。
gRPC服务总体使用流程
我们在具体的项目中使