架构师训练营——第 9 周作业
请简述 JVM 垃圾回收原理
JVM 垃圾回收就是在 JVM 堆中的已经不在被使用的对象清理掉,释放内存资源;
JVM 通过一种可达性分析算法进行垃圾对象的识别,对被引用的对象进行标记,那些没有标记的对象就是可回收的垃圾对象了。
JVM 回收垃圾对象占用的资源主要有 3 种方法:1.清理 2.压缩 3.复制
JVM 在具体垃圾回收时会进行分代垃圾回收。具体实现:JVM 将堆空间分成新生代和老年代两个区,新建的对象都存放在新生代,当新生代空间不足时,只对新生代进行垃圾回收,这样需要处理的内存空间就比较小,垃圾回收速度就比较快。
采用串行、并行、并发或 G1 等算法对内存进行回收,在回收过程中会产生 STW(Stop The World)现象。
设计一个秒杀系统,主要的挑战和问题有哪些?核心的架构方案或者思路有哪些?
秒杀系统一般会有如下问题
高并发:短时间高并发,用户不断刷新页面产生重复的请求链接
秒杀地址的隐藏:避免非法用户提前获取地址
带宽限制:网页中大量图片占用大量的带宽资源
高并发导致数据库瘫痪
核心的架构方案
浏览器静态资源缓存。
CDN 缓存静态资源。
秒杀列表、秒杀详情页面静态化。
nginx 限流:进入秒杀详情页面和订单提交页面进行限流,只有少部分人能进去,其它人都直接跳转到秒杀结束页面
评论