微服务治理到底学什么
刚接手公司新项目时,发现十几个服务跑在 Kubernetes 上,接口调用像蜘蛛网。一个订单创建居然要走七八个服务,某个服务一卡,整个流程就挂。这时候才意识到,光会写接口不行,得搞懂微服务治理。
微服务治理不是某个工具,而是一套方法论。它解决的是服务多了之后的连锁问题:怎么发现服务?出错了往哪调?流量大了怎么扛?某个服务拖后腿能不能先隔离?这些问题不处理,系统越改越脆。
第一步:先理解核心问题
别急着装 Istio 或 Spring Cloud,先弄明白治理要应对哪些场景。比如你家楼下奶茶店,高峰期排队,店员手忙脚乱,可能把订单搞混。微服务也一样,高并发下请求乱串、超时堆积,最终雪崩。
常见问题有四个:服务发现(谁在干活)、负载均衡(活怎么分)、熔断降级(有人请假怎么办)、链路追踪(一杯奶茶是谁做的)。把这些场景吃透,后面学工具才有方向。
第二步:动手搭个最小闭环
本地起两个 Spring Boot 服务,user-service 和 order-service。不用注册中心手动配地址也能跑,但一旦 user-service 挂了,order-service 就一直卡着。这时候引入 Eureka 做注册中心,服务启停自动感知。
加个 Ribbon 做客户端负载,再配上 Hystrix 熔断。写个接口模拟延迟,触发降级返回缓存数据。这一步的关键是看到配置变化带来的行为差异,而不是复制粘贴代码。
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
</dependency>第三步:进阶看真实架构
小项目能跑通,不代表能上生产。公司用的可能是 Nacos + Sentinel + Seata 组合,或者直接上 Istio 做服务网格。这时候得看部署拓扑图,搞清控制面和数据面怎么交互。
比如线上某个服务突然耗时飙升,通过 SkyWalking 查到是数据库慢查询,顺藤摸瓜发现没加索引。链路追踪不是摆设,它是定位根因的导航仪。多翻几次线上故障复盘报告,比看十篇教程都管用。
第四步:参与一次灰度发布
真正的治理考验在变更。新版本上线,不能一刀切。用 Nginx 做权重分流,或 Istio 的 VirtualService 配规则,让 5% 流量先走新服务。监控错误率和响应时间,没问题再扩大。
有次我们上线加了缓存预热逻辑,结果 Redis 内存暴涨。幸好灰度范围小,及时回滚。这种实战经验没法模拟,只有参与过才知道预案多重要。
第五步:关注策略与可观测性
工具会用只是基础,关键是制定治理策略。比如核心服务降级阈值设多少?非核心服务超时时间是否该放宽?这些得结合业务来定。
同时,日志、指标、链路三者要打通。Prometheus 抓 metrics,ELK 收日志,Jaeger 查调用链。出现异常能一键关联所有数据,这才是成熟的治理体系。