当使用微服务并且微服务 A 想要与微服务 B 对话时,存在某种负载平衡,因为我们可以拥有 B 的多个实例。它可以是基础设施 LB(kubernetes)或客户端 LB(eureka + 功能区)。当一切都部署在单个区域和 AZ 中时,这非常简单。
当我们想要实现多区域 HA 并使用最近的区域来实现低延迟时会发生什么?
用户请求应该由云提供商路由到关闭区域吗?A 应该只在同一个 AZ 中调用 B 吗?是否应该将所有 AZ 完全隔离并在它们之间切换用户?如果 AZ X 中的所有服务 B 都死了,整个 AZ X 应该被杀死还是应该将来自 AZ X 中的服务 A 的流量定向到 AZ Y?在第二种情况下,云提供商是否提供此类功能?
或者也许 A 应该看到所有 AZ 中的所有 B 并且它应该调用它们中的任何一个?在这种情况下,当请求发送到远处的 B 时,延迟会怎样呢?
处理这种情况的模式是什么?