什么是gRPC
在 gRPC 里客户端 应用可以像调用本地对象一样直接调用另一台不同的机器上服务端应用的方法,使得您能够更容易地创建分布式应用和服务。与许多 RPC 系统类似,gRPC 也是基于以下理念:定义一个服务,指定其能够被远程调用的方法(包含参数和返回类型)。在服务端实现这个接口,并运行一个 gRPC 服务器来处理客户端调用。在客户端拥有一个存根 能够像服务端一样的方法。
如何使用grpc在一个 .proto 文件内定义服务。
用 protocol buffer 编译器生成服务器和客户端代码。
使用 gRPC 的 Python API 为你的服务实现一个简单的客户端和服务器
grpc优势使用protobuf做数据交换,有优势。
1:序列化后体积相比Json和XML很小,适合网络传输
2:支持跨平台多语言
3:消息格式升级和兼容性还不错
4:序列化反序列化速度很快,快于Json的处理速速
使用REST或者GraphQL进行外部通信,使用gRPC进行内部通信,使得内部接口不会暴露。
基于HTTP2带来的优势
1: 基于HTTP2可以使用连接复用
HTTP1.0传输数据每次都需要重新建立连接,HTTP1.1增加keep-alive可以使得连接复用总而言之,即是减少握手次数,SSL认证握手次数。
2: 减少header头部大小
http1.x的header由于cookie和user agent很容易膨胀,而且每次都要重复发送。
http2.0使用encoder来减少需要传输的header大小,通讯双方各自cache一份head