我对 grpc 和 http/2 有点困惑。据我了解,grpc 是一个 RPC 框架,可以使用不同类型的传输,http/2 只是其中一种传输。
在 golang 中,grpc.Dial()
将创建与服务器的连接,并且 grpc 服务器由grpc#Server.Serve()
. 那么这个联系是什么?那是 http/2 连接吗?
非常感谢您的帮助。
当您使用 gRPC 连接到服务器时,它会建立一个可以在许多 gRPC 请求之间共享的 HTTP/2 连接(通道概念)。
gRPC 确实是一个 RPC 框架,建立在 HTTP/2 之上。默认情况下,它使用 Protobufs 作为序列化协议,但可以自定义。
将 gRPC 视为 HTTP/2 上的 RPC 应用层。引用常见问题解答:“...... gRPC 也是一组库,它们将在通用 HTTP 库通常不提供的平台上一致地提供更高级别的功能。此类功能的示例包括:
在应用层级联呼叫取消负载平衡和故障转移与流控制交互“