
11-02 线上故障后的方案:网关这一层要不要,怎么不停服地拿掉 ShenYu。
练二这个规模不需要再买专门的网关,改成服务自己接 HTTP,按服务逐个切走。
一、服务用的是老版本 Dubbo 2.6.5,不支持「Triple 协议直接对外」,改用服务里已有的 Spring Web 接 HTTP。
二、生产 ZooKeeper 不只是给网关用的,它也是服务之间互相调用的注册中心,下线 ShenYu 时必须保留,高可用单独立项。
所有前端请求都先经过 ShenYu,由它翻译成服务能听懂的 Dubbo 调用。
| 按路径分发 | 把 /user、/coach、/payment、/ground 送到对应服务。nginx 本身就能做 |
| HTTP 转 Dubbo | 每个接口一条手工配置,生产不会自动注册,漏配就报 -107 / -102 |
| 登录与身份 | 解析登录 token,把会员、管理员、教练的身份写进请求,服务据此判断是谁 |
| 签名、加密 | 插件开着,但前端代码里没看到签名或加密调用,需在后台只读确认是否在用 |
服务已经能直接对外提供 HTTP:支付和用户的回调地址本来就绕过 ShenYu、由 nginx 直连服务。后台接口的登录校验服务端也已经自己做了一遍。
托管网关卖的是「入口不用自己运维」和「统一治理」,下面逐项看我们需不需要。
| 多机热备 | 需要。不买网关的办法:负载均衡 + 两台 nginx |
| 路由 | 需要但简单。nginx 4 条转发规则就够 |
| 统一登录校验 | 需要。服务里本来就要校验一遍,入口再做是锦上添花 |
| 限流防刷 | 大促有用。nginx 能做简单限流;业务防刷本来就要写在服务里 |
| 防攻击 WAF | 有用。WAF 是单独的产品,可直接挂在负载均衡或域名上,不依赖网关 |
| HTTP 转 Dubbo | 不推荐。还是每个接口手工配一遍,等于把今天的痛点搬上云 |
| 灰度切流 | 迁移期有用。nginx 按比例分流就能做 |
| 开放平台 | 给第三方发密钥、按量收费。我们现在没有这种需求 |
| 日志监控 | 有用。nginx 日志接入阿里云日志服务即可 |
费用参考:MSE 云原生网关每个节点(2 核 4G)约 422 元/月,至少 2 个节点;云原生 API 网关以购买页为准。钱不是主要成本,主要成本是多一个要学、要配、出事要查的产品。
坦白说:现在不需要。4 个服务、一个团队、没有开放平台,nginx 加统一鉴权库就够了。
11-02 17:10 把现场情况和代码事实交给 astra,以下是它的原话要点,未改动。
| 要不要网关 | 一致:先不采购 |
| ZooKeeper | 一致:保留,高可用单独做;据此更正了上午的说法 |
| 鉴权 | 一致;补充:入口一律先去掉客户端自带的身份字段,再按登录 token 写回 |
| 工期 | 一致:4~6 周只算试点;按双11 冻结排成约 10 周日历时间 |
| 网关选型 | 补充更正:astra 区分了传统 API 网关和 MSE 网关,这两款都已停止新购 |
| HTTP 入口做法 | 补充:自动扫描现有接口注解生成同名 HTTP 入口,不用逐个手写 |
前端不改,入口变成负载均衡加两台 nginx,服务自己接 HTTP。
| 统一鉴权库 | 规则照搬现在网关的做法;更严:先清掉客户端自带的身份字段,后台接口没有有效登录一律拒绝,返回码和现在一样 |
| HTTP 入口 | 启动时自动扫描现有接口,生成路径一模一样的 HTTP 入口。新接口发布即生效,告别 -107 / -102 |
| nginx | 按路径分发;迁移期按比例分流;配置放 Git、走 Jenkins 发布 |
五个阶段,双11 冻结期不动;负责人按角色写,具体人选待定。
先只发到测试2。每个服务挑 20~30 个高频接口,经旧网关和新入口各请求一遍,返回必须一致;覆盖「未登录」「登录过期」「正常」三种情况。前端各端在测试2 跑一遍主流程。
| 1 ground | 68 条路由,前端调用最少,用户主要是店长和总部 |
| 2 coach | 66 条,重点测教练登录和教练身份 |
| 3 user | 207 条,重点测小程序登录、开门、人脸 |
| 4 payment | 587 条,最后切;测下单、退款、回调不重复;不做写请求双跑;财务确认对账 |
旧网关连续 2 周零请求后停网关和网关后台,程序和配置备份保留 3 个月;补上第二台 nginx 和负载均衡。ZooKeeper 保留,2027 年一季度单独做高可用。
每一步都能退回;最怕的是身份校验出漏洞和支付重复。
| 阶段 0 | 新的启停方式不好用,就照手册手工启停,分钟级 |
| 阶段 1 | 只在测试2,生产不受影响 |
| 阶段 2~3 | nginx 对应服务改回旧网关并重载,1 分钟内 |
| 阶段 4 | 用保留的程序和配置重新启动旧网关并同步,约 30 分钟 |
身份算错就可能越权看到或改到别人的数据。统一库一处实现,对照测试覆盖未登录、过期、冒用三种情况。
下单、退款、回调出错会直接影响钱。只按比例分流,不做写请求双跑,回调地址不变。
它停了,服务之间的调用会全部中断,影响比今天更大。
其他风险:返回格式或错误码不一致导致前端不跳登录页(靠对照测试 + 小比例切流发现);个别接口参数转换不同(按现有路由配置逐条核对);签名、加密插件实际在用(阶段 0 先确认)。
截至 2026-11-02 均未开始;下面是验收标准和需要 William 拍板的事。
| 方向 | 同意 B 方案:不买专门网关,本周止血、双11 后切流 |
| 人选 | 后端负责人(约 5 人周)和有生产机权限的运维值班 |
| 费用 | 是否加一台 nginx 和阿里云负载均衡(少量费用) |
| 插队 | 身份安全审计如发现问题,是否立即插队修复 |