写点什么

第九周作业

用户头像
李锦
关注
发布于: 2020 年 08 月 05 日

简述JVM垃圾回收原理



JVM垃圾回收是释放JVM堆中不再被使用的对象所占用的内存空间,JVM使用可达性算法对对象进行识别并标记,通过清理、压缩或复制等方法,采用串行、并行、并发或G1等算法对内存进行回收,在回收过程中会产生STW(Stop The World)现象。






设计一个秒杀系统,主要的挑战和问题有哪些?核心的架构方案或思路有哪些?

秒杀系统面临的挑战和问题有哪些?

面临的挑战:

  1. 瞬时高并发请求处理与系统可用性保障

  2. 数据一致性保障

  3. 资源有限

  4. 快速解决问题思路



面对的问题:

  1. 面对海量用户请求核心系统不崩溃

  2. 商品订单量如何在异步处理中保证数据的一致

  3. 如何规避机器人自动刷单?

  4. 秒杀商品预定时间如何精准

2.2 核心的架构方案或思路有哪些?

方案或思路:

  1. 应对瞬时并发请求的处理与系统可用性保障

问题1:面对海量用户请求核心系统不崩溃

  • 预估用户量和系统资源,优化系统参数,保障系统资源高效协同工作

  • 整体评估现有核心系统能力,为解决方案提供指导

  • 功能页面动静分离,采用CDN等缓存方案,缩短用户请求路线,降低系统服务请求压力

  • 精简页面内容,删除不必要的内容,降低网络带宽消耗

  • 合并css和js等文件,减少用户http请求数量

  • 高并发页面静态化处理,减少不必要的请求

  • 提前缓存热点数据,提升热点数据读取效率

  • 分级控制流量,避免大量的无效请求对核心系统的影响

  • 缓存节点虚拟化处理,降低某一缓存节点出现问题后的影响

  • 确保链路中无单点节点,保障系统高可用

  • 域名独立,方便针对不同请求进行特殊配置

  • 设计有效可行的临时解决方案,保证系统用户可以获得响应。比如做一些答题环节,瞬间降低用户应答请求。



数据的一致性保障



  • 秒杀开始前不提供商品下单功能,秒杀开始生成随机验证信息,防止通过分析下单功能地址,然后通过系统自动抢单

  • 下单环节可以设置验证环节(答题、验证码等),降低一点下单页面瞬时高并发请求量,同时防止机器人自动刷单

  • 商品库存缓存维护,提高商品库存读写效率,降低核心数据库压力

  • 采用消息队列控制实际订单请求处理数量,可在实际缴款环节进行数量校验

  • 分层控制请求数量,减少关键节点的无效请求处理



  • 资源有限

  • 分析不可控因素,提前提出,做好可控预案

  • 平时注意提升自身能力,提高应对能力,超出能力范围内的事情做好评估



用户头像

李锦

关注

还未添加个人签名 2017.11.30 加入

还未添加个人简介

评论

发布
暂无评论
第九周作业