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 ![]() 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 Finest 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 拖着腿,能快哪里去 |