V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
BacGa
V2EX  ›  问与答

gRPC 的一些疑问,欢迎指教,秋梨膏

  •  
  •   BacGa · 2019-12-03 11:06:46 +08:00 · 1281 次点击
    这是一个创建于 1578 天前的主题,其中的信息可能已经有所发展或是发生改变。

    以下场景均在 java 项目中

    grpc 的链接复用:

    复用的是以下哪个对象实际上代表了 http2 链接,ManagedChannel 还是 stub,是否有心跳、重连等机制,一个链接能复用的最大次数是否有限制?

    服务间的 grpc 是否需要长期保持一个链接:

    无调用时保持链接,高频调用也利用一个 http2 链接,既服务间始终只有一个 http2 链接。

    在生产应用中,接口的定义方式:

    定义一个通用接口,传输 json 串,解析数据后在程序内部决定如何处理,比如

    service DiagnosisMessage {
      rpc myFunc(stream request) returns (stream response) {}
    }
    
    message request{
        string req = 1;
    }
    
    message response{
        string resp = 1;
    }
    

    或者定义多个 grpc 接口,定义精准的数据类型和结构

    刚接触 grpc,如果有合适的资料或者群,秋梨膏

    2 条回复    2019-12-03 11:26:12 +08:00
    baiyi
        1
    baiyi  
       2019-12-03 11:18:06 +08:00   ❤️ 1
    之前接触过 gRPC,但也是新手,交流一下

    1. 没听过 grpc 的连接复用,我猜应该是 HTTP2 的多路复用,可以查下相关文章
    2. 不懂
    3. 本来 grpc 就是定义格式的,还是不要把它当作传输协议吧
    ledzep2
        2
    ledzep2  
       2019-12-03 11:26:12 +08:00 via Android
    看过 grpc c 的设计,不一定对。Grpc 内部有 load balance, 一个 channel 下面可能有多个 subchannel, subchannel 对应的 transport 是 http2 链接。重连有的,心跳是 http2 的。保持链接是的。只要 channel 不拆,stub 随便拆都是复用同一 channel.
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   4998 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 05:39 · PVG 13:39 · LAX 22:39 · JFK 01:39
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.