week9-homework
0. 问题
请简述 JVM 垃圾回收原理。
设计一个秒杀系统,主要的挑战和问题有哪些?核心的架构方案或者思路有哪些?
1. JVM 垃圾回收原理
过程如下:
先 stop the world
然后通过可达性分析算法找到可回收的对象
最后将可回收对象占用的内存回收
恢复程序正常运行
可达性分析算法在不同的硬件环境和历史时期下有不同的版本和实现,但思路都是相似,先从 GC root 开始标记被使用的对象,通过该对象继续寻找引用了的对象继续标记,所有被标记过的对象都是被使用的对象,剩下那些没有被标记的对象则是可回收对象。
可达性算法的差异主要在于:
stop the world 的影响范围和时间
标记过程是并行还是串行
内存空间分配管理的方式
参考资料
美团技术团队文章Java Hotspot G1 GC的一些关键技术,2016 年 09 月 23 日
2. 设计秒杀系统
2.1 主要的挑战和问题?
时间紧、预算有限、远超系统负载的活动流量都是常见的挑战和问题。
2.2 核心的架构方案或者思路有哪些?
首先应该是合理正确地理解运营活动的内容、过程,准确预测出活动的并发压力,找出系统的瓶颈。
在明确评价的场景下做好优化和预案,包括
- 降低对动态页面和系统的并发访问压力
- 通过 CDN 等方式,将能够静态化的页面部署到 CDN,降低高峰访问对流量的压力
- 做好对秒杀器等高频并发工具的处理,使其不能在非法时间到达动态页面和系统
- 通过分解秒杀过程,增加阀门控制进入下一轮操作的请求数量
- 做好应急预案
评论