http协议比rpc慢在哪里?

论坛 期权论坛 知乎     
知乎de用户   2019-8-18 00:57   15315   5
转载声明:本文由互联网用户自发贡献,部分转载来源来自知乎(zhihu.com),强烈建议您访问知乎查看完整内容。本社区不拥有所有权,也不承担任何法律责任。如有侵权,请联系optbbs@163.com。一经查实,即刻删除。
如果只是说数据包格式大小问题,http里body用pb和grpc对比这种差距在哪里?http那点包头数据也不多呀。
分享到 :
0 人收藏

5 个回复

倒序浏览
2#
热心回应  16级独孤 | 2019-8-18 00:57:36 发帖IP地址来自
其实HTTP根本和grpc等不是一类协议,用途也不一样,本来如果想要rpc就应该用rpc专用协议,比如sunrpc, 或者msrpc。现在这种广泛使用HTTP包装的行为不过是因为一帮搞web和应用或者微服务的人想用rpc但是又懒得,或者没接触过稍微下层一点的协议,才在HTTP上面跑这个。
RPC协议本质上来说对实时性,事务性要求来的都比HTTP高,所以比较理想的方式因该是用UDP自己包装轻量级的可靠传输的协议。这个对于协议设计者来说是有点技术含量的。做上层的一般没经验搞这个。
说说HTTP为什么比rpc效率低吧,主要有几点,第一,HTTP是字符协议,当时主要为了方便人看懂,但是信息量携带角度来说比二进制协议差的远。第二,HTTP虽然基于tcp但是tcp的全双工特性被浪费了,HTTP只能算是半双工的。需要请求应答交替在连接上传输。这样效率自然就低了。第三,HTTP在一个连接上只有一个会话,没办法复用连接,效率比现在流行的多会话或者子流协议效率就低得多。
HTTP是个很古老的协议了,HTTP2是他的继任者。针对这些问题,对上述几个缺点都进行了彻底的改变。
3#
热心回应  16级独孤 | 2019-8-18 00:57:37 发帖IP地址来自
问题中的比较不成立。
HTTP 是一种数据传输协议, 是关于 '怎么做' 的
RPC 指的是远程过程调用, 是关于 '做什么' 的
所以无法在他们俩之间比较性能
比如说, 甚至可以用 HTTP 来实现 RPC, 比如:
https://en.wikipedia.org/wiki/SOAP
4#
热心回应  16级独孤 | 2019-8-18 00:57:38 发帖IP地址来自
单从数据包的角度来说,http的头部是文本格式,不是二进制格式,解析起来会慢一些。
作为对比,你可以看看http2快在哪里,就知道http慢在哪里了。看这篇:
又拍云:一文读懂 HTTP/2 特性
5#
热心回应  16级独孤 | 2019-8-18 00:57:39 发帖IP地址来自
我以为不管什么协议都可以做远程过程调用,你还是问下应用层协议比传输层协议慢在哪里才对
6#
热心回应  16级独孤 | 2019-8-18 00:57:40 发帖IP地址来自
grpc本身支持使用HTTP2作为协议,HTTP本身不也是一种RPC吗?
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:55334
帖子:27423
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP