curl -s 'localhost:8081/actuator/metrics/http.client.requests?tag=uri:/inventory' | jq '.measurements' ping -c 20 inventory-b.idc2.internal | tail -2
同城双活上线后,跨机房调用平均多 38 毫秒,熔断规则按单机房 200 毫秒定的,异地实例错误率被算到 30%,10 分钟里被摘掉 6 次,流量在两个机房之间来回切。先别急着动参数,把报错原文和时间点记下来,顺序反了容易白折腾。
原因不复杂,熔断按调用耗时判失败,没有区分网络基线差异。两个机房的实例共用一套阈值,异地天然吃亏。
「跨机房误熔断」改完先别急着全量,挑一台机器放半天,真有问题这段时间就能看出来。改动写完就同步给同事,下一个人踩同一个坑,成本还是你的。
验证用真实数据走一遍,测试数据太干净,边界情况根本碰不到。
处理上按这个顺序:按机房分别配置超时和熔断阈值 异地放宽 50 毫秒;熔断统计里排除网络类异常 或者单独计数;优先同机房路由 跨机房只做兜底;观察一周两个机房的熔断次数是否接近。
改完只确认一件事:两个机房的熔断次数差距在 2 倍以内,跨机房调用不再周期性被整批摘除。
