Golang Go语言中grpc在运输层走的什么协议啊?

gRPC 是 google 新开源的一个基于 protobuf 的 rpc 框架, 使用通信协议为 HTTP2, 网络通信层基于 netty 实现;

运输层应该还是走的 TCP/IP 吧 但还得进行握手和挥手啊

那 gRPC 为什么快?。。。


Golang Go语言中grpc在运输层走的什么协议啊?
18 回复

很快嘛,具体有多快?

更多关于Golang Go语言中grpc在运输层走的什么协议啊?的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


TCP 长连接和 HTTP/2 多路复用了解一下

一是数据压缩,二是长连接

同想知道到底有多快

有人说过他比 tcp 快么?

grpc 什么时候变成使用 HTTP2 了?

grpc 借用了 HTTP2 的传输帧来封装 protobuf 的数据,传输层还是 tcp
对于 RPC 框架来说,数据封装格式和传输协议对性能的影响并不算主要因素

我想问问。在实际项目中你们都是使用.proto 生产的对应语言文件吗?

是不是每次更新借口都要生成一次。覆盖以前的。

总感觉生成的文件太多了

有的项目是把编译在编译流程里面的,也有把 proto 和实现文件一同提交到代码库的。。实际项目中都见过。。

有的项目是把编译 proto 文件放在编译流程里面的,也有把 proto 和实现文件一同提交到代码库的。。实际项目中都见过。。

我个人觉得可以跟随项目走 然后跨项目可以弄 submodule 只是一种想法

Java 项目的话,protobuf-maven-plugin 了解一下

Java 项目 protobuf-maven-plugin 没有发现怎么自动编译,修改文件需要手动 build 如果有 CI 之类的东西,需要配置环境,挺麻烦。

如果有这么一个插件都搞定了那完美

速度快慢和 TCP 握手挥手有啥关系,难道还要一个请求握一次?

gRPC 还帮你做了黏包和小包自动合大包呢,这个才大幅提升网络性能。

grpc 快,你也说得出口?你压测下,看看 grpc 和 thrift 这种传统的对比,http 拖着腿,能快哪里去

在Go语言中,gRPC(Google Remote Procedure Call)在运输层使用的是HTTP/2协议。gRPC是一个高性能、开源和跨平台的RPC框架,它基于HTTP/2协议进行数据传输,这一选择带来了诸如双向流、流控、头部压缩、单TCP连接上的多复用请求等特性。这些特性使得gRPC在构建分布式系统和微服务架构中的服务间通信时表现出色,尤其在需要处理大量数据和高吞吐量的场景中。

此外,gRPC使用Protocol Buffers(简称ProtoBuf)作为接口描述语言,这使得它能够在不同语言环境下高效地进行数据序列化和反序列化。ProtoBuf是一种灵活且高效的数据格式,它允许开发者定义服务接口和消息格式,并通过ProtoBuf编译器生成相应语言的代码。

因此,在Go语言中,当你使用gRPC进行远程过程调用时,你的请求和响应数据会通过HTTP/2协议在运输层进行传输,同时利用ProtoBuf进行数据的序列化和反序列化。这种组合使得gRPC成为构建高性能、可扩展的分布式系统的理想选择。

回到顶部