gRPC gateway 数据的转换
通常把 gRPC 用作内部通信,而使用 Restful Api 进行外部通信。为了避免写两套应用(或者为了兼容旧服务),我们使用 grpc-gateway 把 gRPC 转成 HTTP。服务接收到 HTTP 请求后,grpc-gateway 把它转成 gRPC 进行处理,然后以 JSON 形式返回数据。
通常把 gRPC 用作内部通信,而使用 Restful Api 进行外部通信。为了避免写两套应用(或者为了兼容旧服务),我们使用 grpc-gateway 把 gRPC 转成 HTTP。服务接收到 HTTP 请求后,grpc-gateway 把它转成 gRPC 进行处理,然后以 JSON 形式返回数据。
Go 的 gRPC 官方库
这篇分析是基于 grpc-go 1.48 这个版本来的
流程整理
下文转自 gRPC 扩展错误处理
gRPC 构建在 HTTP/2 协议之上,因此我们可以将 gRPC 服务和普通的 Web 服务架设在同一个端口之上。
grpc 使用 protobuf(google 的序列化框架)作为通信协议,底层上使用 http2 作为其传输协议,grpc 源码中自己实现了 http2 的服务端跟客户端,而并没有用 net/http 包。
今天在看 b 站的 powermock 源码时,发现它 Mock gRPC 是通过一个叫做 grpc.UnknownServiceHandler 的方法来做 服务端的 Mock 的
前言
gRPC 默认提供了两种认证方式:
trailer 和 header 的区别
grpcurl 是一个与 grpc 服务器交互的命令行工具,可认为是 gRPC 的 curl 工具。
官网这个 protoc 的使用方式介绍写的实在是模糊,这里重新整理一下
protoreflect 库是一个用来反射 proto 文件的库。它为 protobuf 和 gRPC 提供了反射 API。 protobuf 中反射的核心是 descriptor。 descriptor 本身就是 protobuf message,它描述 proto 源文件或其中的元素。 因此,descriptor 的集合可以描述 protobuf 类型的整个架构,包括 RPC 服务。