跳到主要内容

14 篇文档带有标签「gRPC」

查看所有标签

gRPC gateway 数据的转换

通常把 gRPC 用作内部通信,而使用 Restful Api 进行外部通信。为了避免写两套应用(或者为了兼容旧服务),我们使用 grpc-gateway 把 gRPC 转成 HTTP。服务接收到 HTTP 请求后,grpc-gateway 把它转成 gRPC 进行处理,然后以 JSON 形式返回数据。

gRPC 服务和 Web 服务共存

gRPC 构建在 HTTP/2 协议之上,因此我们可以将 gRPC 服务和普通的 Web 服务架设在同一个端口之上。

gRPC 源码结构

grpc 使用 protobuf(google 的序列化框架)作为通信协议,底层上使用 http2 作为其传输协议,grpc 源码中自己实现了 http2 的服务端跟客户端,而并没有用 net/http 包。

gRPC 的 UnknownServiceHandler

今天在看 b 站的 powermock 源码时,发现它 Mock gRPC 是通过一个叫做 grpc.UnknownServiceHandler 的方法来做 服务端的 Mock 的

protoc 的使用

官网这个 protoc 的使用方式介绍写的实在是模糊,这里重新整理一下

protoreflect 反射 proto 文件

protoreflect 库是一个用来反射 proto 文件的库。它为 protobuf 和 gRPC 提供了反射 API。 protobuf 中反射的核心是 descriptor。 descriptor 本身就是 protobuf message,它描述 proto 源文件或其中的元素。 因此,descriptor 的集合可以描述 protobuf 类型的整个架构,包括 RPC 服务。