type
status
date
slug
summary
tags
category
icon
password

1. 先从痛点说起

在 Java 微服务开发里,你经常要写这些功能:
  • 服务发现:服务 A调用服务 B,要知道 B 的地址。
  • 负载均衡:B 有多个实例,怎么分流?
  • 熔断/重试:B 挂了,要快速失败,或者重试别的实例。
  • 安全通信:要加密、鉴权,不然服务间调用不安全。
  • 日志/监控:调用链追踪、QPS、延迟、错误率......
如果靠 Spring Cloud,你要写:
  • Ribbon/Feign(负载均衡)
  • Hystrix/Resilience4j(熔断/限流)
  • Sleuth/Zipkin(调用链追踪)
  • Spring Security/SSL 配置(安全)
  • *问题:**业务逻辑之外,大量代码是"治理"逻辑。

2. Sidecar 是什么?

  • 在 Kubernetes 里,一个 Pod 可以有多个容器。
  • Sidecar 容器 就是"陪跑的容器",专门帮主业务容器(你的 Java应用)做"非业务逻辑"。
  • 典型例子:Envoy 代理。
💡 形象比喻
  • 你(Java 应用)专注开车(业务逻辑)。
  • Sidecar(Envoy)是你的副驾驶,负责导航、通讯加密、收集路况数据。
  • 这样你不用边开车边看地图,效率和安全性更高。

3. Envoy Sidecar 的职责

当 Envoy 作为 Sidecar 注入 Pod 后:
  1. 拦截所有流量
  • 你的 Java 应用发出的请求 → 先到 Envoy → 再发出去
  • 别的服务调用你 → 先到 Envoy → 再交给 Java 应用 (靠 iptables 自动转发,不需要改代码)
  1. 服务发现 & 负载均衡
      • Envoy 知道目标服务有哪些 Pod,自动轮询或智能分配。
      • 💡 类似于你用 Feign + Ribbon,但完全透明。
  1. 熔断 / 重试 / 限流
      • Envoy 可以检测调用超时,自动重试或快速失败。
      • 💡 类似 Hystrix/Resilience4j,但不侵入业务代码。
  1. 安全(mTLS)
      • Envoy 给每个请求自动加密、解密,支持双向 TLS。
      • 💡 你不用在 Spring Security 里手动配置 SSL 证书。
  1. 可观测性
      • Envoy 收集 QPS、延迟、错误率,汇报给 Prometheus/Jaeger。
      • 💡 类似 Spring Boot Actuator + Sleuth

4. 架构示意图


5. Java 开发者眼中的收益

  • 零侵入:你不用在代码里写负载均衡/熔断逻辑。
  • 配置驱动:改 YAML 就能灰度发布、限流,不用改业务代码。
  • 安全内置:mTLS 自动启用,免去了繁琐的证书管理。
  • 可观测性增强:自动采集指标和日志。
✅ 总结一句: Sidecar(Envoy) = 把原本你要在 Java 里写的"服务治理逻辑",下沉到一个独立代理容器里,让你的应用只管业务逻辑。