大流量下的高可用策略(以商品秒杀为例子)

大流量下的高可用策略(以商品秒杀为例子)

限流通过
正常
熔断
获取成功
获取失败
库存充足
库存不足
库存充足
库存不足
用户发起秒杀请求
Nginx限流
Spring Cloud Gateway
熔断降级服务
路由到后端服务
执行降级策略
尝试获取分布式锁
检查库存
返回秒杀失败
处理订单
将请求放入消息队列
后端服务消费消息
再次检查库存
更新Redis库存
订单生成
数据同步回数据库
返回友好提示或备选方案

这个流程图描述了一个带有熔断降级机制的秒杀系统的处理流程。下面是详细的文字描述:

  1. 用户发起秒杀请求:用户通过Web前端或App发起秒杀请求。

  2. Nginx限流:请求首先到达部署了Nginx的服务器。Nginx根据配置的限流规则对请求进行速率限制,以防止过多的请求同时涌入系统。

  3. Spring Cloud Gateway限流:通过Nginx限流的请求被转发到Spring Cloud Gateway。Spring Cloud Gateway也配置了限流规则,进一步控制进入后端服务的流量。

  4. 熔断降级服务:在将请求路由到后端服务之前,首先经过熔断降级服务。熔断降级服务会监控后端服务的健康状况,如响应时间和错误率。

  5. 正常流量路由:如果后端服务运行正常,熔断降级服务允许请求继续流向后端服务。

  6. 熔断执行降级策略:如果后端服务出现问题,如响应时间过长或错误率超过阈值,熔断器会打开,阻止流量进入后端服务。此时,系统会执行降级策略,如返回友好的错误提示或提供备选方案。

  7. 尝试获取分布式锁:后端服务接收到请求后,首先尝试获取分布式锁,以确保同一时间只有一个请求能够操作库存。

  8. 检查库存:如果成功获取分布式锁,服务会检查库存。这可以在数据库或Redis中进行,具体取决于系统设计。

  9. 库存充足:如果检查发现库存充足,服务会继续处理订单。

  10. 库存不足:如果库存不足,服务会返回秒杀失败的响应。

  11. 处理订单:对于库存充足的请求,服务会处理订单,并将请求放入消息队列中。

  12. 消息队列:消息队列用于控制请求的处理速率,保证系统的稳定性。

  13. 后端服务消费消息:后端服务从消息队列中取出消息,并再次检查库存,以确保在请求排队期间库存没有发生变化。

  14. 更新Redis库存:如果再次检查确认库存充足,服务会更新Redis中的库存数量。

  15. 订单生成:库存更新成功后,服务会生成订单。

  16. 数据同步回数据库:最后,服务会将订单数据和库存变更同步回数据库,以保持数据的一致性和持久性。

  17. 返回友好提示或备选方案:对于触发熔断机制的请求,系统会返回友好的用户提示或提供备选方案,而不是直接暴露系统问题给用户。

  • 26
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

极客李华

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值