grpc 在运输层走的什么协议啊?

2018-04-27 14:07:10 +08:00
 zhangqilin

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

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

那 gRPC 为什么快?。。。

3160 次点击
所在节点    Go 编程语言
17 条回复
misaka19000
2018-04-27 14:10:48 +08:00
很快嘛,具体有多快?
LGA1150
2018-04-27 14:11:06 +08:00
TCP 长连接和 HTTP/2 多路复用了解一下
prolic
2018-04-27 14:40:51 +08:00
一是数据压缩,二是长连接
lance7in
2018-04-27 15:08:15 +08:00
@misaka19000 同想知道到底有多快
justfly
2018-04-27 15:10:45 +08:00
有人说过他比 tcp 快么?
miki6180
2018-04-27 17:49:17 +08:00
grpc 什么时候变成使用 HTTP2 了?
current
2018-04-27 17:59:55 +08:00
grpc 借用了 HTTP2 的传输帧来封装 protobuf 的数据,传输层还是 tcp
对于 RPC 框架来说,数据封装格式和传输协议对性能的影响并不算主要因素
lepig
2018-04-27 19:18:12 +08:00
我想问问。在实际项目中你们都是使用.proto 生产的对应语言文件吗?

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

总感觉生成的文件太多了
current
2018-04-27 19:22:32 +08:00
@lepig 有的项目是把编译在编译流程里面的,也有把 proto 和实现文件一同提交到代码库的。。实际项目中都见过。。
current
2018-04-27 19:23:07 +08:00
@lepig 有的项目是把编译 proto 文件放在编译流程里面的,也有把 proto 和实现文件一同提交到代码库的。。实际项目中都见过。。
jianpeng957
2018-04-27 19:44:29 +08:00
我个人觉得可以跟随项目走 然后跨项目可以弄 submodule 只是一种想法
hand515
2018-04-27 20:04:22 +08:00
Java 项目的话,protobuf-maven-plugin 了解一下
pathbox
2018-04-27 22:50:35 +08:00
HTTP2
blackboom
2018-04-27 23:05:30 +08:00
Java 项目 protobuf-maven-plugin 没有发现怎么自动编译,修改文件需要手动 build 如果有 CI 之类的东西,需要配置环境,挺麻烦。

如果有这么一个插件都搞定了那完美
msg7086
2018-04-28 07:16:51 +08:00
速度快慢和 TCP 握手挥手有啥关系,难道还要一个请求握一次?
owt5008137
2018-04-28 09:22:48 +08:00
gRPC 还帮你做了黏包和小包自动合大包呢,这个才大幅提升网络性能。
godsoul
2018-04-28 09:39:32 +08:00
grpc 快,你也说得出口?你压测下,看看 grpc 和 thrift 这种传统的对比,http 拖着腿,能快哪里去

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/450374

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX