[架构笔记]-1-秒杀笔记

部分内容来源于许令波老师在网上的分享,这里是我做的一些笔记:

秒杀主要解决两个问题:

  • 一个是并发度
  • 一个是并发写

秒杀系统的整体架构原则:

  • 高性能
  • 一致性
  • 高可用

秒杀系统应该注意的架构原则:

  • 数据要尽量少
    • 请求数据
    • 响应数据
    • 压缩数据
    • 编码数据
    • 序列化数据
  • 请求要尽量少
    • 数据请求
    • 资源请求
    • 三次握手
    • DNS解析
    • 合并请求
  • 路径要尽量短
  • 依赖要尽量少
    • 系统分级依赖( 高可靠性分级尽量不要依赖低可靠性系统 )
  • 不要有单点
    • 应用无状态
    • 参数配置化
    • 配置中心

架构改造:

  • 独立部署
  • 独立集群
  • 独立缓存
  • 秒杀答题防作弊
  • 动静分离(不用每次刷新整个页面)
  • 本地缓存(一般是静态数据)
  • 限流保护

瓶颈:

  • 10W级别加缓存
  • 100W级别 还需要考虑网络因素

减库存的方式:

  • 下单减库存
  • 付款减库存
  • 预扣库存

减库存问题:

  • 下单减库存:恶意下单问题,成交减少
  • 付款减库存:超卖问题,体验较差
  • 预扣库存+安全反作弊模式可以有效解决前面两个问题

减库存优化:

  • 库存缓存到cache(一般不需要精确的一致性)
  • 本地内存cache 解决大并发读
  • 逻辑非常简单可以使用缓存减库存
  • 多种数据要同时减必须用数据库事务(热点商品放到单独的库中,不要影响别人)

你可能感兴趣的:(架构思想,架构,学习,java)