V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
hidemyself
V2EX  ›  程序员

关于 gRPC 的问题请教一下各位

  •  
  •   hidemyself · 2022-04-15 14:25:16 +08:00 · 1256 次点击
    这是一个创建于 767 天前的主题,其中的信息可能已经有所发展或是发生改变。
    假设我现在有一台服务器上部署了两个 gPRC 服务端,A 和 B 。

    A 服务用 C++写的,gRPC 服务端口为 50051 ;
    B 服务用 Java 写的,如果 gRPC 的服务端口也配置成 50051 ,就会提示端口冲突。

    有没有办法让不同语言写的 gRPC 服务使用同一个端口?

    主要是因为有个 python 的 client 在另一台服务器上要分别调用 A,B 服务。
    5 条回复    2022-04-15 14:55:39 +08:00
    sujin190
        1
    sujin190  
       2022-04-15 14:30:55 +08:00   ❤️ 1
    显然不行,但是似乎你可以再在前面挂个 nginx 代理设置到 50051 端口,根据方法路径分别转发到后面不同的服务去
    2kCS5c0b0ITXE5k2
        2
    2kCS5c0b0ITXE5k2  
       2022-04-15 14:33:21 +08:00   ❤️ 1
    你要找的时不时 grpc 网关
    hidemyself
        3
    hidemyself  
    OP
       2022-04-15 14:43:20 +08:00
    @emeab 对,搜了下好像需要 gRPC-gateway 这个东西,我再去研究研究
    hidemyself
        4
    hidemyself  
    OP
       2022-04-15 14:45:05 +08:00
    @sujin190 我们所有的服务接口,出入参都是统一的 protobuf 管理的,调用不需要写方法路径。。
    我对 gRPC 还不是很了解,我再研究下
    sujin190
        5
    sujin190  
       2022-04-15 14:55:39 +08:00
    @hidemyself #4 grpc 调用的时候不写方法名通过 protobuf 里的参数来区分啥调用的?如果是标准的 grpc 的话,nginx 的 location 可以依据方法名来匹配啊,和 http 服务的 path 路径一样,你两个服务的总不至于方法名也是一样的吧

    https://segmentfault.com/a/1190000040268472
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1453 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 17:22 · PVG 01:22 · LAX 10:22 · JFK 13:22
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.