当前位置: 首页 > 知识库问答 >
问题:

gRPC 和 Kubernetes 连接是否只拨到一个副本?

仉俊能
2023-03-14

我一直在用围棋学习gRPC和Kubernetes。在我的golang代码中,我的API网关在main开始之前在init()函数中调用我的微服务。我的问题是,如果我有多个微服务的副本,并且我的API网关一次性拨号到微服务,它是否保持连接到负载平衡器发送流量的第一个pod/副本?如果没有,负载平衡器如何保持拨号连接处于活动状态?非常感谢。

共有1个答案

艾灿
2023-03-14

如果在 gRPC-Go 中使用负载均衡器,负载均衡器会告知 gRPC 它应保持连接到哪个后端,以及对于每个请求,要使用哪个后端。例如,RoundRobin 平衡器将尝试与解析程序返回的每个后端保持连接,并在所有成功连接的后端之间轮换。

如果您想了解更多信息,本文档涵盖了gRPC中负载平衡的高级基础知识。

 类似资料:
  • 我有一个客户端试图在被动模式下将多个文件上载到FTP服务器。 客户端发送PASV命令,服务器使用相关的ip和端口进行响应。 在一个数据连接上是否可以发送多个文件?或者客户端需要发送PASV命令并为每个文件获取一个新的端口?

  • 是什么导致了这个错误,我如何修复它?

  • 我目前正在考虑将gRPC用于Java应用程序(客户端)和C++服务器之间的进程间通信。RPC调用将使用非常旧的C++代码库的功能,这肯定不是线程安全的。通常,Java客户机将启动更多的gRPC服务器实例,并且仅与每个服务器实例有一个连接。是否有任何方法可以确保gRPC服务器只接受一个连接而拒绝所有其他连接尝试。否则,我需要在RPC函数中引入一些全局锁,以获得100%正确的服务器实现。

  • 以下是我的问题: 请纠正我在上面的理解--我通过指定一个端口来打开一个套接字(),比方说8001,现在我的服务器将开始侦听这个端口上的请求,现在它从一个客户端得到一个请求,类似于,所以一旦它接受连接,它将创建一个本地端口,比方说10001,所以现在这个客户端请求将通过10001接受(或者换句话说,与客户端的连接将通过端口10001建立),而8001将再次空闲并侦听新的请求? 那么,这是否意味着使用

  • 我正在尝试在GKE上部署gRPC,我遵循了本教程-https://cloud.google.com/solutions/exposing-grpc-services-on-gke-using-envoy-proxy 我完成了所有工作,但我似乎无法在golang上运行gRPC,而我可以在grpcurl上运行它。 有人有什么想法吗?

  • 我正在尝试从Jenkins管道使用helm部署容器。我已经为jenkins安装了库伯内特斯插件,并在本地运行kubernetes URL和凭据中的配置文件中提供了它。当我执行时,它显示。 但是当我从管道运行helm install命令时,它会出错。 注意:我可以使用 CLI 以及通过使用和传递信誉文件变量名称(在 jenkins 凭据中创建)从 Jenkins 管道执行所有操作。我只想这样做,而不