外观主题
阅读语言

Sidecar 边车代理 —— 把熔断、重试、日志从业务代码里拿出来

软件 本站软件 2小时前
https://yxp.hk/p/LIHo5z

📦 开源仓库:learn_sidecar_proxy · 纯 Python 标准库 · 学习演示项目

每个服务都自己写一遍熔断、重试、日志埋点?写烦了也改不动了。Sidecar 的思路:在每个服务旁边部署一个伴生代理进程,业务代码只跟自己的 sidecar 说话,所有横切关注点(熔断/重试/日志/可观测)全部下沉到 sidecar 里。这就是服务网格(Service Mesh)的基本形态。

核心思路

  订单服务                      库存服务
  ┌───────────────┐            ┌───────────────┐
  │   业务代码     │            │   业务代码     │
  └──────┬────────┘            └──────▲────────┘
         │ 出站                       │ 入站
         ▼                           │
  ┌───────────────┐   HTTP    ┌──────┴────────┐
  │ sidecar:order │──────────►│ sidecar:stock │
  │  熔断          │            │  日志/重试     │
  └───────────────┘            └───────────────┘
  • 业务服务只认识自己的 sidecar
  • sidecar 拦截所有出站调用,统一施加治理逻辑
  • 换 sidecar、升级治理策略,业务代码一行不动

为什么值得学

  • 业务代码保持干净:不再到处是熔断样板代码
  • 统一治理:日志、追踪、重试、mTLS 集中在一处
  • 语言无关:sidecar 是独立进程,任何语言写的服务都能用

演示场景

  1. 正常调用:订单经 sidecar 调库存,成功
  2. 下游连续 3 次失败:sidecar 打开熔断,业务调用被快速失败
  3. 冷却后探测成功:熔断闭合,恢复放行

运行

python run_all.py

纯 Python 标准库,零第三方依赖,一键跑完所有演示场景后自动退出。
仓库:github.com/yxpil/learn_sidecar_proxy,欢迎 Star 与提 Issue。