美文网首页
秒杀系统设计-学习笔记

秒杀系统设计-学习笔记

作者: 三分归元币 | 来源:发表于2020-02-03 14:26 被阅读0次

    秒杀系统的设计体现了对高并发、高可用、高性能的软件系统的掌握;处理并发能力越强,接受的业务能力越强,那么盈利也就越多。对于热点商品,引起了广泛买家的注意,此时可以产生同类热门商品推荐、广告等附属的业务盈利。

    设计一个秒杀系统,关键要看预估业务量。在一万QPS的时候,只需要对原有业务进行新增秒杀商品上架功能,多机部署,分库分表等措施,换句话说单体应用或许也足够了。在这个阶段,我们主要关注的是业务的实现,以及业务的优化(流程是否冗余,是否需要异步,数据库读写是否走索引)。

    业务增长的过程中,系统由于目前架构的原因不利于分布式扩展,在大量的秒杀业务前,机器的读性能不佳(因为秒杀商品的数量基本上只有几十几百,而大量用户是在浏览秒杀商品详情或者发起秒杀请求),这个时候就需要修改架构,通过微服务改造将基础功能划分出去,秒杀服务独立规划一个集群。

    许令波的秒杀系统设计指出,提升QPS之道,就是先服务拆分并且集群化,热点数据加载到缓存中,并且增加秒杀风控(比如一个账户同一件秒杀商品只能秒杀一次,秒杀前答题去除机器人攻击等)

    image.png

    业务如果继续增长,突破了10w级别,那么单redis缓存系统将会受到挑战。这个时候,许工建议我们采取动静分离、cdn加速、以及服务器本地缓存等设计,从而可以抬升QPS至百万级别。

    image.png

    设计原则4‘要’1不要

    1.数据要尽量少
    在加载一个功能的时候,所依赖的后端服务数据要尽量的少,旨在减少CPU的运算。
    2.请求要尽量少
    发起一个请求需要使用一个线程去处理,所以有点请求能合并则合并,比如请求前端资源将多个文件合成一个。
    3.依赖要尽量少
    实现服务划分之后,服务间的依赖能解耦则解耦,对于非核心系统,如果处理不了能降级则降级,若是采取拒绝保护亦可。
    4.路径要尽量短
    对于一个业务,在流程上跨越的系统数目越多可用性则越低,所以服务路径尽量的短。
    5.不要存在单点
    这是老生常谈了,互联网服务尽量不要存在单点,比如一台服务器被多方调用,那么服务器挂了多方服务也会挂掉,所以服务器应该变成集群;又或者认证服务或者授权服务是所有业务的先驱,如果QPS过低则其他业务即使设计再好也会被它们限制,系统不仅不能有单点业务也尽量避免。

    动静分离

    image.png

    将商品详情页按照商品id生成好静态页面,然后存在redis上,这样就可以过滤掉大量静态数据的请求

    相关文章

      网友评论

          本文标题:秒杀系统设计-学习笔记

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