Service Proxy

Service Proxy #

服务代理是一种工具,它拦截流向或来自某个服务的流量,应用一定的逻辑后再将流量转发到另一个服务。它充当“中介”,既收集流量信息,又应用规则。它可以简单地作为负载均衡器,将流量转发到各个应用程序,也可以作为复杂的服务网格,多个代理与各个容器化应用并行运行,处理所有网络连接。

尽管服务代理本身就很有用,尤其是在将流量从广域网引入 Kubernetes 集群时,但它也是其他系统(如API网关或服务网格)的构建模块。

解决的问题 #

应用程序应该以受控的方式发送和接收网络流量。为了跟踪流量并可能转换或重定向它,我们需要收集数据。传统上,启用数据收集和网络流量管理的代码是嵌入在每个应用程序中的。

服务代理“外部化”了这一功能。它不再需要驻留在应用程序内部,而是嵌入在平台层(即应用程序运行的地方)。这非常强大,因为它使开发人员可以完全专注于编写价值生成的应用程序代码,将处理流量的任务交由平台团队管理,这是平台团队本应承担的责任。从统一的位置集中分发和管理全局所需的服务功能(例如路由或TLS终止)使得服务间的通信更加可靠、安全和高效。

提供的帮助 #

代理充当用户和服务之间或不同服务之间的门卫(gatekeepers)。凭借这一独特的定位,代理提供了关于通信类型的洞察,并能够决定将特定请求发送到哪里,甚至完全拒绝它。

代理收集关键信息,管理路由(均匀分配流量到各个服务,或在某些服务出现故障时重新路由),加密连接,并缓存内容(减少资源消耗)。

技术基础 #

服务代理通过拦截服务间的流量,应用逻辑,然后在允许的情况下将流量转发。代理中嵌入的集中控制功能允许管理员完成多个任务,包括收集关于服务间通信的详细度量、保护服务免受过载,并对服务应用常见标准(如双向 TLS)。服务代理是其他工具(如服务网格)的基础,它们为执行所有网络流量的高级策略提供了一种方法。

请注意,CNCF将load balancers和ingress providers也纳入这一类别。

Keywords #

  • Service Proxy
  • Ingress

Projects #

  • Envoy (graduated)
  • Contour (incubating)
  • BFE (sandbox)
  • LoxiLB (sandbox)
  • MetalLB (sandbox)
  • OpenELB (sandbox)
  • Caddy
  • HAProxy
  • Nginx
© 2025 青蛙小白 | 总访问量 | 总访客数