gRPC 和普通 HTTP API 哪个更适合 APP 客户端与服务器通信?为什么大部分 APP 都还在使用传统 HTTP API?

67 天前
 drymonfidelia
4940 次点击
所在节点    程序员
68 条回复
hefish
67 天前
因为大部分 app 开发是 sb ,只有用 grpc 的才是正常开发。
我也是 sb 。
kk2syc
67 天前
因为大部分 APP 用不到 gRPC 带来的性能提升,反而提高了因为开发维护的难度。都是草台班子,规范的 http-api 就不错了,更别提还有用纯 text 做接口的。(只返回 OK 、ERROR 字符串)
tool2dx
67 天前
gRPC 对比来说,和 json 或者 xml 都不一样,不是自解释的,必须要搭配着 protocol 文件一起用,就挺麻烦的。
也有可能是大部分开发项目,都在实现功能阶段,远远没有达到优化阶段。
flyqie
67 天前
其实我更想问你为什么会觉得应该用 grpc 而不是 http?
fpk5
67 天前
grpc 是二进制的,可能在调试的时候比较麻烦?
louiswong2099
67 天前
grpc 还没有 http api 应用的那么广泛,但是可以在服务器内部之前大量使用。
drymonfidelia
67 天前
@flyqie HTTP2 可以复用连接,结合 protobuf 压缩效率高提升弱网体验,传输的是二进制没有编码问题,还可以直接把图片和文字一起传输不用 base64 浪费带宽
akira
67 天前
你缺这点带宽么。。
wangritian
67 天前
传统 api 也可以 h2
你会问这个问题肯定也用不到 protobuf 对比 json 的提升
你非要图片文字一起传?更不用说对象存储
唯一考虑点就是你要不要服务器主动推数据,一般也是走系统推送
drymonfidelia
66 天前
@akira 弱网环境下少传 1kb 都能提升体验
fox0001
66 天前
一般使用 http 。主要是因为 grpc 是保持连接的,服务器的连接数是有限制的,使用 grpc 会导致限制了客户端数量。

重点还是根据实际情况而定。
RightHand
66 天前
要保持长连接,弱网不行,闪断不行。为什么要用这个 xx 玩意
musi
66 天前
@drymonfidelia #7
“HTTP2 可以复用连接”
你都说是 HTTP2 了,http api 用不了吗?

“结合 protobuf 压缩效率高提升弱网体验”
protobuf 的压缩效率比 gzip 高多少你测试过吗?

“还可以直接把图片和文字一起传输不用 base64 浪费带宽”
你到底是想省带宽还是浪费带宽?但凡考虑点体验和带宽都会选择把图片放 cdn 吧
tyc
66 天前
@louiswong2099 突破我认知了,我一直了解的都是在服务器内部大量使用的是 RPC
SmiteChow
66 天前
有没有可能 grpc 底层其实是 http ?
hxzhouh1
66 天前
Grpc 没有你想的那么好, 取代不了 HTTP ,为什么会有 GRPC-WEB 这个项目?
https://kmcd.dev/posts/grpc-the-bad-parts/

https://taoshu.in/grpc-trailers.html
unco020511
66 天前
http 不是一样可以用 protobuf 吗
hxzhouh1
66 天前
duduke
66 天前
单链接在弱网下,智障得很,所有请求全部阻塞
sunny352787
66 天前
用 http 一个是开发方便,不用配置协议文件直接处理 json 就好,另一个是对于目前的云服务提供商来说,http 的支持比 grpc 好很多,包括负载均衡、DDOS 防御、流量清洗等

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

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

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

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

© 2021 V2EX