美文网首页
【JAVA】秒杀

【JAVA】秒杀

作者: Y了个J | 来源:发表于2018-11-28 22:02 被阅读26次

    热点隔离

    秒杀系统设计的第一个原则就是将这种热点数据隔离出来,不要让1%的请求影响到另外的99%,隔离出来后也更方便对这1%的请求做针对性优化。针对秒杀我们做了多个层次的隔离:

    • 业务隔离。把秒杀做成一种营销活动,卖家要参加秒杀这种营销活动需要单独报名,从技术上来说,卖家报名后对我们来说就是已知热点,当真正开始时我们可以提前做好预热。
    • 系统隔离。系统隔离更多是运行时的隔离,可以通过分组部署的方式和另外99%分开。秒杀还申请了单独的域名,目的也是让请求落到不同的集群中。
    • 数据隔离。秒杀所调用的数据大部分都是热数据,比如会启用单独cache集群或MySQL数据库来放热点数据,目前也是不想0.01%的数据影响另外99.99%。

    优化思路

    缓存、把整个页面Cache在用户浏览器,将90%的数据缓存在客户端浏览器。
    秒杀答题、验证码、拼图、防止秒杀器。
    分流、限流保护。
    库存不能减为负数。
    主备,如果有条件做好主备容灾方案也是非常有必要的。
    异步,分析并识别出可以异步处理的逻辑,比如日志,缩短系统响应时间。

    思考

    如何防止单个用户重复秒杀下单?
    如何防止恶意调用秒杀接口?
    如果用户秒杀成功,一直不支付该怎么办?
    消息队列处理完成后,如果异步通知给用户秒杀成功?
    如何保障 Redis、Zookeeper 、Kafka 服务的正常运行(高可用)?
    高并发下秒杀业务如何做到不影响其他业务(隔离性)?

    相关文章

      网友评论

          本文标题:【JAVA】秒杀

          本文链接:https://www.haomeiwen.com/subject/uxltcqtx.html