菜单

我们用Kubernetes网关解决了大促429报错,还省了30%服务器成本

上个月黑五我们团队差点崩了:13%的用户地址解析请求直接报429被拒,后台查了半天才发现是之前给每个微服务单独配的限流规则太死,物流查询模块流量翻了3倍,其他空出来的资源根本没法调过去用。

之前我们总觉得Kubernetes网关是大公司才用的复杂组件,直到踩了这个坑才被逼着上线,前后花了不到一周,效果比我们预想的好太多。

Kubernetes网关到底是什么?

说白了就是你整个Kubernetes集群的统一流量入口,所有外部请求先到它这儿,再转发给对应的后端服务,我们用的开源版本单实例就能扛每秒1.2万次请求,小团队根本不用纠结性能瓶颈。

我们实打实拿到的3个好处

我们用Kubernetes网关解决了大促429报错,还省了30%服务器成本 第1张

第一个最直观:限流规则终于不用每个服务单独配了。之前大促我们要改七八个微服务的限流阈值,改漏一个就出问题,现在直接在网关层做动态限流,空出来的服务器资源能自动倾斜给流量高的模块,这次圣诞大促我们的429报错直接降到了0。

第二个是省成本。之前为了扛峰值我们给3个核心服务各多配了2台冗余服务器,大部分时间资源利用率只有20%,现在网关能自动做负载均衡,我们直接缩容了6台服务器,算了下每个月云成本降了30%。

第三个是不用让后端反复改跨域、认证这些通用逻辑。之前每个新服务上线,后端都要写一遍JWT校验的代码,现在直接在网关层配个规则就搞定,我们后端3个人每周能多出来至少半天时间写业务代码。

别光听好处,这2个坑我们踩得结结实实

第一个坑是默认的超时设置太坑。刚上线第一天我们就发现有5%的地址解析请求超时,查了半天才发现网关默认的超时时间是30s,但我们的地址解析服务本身最长就要跑40s,改完规则立刻就恢复了,上线前一定要对着自己的业务接口挨个核对超时阈值。

第二个坑是不要一开始就堆所有功能。我们一开始想把日志、限流、WAF、灰度发布所有功能一次性全开,结果配置写错了导致整个集群入口断了20分钟,后来我们先只开了路由和限流,跑了3天稳定了再慢慢加其他功能,就再也没出过问题。

到底要不要用?我们给的判断标准很简单

适合用的情况:

我们用Kubernetes网关解决了大促429报错,还省了30%服务器成本 第2张

  • 你的微服务数量已经超过5个,每次改通用配置要来回改好几个地方
  • 经常遇到流量峰值,不同服务之间资源没法灵活调度
  • 后端团队小于5人,不想把时间浪费在重复写通用逻辑上

别折腾的情况:

  • 你就2个微服务,流量常年稳定,现在用的NGINX转发一点问题都没有
  • 整个团队没人懂Kubernetes基础,别为了追新技术硬上

给第一次上手的小团队2个实在建议

不用纠结选型,小团队直接用开源的APISIX或者Kong就行,配套文档全,遇到问题搜一下基本都有解决方案,不用买商业版,免费版的功能完全够用。

上线前先切10%的流量跑24小时,重点看有没有超时、请求被误拦截的情况,没问题再全量切,别一上来就把所有流量都导过去。

最后说个大家常问的:我们3个后端之前没人专门研究过网关,对着官方文档花了2天就搭完了,真的没你想的那么复杂。

有用吗?

技术支持在线客服
侧栏
返回顶部