gRPC 是 google 新开源的一个基于 protobuf 的 rpc 框架, 使用通信协议为 HTTP2, 网络通信层基于 netty 实现;
运输层应该还是走的 TCP/IP 吧 但还得进行握手和挥手啊
那 gRPC 为什么快?。。。
1
misaka19000 2018-04-27 14:10:48 +08:00
很快嘛,具体有多快?
|
2
LGA1150 2018-04-27 14:11:06 +08:00 2
TCP 长连接和 HTTP/2 多路复用了解一下
|
3
prolic 2018-04-27 14:40:51 +08:00
一是数据压缩,二是长连接
|
4
lance7in 2018-04-27 15:08:15 +08:00
@misaka19000 同想知道到底有多快
|
5
justfly 2018-04-27 15:10:45 +08:00
有人说过他比 tcp 快么?
|
6
miki6180 2018-04-27 17:49:17 +08:00
grpc 什么时候变成使用 HTTP2 了?
|
7
current 2018-04-27 17:59:55 +08:00
grpc 借用了 HTTP2 的传输帧来封装 protobuf 的数据,传输层还是 tcp
对于 RPC 框架来说,数据封装格式和传输协议对性能的影响并不算主要因素 |
8
lepig 2018-04-27 19:18:12 +08:00
我想问问。在实际项目中你们都是使用.proto 生产的对应语言文件吗?
是不是每次更新借口都要生成一次。覆盖以前的。 总感觉生成的文件太多了 |
10
current 2018-04-27 19:23:07 +08:00
@lepig 有的项目是把编译 proto 文件放在编译流程里面的,也有把 proto 和实现文件一同提交到代码库的。。实际项目中都见过。。
|
11
jianpeng957 2018-04-27 19:44:29 +08:00
我个人觉得可以跟随项目走 然后跨项目可以弄 submodule 只是一种想法
|
12
hand515 2018-04-27 20:04:22 +08:00
Java 项目的话,protobuf-maven-plugin 了解一下
|
13
pathbox 2018-04-27 22:50:35 +08:00
HTTP2
|
14
blackboom 2018-04-27 23:05:30 +08:00 via Android
Java 项目 protobuf-maven-plugin 没有发现怎么自动编译,修改文件需要手动 build 如果有 CI 之类的东西,需要配置环境,挺麻烦。
如果有这么一个插件都搞定了那完美 |
15
msg7086 2018-04-28 07:16:51 +08:00
速度快慢和 TCP 握手挥手有啥关系,难道还要一个请求握一次?
|
16
owt5008137 2018-04-28 09:22:48 +08:00 via Android
gRPC 还帮你做了黏包和小包自动合大包呢,这个才大幅提升网络性能。
|
17
godsoul 2018-04-28 09:39:32 +08:00
grpc 快,你也说得出口?你压测下,看看 grpc 和 thrift 这种传统的对比,http 拖着腿,能快哪里去
|