我是分布式系统的新手,曾经需要将gRPC服务部署到kubernetes(GKE)时遇到此问题。据我所知,当客户端启动rpc时,它将创建一个持久的http2连接,并在其上多路调用。我喜欢通过此连接向客户端发送/推送通知或类似消息。如果我部署到多个Pod,则连接分布在它们之间,并且不确定在通道上注册到客户端的实例的最佳定位方法是什么。一种可能的解决方案是,一旦用户启动连接,就在集中式服务中保留clientId和pod ip(或某些标识)的引用,而其他pod查找该pod并将消息转发给它。是否建议这样做或是否已有解决方案?我不熟悉此空间,任何建议都将受到高度赞赏。
谢谢。
听起来您想实现某种Pub-Sub系统。
您必须对规模进行一些后包络计算,例如多少个客户端,首先每秒多少个消息。
然后您可以选择实现自己还是选择现成的系统,例如https://doc.akka.io/docs/alpakka/current/google-cloud-pub-sub-grpc.html
[另一个想法,您可以使用Envoy代理。如果您使用的是GKE,这些帖子会很有帮助。