Appearance
Netflix OSS 全景概览
什么是 Netflix OSS?
Netflix OSS(Open Source Software)是 Netflix 公司开源的一套微服务基础设施组件。2014 年前后,Netflix 将自己内部大规模使用的微服务组件开源,Spring Cloud 将其封装为 spring-cloud-starter-netflix-* 系列,成为 Spring Cloud 生态的标准组件。
核心组件一览
| 组件 | 解决什么问题 | 核心思想 |
|---|---|---|
| Eureka | 服务注册与发现 | AP 模型,优先保证可用性 |
| Ribbon | 客户端负载均衡 | 7 种策略,调用方自己选实例 |
| Hystrix | 熔断降级 | 断路器模式,防止级联故障 |
| Zuul | API 网关 | 过滤器链,前置拦截 |
Netflix 微服务架构全景
┌─────────────────────────┐
│ Zuul │ ← 网关入口
│ (前置过滤器链) │
└────────────┬────────────┘
│
┌────────────┴────────────┐
│ Eureka │ ← 注册中心
│ (服务注册 & 发现) │
└────────────┬────────────┘
│
┌─────────────────────────┼─────────────────────────┐
│ │ │
▼ ▼ ▼
┌──────────────┐ ┌──────────────┐ ┌──────────────┐
│ 订单服务 │ ←────→ │ 库存服务 │ ←────→ │ 支付服务 │
│ Ribbon 负载 │ Feign │ Ribbon 负载 │ Feign │ Ribbon 负载 │
│ Hystrix 熔断 │ │ Hystrix 熔断 │ │ Hystrix 熔断 │
└──────────────┘ └──────────────┘ └──────────────┘为什么 Netflix 组件被替代?
| 时间 | 事件 |
|---|---|
| 2018 | Netflix 宣布 Hystrix 进入维护模式 |
| 2019 | Netflix 宣布 Ribbon 进入维护模式 |
| 2020 | Netflix 宣布 Zuul 1.x 进入维护模式 |
| 2021 | Spring Cloud 2020.0 移除 Netflix 组件默认依赖 |
核心原因:
- 阻塞式 IO:Ribbon、Zuul 1.x 基于 Servlet,阻塞式,性能瓶颈
- 响应式趋势:Spring 推出 WebFlux,Netflix 组件无法适配
- 功能局限:Eureka 只是注册中心,Hystrix 只有熔断,不如 Nacos/Sentinel 功能全
- Netflix 战略调整:内部不再大规模使用,转而拥抱 gRPC + Envoy
学习价值
虽然 Netflix 组件已停维,但它们的设计思想仍然是微服务架构的经典教材:
- Eureka 的 AP 选型 → 理解 CAP 理论在工程中如何取舍
- Hystrix 的断路器模式 → 所有熔断组件(Sentinel/Resilience4j)的共同原型
- Ribbon 的 IRule 设计 → 解耦策略与执行,开闭原则典范
- Zuul 的过滤器链 → Gateway 的 GlobalFilter 就是借鉴于此
