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

2022-04-15 14:25:16 +08:00
 hidemyself
假设我现在有一台服务器上部署了两个 gPRC 服务端,A 和 B 。

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

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

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

https://segmentfault.com/a/1190000040268472

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

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

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

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

© 2021 V2EX