Golang Go语言中grpc在运输层走的什么协议啊?
gRPC 是 google 新开源的一个基于 protobuf 的 rpc 框架, 使用通信协议为 HTTP2, 网络通信层基于 netty 实现;
运输层应该还是走的 TCP/IP 吧 但还得进行握手和挥手啊
那 gRPC 为什么快?。。。
Golang Go语言中grpc在运输层走的什么协议啊?
TCP 长连接和 HTTP/2 多路复用了解一下
一是数据压缩,二是长连接
同想知道到底有多快
有人说过他比 tcp 快么?
grpc 什么时候变成使用 HTTP2 了?
我想问问。在实际项目中你们都是使用.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成为构建高性能、可扩展的分布式系统的理想选择。