V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
HanMeiM
V2EX  ›  程序员

客户端与服务端通信使用 GRPC 有什么劣势吗?

  •  
  •   HanMeiM · 2022-02-25 00:37:19 +08:00 · 2796 次点击
    这是一个创建于 1037 天前的主题,其中的信息可能已经有所发展或是发生改变。

    如题,之前都是安卓和 IOS 基本都是通过 HTTP 的形式与服务端通信的
    想了解下如果使用 GRPC 通信的话会有什么劣势吗?
    因为接口定义可以直接通过 protobuf 来定义,避免前后端之间频繁的沟通接口字段细节,感觉挺方便的。

    14 条回复    2022-02-25 19:48:24 +08:00
    shoaly
        1
    shoaly  
       2022-02-25 06:47:00 +08:00
    感觉老哥混着在说, 如果不想用 http 换成 grpc , 通常用 grpc 是为了解决 http 只能单向通信的问题, 也就是从 http 降级成为 tcp, 支持双向通信了..... 和消息报文格式没关系
    再说报文编码, json 和 protobuff, 其实 protobuff 的申明方式确实有一些优势, 能解决报文中各种字段 , 但是需要前后端都认可把, 如果前端同事还是愿意 json 哈索, 也无可厚非, 因为 json 格式调试起来, 人眼更直观
    jorneyr
        2
    jorneyr  
       2022-02-25 08:27:18 +08:00
    高负载时负载均衡比较麻烦。
    xuanbg
        3
    xuanbg  
       2022-02-25 08:55:22 +08:00
    也没啥,就是需要客户端支持 gRPC 而已。。。用 http 呢,就不需要考虑这个问题。
    Macolor21
        4
    Macolor21  
       2022-02-25 09:11:49 +08:00 via iPhone
    graphql 更适合
    letitbesqzr
        5
    letitbesqzr  
       2022-02-25 10:00:50 +08:00
    调试麻烦
    joesonw
        6
    joesonw  
       2022-02-25 10:05:22 +08:00
    @jorneyr nginx 和 traefik 都支持 grpc 请求级别的负载均衡.
    thevita
        7
    thevita  
       2022-02-25 10:41:19 +08:00
    1. 最大的劣势就是会不停有人问:"为什么不用 http"
    2. 调试确实不方便,工具链+人员培训
    oneegg
        8
    oneegg  
       2022-02-25 10:41:35 +08:00 via iPhone
    Grpc 和 http2 的关系
    thevita
        9
    thevita  
       2022-02-25 10:49:04 +08:00
    其实如果只是为了解决 "频繁的沟通接口字段细节", 可以一步步来比如
    1. protobuf-over-http
    2. 用 gRPC-Gateway, grpc 和 rest 共存
    mxT52CRuqR6o5
        10
    mxT52CRuqR6o5  
       2022-02-25 10:58:38 +08:00
    如果只用 grpc 通信,以后如果要做 web 端,就得再写一份 http 版本的
    而且 http 对接各种 cdn 不会有问题,grpc 接入就可能有限制
    iugo
        11
    iugo  
       2022-02-25 11:23:14 +08:00
    做 Web 开发和小程序开发会麻烦, 前后端均需要 (可参考 gRPC Web) 做额外的操作.
    HanMeiM
        12
    HanMeiM  
    OP
       2022-02-25 12:48:45 +08:00
    protobuf-over-http
    其实有想过,我知道 web 前端有相关的开源项目,但是客户端我不清楚有没有
    而且也没打算写 web ,计算写 web ,那多半是官网,和客户端的代码可以不重合
    zoharSoul
        13
    zoharSoul  
       2022-02-25 17:53:04 +08:00
    我试过 android 上的, 还挺方便.
    pb 文件放到对应目录就自动编译生成代码了. 比 go 的体验好多了
    kwanzaa
        14
    kwanzaa  
       2022-02-25 19:48:24 +08:00
    劣势就是你要说服人。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1024 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 19:20 · PVG 03:20 · LAX 11:20 · JFK 14:20
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.