【秒杀系统4】订单链路兜底方案,限流和熔断降级

高并发场景下实现系统稳定运行

微服务网关常见限流方案

客户端限流

服务端限流

网关限流

应用层限流

微服务网关限流

详情页入口流量保护,黑订单,限制一个IP访问频率。

基于Redis + Lua的脚本限流

RequestRateLimiter过滤工厂。算法:令牌桶。

初始化令牌数量。每次请求过来获取一个令牌,请求完成后,令牌返回桶。

网关整合 Sentinel Route & API维度限流

主要功能:
根据API流控,根据热点参数进行流控。

流控规则配置在Sentinel后台,分发到网关各节点。网关加入Sentinel jar包。
在接受请求时候,通过SlotChain记录并计算流控的结果。

Sentinel 生产环境引入

  • 2个维度
  1. API维度。api流控。
  2. Route维度。整个为服务进行流控
  • 持久化
    改造Senitnel支持Nacos持久化。规则从nacos分发到微服务网关。

下单引入Sentinel熔断

  1. 秒杀确认页,配置排队等待。匀速器设置。
  2. 热点参数限流。进行流控。
    1. 商品ID进行流控。
    2. 用户ID为参数,针对一段时间频繁访问的用户ID进行限制。

PS:
热点参数规则需要使用@SentinalResource(“resourceName”)进行注解。
参数必须是7中基本数据类型才行。

电商系统自适应保护方案

降级

系统容量达到一定程度时,限制或者关闭系统的某些非核心功能。把有限的资源保留给核心业务。
降级方案例子:

  1. 当秒杀流量达到5w/s时,把成交记录的获取从展示20条降级到只展示5条。从20 到5,通过开关来配置实现。
    降级的核心目标是,牺牲次要的功能和用户体验来保证核心业务流程的稳定。不得已为之的举措。例如:在双11时如果优惠券
    系统扛不住,可能会临时降级商品详情的优惠券信息展示。把有限的资源用在保障交易系统正确展示优惠信息上。既保证用户
    整整下单时的价格是正确的。

服务降级的策略

图片

熔断

对返回失败的借口,或者借口请求返回慢的。进行降级熔断。直接返回。不请求到后端服务。降低服务端的压力。