GKE:Pub/Sub 和具有 3 个副本的 Pod 部署
GKE: Pub/Sub and Pod deplyment with 3 replicas
在 GKE 中,如果我有一个设置为使用 pull
方法的 Pub/Sub 主题和一个充当该主题订阅者的 API,如果此 API 复制了 3
(spec.replicas: 3),API(客户端)的现成行为是什么?
即当一条消息被推送到主题时,假设 API 是来自主题 (https://cloud.google.com/pubsub/docs/pull#asynchronous-pull) 的 asynchronously pulling
条消息并且复制了 3,请为消息执行所有 3 pods 拉取同时(并以重复结束)?幕后是否有某种负载平衡?开箱即用的行为是什么?
您在 youtube 上有一个很棒的视频系列:Google Cloud youtube channel。您可以深入了解每种订阅的行为、重试策略等。
立即回答您的问题:是的,有一个负载均衡器,并且根据订阅者的数量发送消息。但这并不是真正的循环赛。引擎盖下有优化,可以将消息块分派给每个订阅者(根据它们的大小和数量)。我的意思是,如果您同时发送 3 条测试消息,则 3 条消息将发送给同一个订阅者。
消息仅在订阅(推送或拉取)中重复。
消息在连接到同一订阅的订阅者客户端之间进行负载平衡。在 ack deadline
expires, at which point it may be redelivered to a different subscriber client. The service also respects flow control settings for each subscriber client individually and will not send message to a client that is flow controlled, instead routing them to other clients. More information about subscriber behavior is available in the subscriber documentation.
之前,给定消息一次只会发送给一个订阅者
因此,如果 3 个副本连接到同一个订阅,主题的消息将在它们之间进行负载平衡,即它们将接收不同的消息子集。您应该提供足够的副本,以便它们的总处理速度比消息发布到主题的速度更快。
如果您希望 3 个副本分别接收所有消息,请为每个副本使用不同的订阅。
在 GKE 中,如果我有一个设置为使用 pull
方法的 Pub/Sub 主题和一个充当该主题订阅者的 API,如果此 API 复制了 3
(spec.replicas: 3),API(客户端)的现成行为是什么?
即当一条消息被推送到主题时,假设 API 是来自主题 (https://cloud.google.com/pubsub/docs/pull#asynchronous-pull) 的 asynchronously pulling
条消息并且复制了 3,请为消息执行所有 3 pods 拉取同时(并以重复结束)?幕后是否有某种负载平衡?开箱即用的行为是什么?
您在 youtube 上有一个很棒的视频系列:Google Cloud youtube channel。您可以深入了解每种订阅的行为、重试策略等。
立即回答您的问题:是的,有一个负载均衡器,并且根据订阅者的数量发送消息。但这并不是真正的循环赛。引擎盖下有优化,可以将消息块分派给每个订阅者(根据它们的大小和数量)。我的意思是,如果您同时发送 3 条测试消息,则 3 条消息将发送给同一个订阅者。
消息仅在订阅(推送或拉取)中重复。
消息在连接到同一订阅的订阅者客户端之间进行负载平衡。在 ack deadline
expires, at which point it may be redelivered to a different subscriber client. The service also respects flow control settings for each subscriber client individually and will not send message to a client that is flow controlled, instead routing them to other clients. More information about subscriber behavior is available in the subscriber documentation.
因此,如果 3 个副本连接到同一个订阅,主题的消息将在它们之间进行负载平衡,即它们将接收不同的消息子集。您应该提供足够的副本,以便它们的总处理速度比消息发布到主题的速度更快。
如果您希望 3 个副本分别接收所有消息,请为每个副本使用不同的订阅。