老炮淘金:13 个真实企业项目的架构高光 · S04
从真实企业源码出发,拆解架构决策、适用边界与工程代价
关键词:Spring Cloud Netflix · Zuul 1.x · Eureka · Hystrix · 过滤器链 · 微服务早期实践
👋 欢迎阅读
🏠个人主页:知守观
📘我的专栏:老炮淘金:13个真实企业项目的架构高光
💻当前内容: Netflix 全家桶考古
文章目录
- 引言
- 一个启动类,十个 @Enable 注解
- 过滤器顺序是一张显式的表
- 验签过滤器被关掉了
- 被放弃的 Groovy 动态过滤器
- 全家桶各组件的死法
- 这套代码的边界与代价
- 迁移检查清单
- 老炮点评
引言
2017 年前后搭微服务,技术选型不需要开会。注册中心 Eureka,网关 Zuul,服务间调用 Feign,负载均衡 Ribbon,熔断 Hystrix,监控挂 Hystrix Dashboard。Spring Cloud Netflix 全家桶往 pom 里一引,一个下午就能把架子搭起来。
最近翻出一套那个年代的真实网关代码:Spring Boot 1.5.21,老坐标spring-cloud-starter-zuul,代码里的日期戳写着 2017 年 6 月到 12 月。它是一个金融场景的 API 开放平台网关,生产代码。同目录下还躺着两个 Spring Initializr 生成的 eureka-server、eureka-client 演示模块——典型的学习路径化石,先跑通 demo,再上生产。
这套代码把全家桶时代的好习惯和坏习惯都保存下来了。挑几处有代表性的讲。
本篇按「看源码、看设计、看边界、看代价、看实践」这条线展开,你可以重点带走三点:
- 如何从过滤器顺序常量表读出网关的执行链
- 如何审慎判断一个
shouldFilter() == false的过滤器意味着什么 - 如何评估旧组件的维护状态,以及动态过滤器、监控面板等设计的风险与取舍
一个启动类,十个 @Enable 注解
网关的启动类原样如下(包名已省略):