架构师训练营 1 期 - 第九周作业(vaik)

- 请简述 JVM 垃圾回收原理。 
- JVM 的垃圾回收是指堆中不再使用的对象进行自动清理。 
- 首先是如何找到堆中不再使用的对象,目前 JVM 全用的对象可达性分析算法来确定对象是否可回收。 
- 找到可回收的对象后,如何进行清理,JVM 有三种方式进行清理 
- 标记-清除 
- 标记-复制 
- 标记-整理 
- 依据 JVM 的堆中绝大多数对象都是“朝生夕死”的特性,JVM 使用分代垃圾回收机制,对象创建后都先放入新生代,经过一定周期后还存在,就移入老年代 
- 因为在标记为垃圾对象的时候,会 stop world,严重影响 JVM 正在执行的线程的效率和性能,以及多核 CPU 的普及,所以垃圾回收器也不断在演进和适合不同场景,支持并发的垃圾回收器如 CMS GC,把堆折分成更小块的垃圾回收器如 G1GC 
- 设计一个秒杀系统,主要的挑战和问题有哪些?核心的架构方案或者思路有哪些? 
主要挑战争和要解决的核心问题
- 秒杀系统如何应对百倍甚至几百倍的并发爆增? 
- 如何不影响旧的业务系统? 
- 预防刷数据和自动化并发下单等安全防患。 
基本思路和解决方案
- 单独部署,与原来系统物理隔离,下单成功后共用支付系统相关的逻辑。 
- 资源静态化,通过 CDN 缓存加速,优化前端减少请示次数,节省网络资源消耗。 
- 提升带宽,升级服务器配置。 
- 并发控制,设置阀门,只放最前面一部分人进入秒杀系统,三道阀门。 
4.1 限制进入秒杀页面
4.2 限制进入下单页面
4.3 限制进入支付系统
5.减少不必要的数据库读写,后端生成静态页面。
5.1 生成的静态页面的 URL 随机
5.2 秒杀前 2 秒写入随机的 URL 至请求页面
5.2 订单 ID 随机
5.3 不能直接跳过秒杀 Detail 页面进
5.4 如果秒杀过,直接进入秒杀结束页面












 
    
评论