应用场景系列之(1):流量管理下的熔断场景

💡 原文中文,约16800字,阅读约需40分钟。
📝

内容提要

客户端采用Istio服务网格技术启用熔断功能时,系统仅允许来自所有三个客户端实例pod 的 5 个并发请求,结果显示每个客户端上的 503 数量增加了。检查客户端代理日志,发现带有UO标志的请求由客户端代理在本地进行限制,带有URX标志的请求被目标服务代理拒绝。检查目标服务端的代理日志,也发现了503响应码,以及"response_code":"503"以及"response_flags":"URX"。

🎯

关键要点

  • 客户端采用Istio服务网格技术启用熔断功能时,系统仅允许来自所有三个客户端实例pod的5个并发请求。
  • 启用熔断功能需要创建目标规则来为目标服务配置熔断,相关参数包括tcp.maxConnections、http.http1MaxPendingRequests和http.http2MaxRequests。
  • 在生产环境中,可能出现多个客户端实例和多个目标服务实例的复杂场景。
  • 通过服务网格技术启用熔断规则,只需定义目标规则DestinationRule。
  • 在一个客户端实例和一个目标服务实例的场景中,只有5个请求成功,其余请求排队等待。
  • 设置http.http1MaxPendingRequests限制可以排队的请求数量,以实现快速失败的熔断行为。
  • 在一个客户端实例和多个目标服务实例的场景中,连接限制适用于服务级别,而非pod级别。
  • 在多个客户端实例和一个目标服务实例的场景中,客户端上的503数量增加,系统仅允许5个并发请求。
  • 客户端代理根据连接限制发送请求,多余的请求被限制或排队。
  • 总结:客户端代理的限制是针对整个目标服务,而不是针对目标服务的单个副本。
🏷️

标签

➡️

继续阅读