• 01 | 为什么需要消息队列?


     对于对于这 5 个步骤来说,能否决定秒杀成功,实际上只有风险控制和库存锁定这 2 个步骤。只要用户的秒杀请求通过风险控制,并在服务端完成库存锁定,就可以给用户返回秒杀结果了,对于后续的生成订单、短信通知和更新统计数据等步骤,并不一定要在秒杀请求中处理完成。

     对于超时的请求可以直接丢弃,APP 将超时无响应的请求处理为秒杀失败即可。

     实现的方式也很简单,不需要破坏原有的调用链,只要网关在处理 APP 请求时增加一个获取令牌的逻辑。

    令牌发生器按照预估的处理能力,匀速生产令牌并放入令牌队列(如果队列满了则丢弃令牌)

    网关在收到请求时去令牌队列消费一个令牌,获取到令牌则继续调用后端秒杀服务,如果获取不到令牌则直接返回秒杀失败。

    消息队列的另外一个作用,就是实现系统应用之间的解耦

    消息队列最常被使用的三种场景:异步处理、流量控制和服务解耦

    当然,消息队列的适用范围不仅仅局限于这些场景,还有包括:

    作为发布 / 订阅系统实现一个微服务级系统间的观察者模式;

    连接流计算任务和数据;

    用于将消息广播给大量接收者。

    同时我们也要认识到,消息队列也有它自身的一些问题和局限性,包括:

    引入消息队列带来的延迟问题;

    增加了系统的复杂度;

    可能产生数据不一致的问题。 

     

     

     

     

     

  • 相关阅读:
    asp.net core启动源码以及监听,到处理请求响应的过程
    HTTP缓存
    【SpringData&JPA从入门到精通】02JPA API
    关于取地址&和解引用*的小问题
    多态性
    ASP.NET Core WebApi返回结果统一包装实践
    后端思维之数据库性能优化方案
    【项目】项目194
    lambda 表达式
    在APICloud开发平台使用友盟统计功能教程
  • 原文地址:https://www.cnblogs.com/lakeslove/p/12291431.html
Copyright © 2020-2023  润新知