公司刚上微服务那会儿,十几个服务还能靠人盯,后来一拆几十个,接口调用乱成一团。服务挂了找不到源头,流量一崩全靠猜,这种场景不少人都经历过。这时候,一个靠谱的微服务治理平台就成了刚需。
为什么选开源?
商业方案虽然功能齐全,但价格高、定制难。而开源平台不仅能省下一大笔授权费,还能根据团队实际需求做二次开发。比如你发现某个服务总是超时,开源项目允许你直接翻代码看熔断策略是怎么实现的,甚至可以自己加个告警逻辑进去。
主流开源平台怎么选?
目前社区里讨论最多的是 Nacos + Sentinel + Seata 这套组合。Nacos 做注册中心和配置管理,部署起来简单,界面也清晰。加入集群后,服务上下线自动感知,再也不用手动改 IP 列表了。
Sentinel 负责流量控制和熔断降级。比如订单服务突然被刷,可以在控制台临时加个每秒 1000 次的限流规则,几秒钟生效,避免数据库被打崩。
Seata 解决分布式事务问题。下单扣库存、减余额,两步操作跨服务,一旦中间出错容易数据不一致。Seata 的 AT 模式基本不用改业务代码,加个注解就行,对开发友好。
快速接入示例
以 Spring Cloud Alibaba 为例,在项目中引入依赖:
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
</dependency>
配置文件加上 Nacos 地址:
spring:
cloud:
nacos:
discovery:
server-addr: 192.168.1.100:8848
sentinel:
transport:
dashboard: 192.168.1.100:8080
启动服务后,打开 Sentinel 控制台就能看到实时 QPS、响应时间,还能手动设置流控规则。
真实场景中的小技巧
有次大促前,我们发现支付回调服务偶发超时。通过 Sentinel 的链路追踪发现是下游银行接口不稳定。于是我们在回调入口加了个熔断规则:如果一分钟内异常比例超过 30%,就自动跳过处理,记录日志走异步补偿。这个规则救了当天的大盘。
还有就是配置热更新。以前改个超时时间要重启服务,现在在 Nacos 配置中心改完,所有实例几秒内自动拉取新配置。半夜改参数也不怕了。
别忽视运维配套
光有平台不够,得配上监控告警。我们把 Sentinel 的指标推到 Prometheus,再用 Grafana 做看板。谁家服务错误率突增,值班手机立马响。日志也集中收集,ELK 搭好后查问题效率提升明显。
团队刚开始用的时候总忘记去控制台看状态,后来把关键服务的 Sentinel 面板嵌进内部运维门户首页,每天上班第一眼就能扫一遍健康状况,慢慢就成了习惯。