第九周作业
简述JVM垃圾回收原理
JVM垃圾回收是释放JVM堆中不再被使用的对象所占用的内存空间,JVM使用可达性算法对对象进行识别并标记,通过清理、压缩或复制等方法,采用串行、并行、并发或G1等算法对内存进行回收,在回收过程中会产生STW(Stop The World)现象。
设计一个秒杀系统,主要的挑战和问题有哪些?核心的架构方案或思路有哪些?
秒杀系统面临的挑战和问题有哪些?
面临的挑战:
瞬时高并发请求处理与系统可用性保障
数据一致性保障
资源有限
快速解决问题思路
面对的问题:
面对海量用户请求核心系统不崩溃
商品订单量如何在异步处理中保证数据的一致
如何规避机器人自动刷单?
秒杀商品预定时间如何精准
2.2 核心的架构方案或思路有哪些?
方案或思路:
应对瞬时并发请求的处理与系统可用性保障
问题1:面对海量用户请求核心系统不崩溃
预估用户量和系统资源,优化系统参数,保障系统资源高效协同工作
整体评估现有核心系统能力,为解决方案提供指导
功能页面动静分离,采用CDN等缓存方案,缩短用户请求路线,降低系统服务请求压力
精简页面内容,删除不必要的内容,降低网络带宽消耗
合并css和js等文件,减少用户http请求数量
高并发页面静态化处理,减少不必要的请求
提前缓存热点数据,提升热点数据读取效率
分级控制流量,避免大量的无效请求对核心系统的影响
缓存节点虚拟化处理,降低某一缓存节点出现问题后的影响
确保链路中无单点节点,保障系统高可用
域名独立,方便针对不同请求进行特殊配置
设计有效可行的临时解决方案,保证系统用户可以获得响应。比如做一些答题环节,瞬间降低用户应答请求。
数据的一致性保障
秒杀开始前不提供商品下单功能,秒杀开始生成随机验证信息,防止通过分析下单功能地址,然后通过系统自动抢单
下单环节可以设置验证环节(答题、验证码等),降低一点下单页面瞬时高并发请求量,同时防止机器人自动刷单
商品库存缓存维护,提高商品库存读写效率,降低核心数据库压力
采用消息队列控制实际订单请求处理数量,可在实际缴款环节进行数量校验
分层控制请求数量,减少关键节点的无效请求处理
资源有限
分析不可控因素,提前提出,做好可控预案
平时注意提升自身能力,提高应对能力,超出能力范围内的事情做好评估
评论