SSR限流降级方案-服务器实现

一、ssr限流降级需求

1、正常情况下用户访问web ssr服务

2、ssr负载过高(访问超时、5xx错误等)的情况下,用户访问csr服务。

3、ssr服务处理能力有限,经过性能测试得出ssr服务入口api的tps上限,请求量达到上限后请求转发到csr服务,整个过程用户无感知。

二、实现方式

1、istio envoy-filter通过令牌桶实现限流,达到流量上限后返回429,ssr服务异常返回503。

2、通过kong plugin来实现http状态码捕获和请求转发。Kong plugin捕获429、503等异常状态码后重新请求csr对应path并将结果返回给用户。 

三、流程图

SSR限流降级方案-服务器实现_第1张图片

四、web实施

1、有两个提供相同前端功能的web服务ssr和csr

2、ssr和csr服务的paths需要能区分开,不能完全一致,这样kong网关在做route配置时才能区分开,如:

    /_next/plp/ssr/_next/static/chunks/874.5bc7a9391fa44bda.js

/_next/plp/csr/_next/static/chunks/874.5bc7a9391fa44bda.js

3、确定需要限流的入口api,以及ssr和csr对应的path。

4、确定入口api响应后浏览器发起的子请求,子请求path最好有统一的前缀,kong网关根据前缀设置route。 

五、Kong实施

1、设置ssr和csr的upstream,并配置好target。

2、设置ssr的service,并配置upstream。

3、ssr service中为入口api添加route,对该route开启mik-service-failover插件,设置插件中的各项值。

SSR限流降级方案-服务器实现_第2张图片

六、istio实施

1、将需要限流的ssr服务名称、环境、api、目标tps等信息发给devops同事。

2、Devops同事完成相关的配置更新。 

七、验证

1、对限流的api进行压测,istio开启限流,不开启kong插件,部分请求返回429;开启kong插件,接口不会再有429状态码返回,tps和成功率明显高于kong插件开启前。

2、压测过程中,通过浏览器访问压测的api,多刷新几次会发现有时子请求访问的是ssr,有时子请求访问的是csr。

3、通过查看gcp日志验证,后续补充。

你可能感兴趣的:(devops,运维)