如何在分布式系统中维护套接字或通信通道

问题描述 投票:0回答:2

我是分布式系统的新手,曾经需要将gRPC服务部署到kubernetes(GKE)时遇到此问题。据我所知,当客户端启动rpc时,它将创建一个持久的http2连接,并在其上多路调用。我喜欢通过此连接向客户端发送/推送通知或类似消息。如果我部署到多个Pod,则连接分布在它们之间,并且不确定在通道上注册到客户端的实例的最佳定位方法是什么。一种可能的解决方案是,一旦用户启动连接,就在集中式服务中保留clientId和pod ip(或某些标识)的引用,而其他pod查找该pod并将消息转发给它。是否建议这样做或是否已有解决方案?我不熟悉此空间,任何建议都将受到高度赞赏。

谢谢。

kubernetes google-kubernetes-engine grpc distributed-computing distributed-system
2个回答
0
投票

听起来您想实现某种Pub-Sub系统。

您必须对规模进行一些后包络计算,例如多少个客户端,首先每秒多少个消息。

然后您可以选择实现自己还是选择现成的系统,例如https://doc.akka.io/docs/alpakka/current/google-cloud-pub-sub-grpc.html


0
投票

[另一个想法,您可以使用Envoy代理。如果您使用的是GKE,这些帖子会很有帮助。

© www.soinside.com 2019 - 2024. All rights reserved.