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 后:
- 拦截所有流量
- 你的 Java 应用发出的请求 → 先到 Envoy → 再发出去
- 别的服务调用你 → 先到 Envoy → 再交给 Java 应用 (靠 iptables 自动转发,不需要改代码)
- 服务发现 & 负载均衡
- Envoy 知道目标服务有哪些 Pod,自动轮询或智能分配。
- 💡 类似于你用
Feign + Ribbon
,但完全透明。
- 熔断 / 重试 / 限流
- Envoy 可以检测调用超时,自动重试或快速失败。
- 💡 类似
Hystrix/Resilience4j
,但不侵入业务代码。
- 安全(mTLS)
- Envoy 给每个请求自动加密、解密,支持双向 TLS。
- 💡 你不用在 Spring Security 里手动配置 SSL 证书。
- 可观测性
- Envoy 收集 QPS、延迟、错误率,汇报给 Prometheus/Jaeger。
- 💡 类似
Spring Boot Actuator + Sleuth
。
4. 架构示意图
5. Java 开发者眼中的收益
- 零侵入:你不用在代码里写负载均衡/熔断逻辑。
- 配置驱动:改 YAML 就能灰度发布、限流,不用改业务代码。
- 安全内置:mTLS 自动启用,免去了繁琐的证书管理。
- 可观测性增强:自动采集指标和日志。
✅ 总结一句:
Sidecar(Envoy) = 把原本你要在 Java 里写的"服务治理逻辑",下沉到一个独立代理容器里,让你的应用只管业务逻辑。