写点什么

架构师训练营第九周作业

用户头像
Shunyi
关注
发布于: 2020 年 11 月 22 日

作业一:

(至少完成一个)

  • 请简述 JVM 垃圾回收原理。

JVM 垃圾回收就是将 JVM 堆中的已经不再被使用的对象清理掉,释放宝贵的内存资源。JVM 使用可达性分析算法来侦测哪些对象程序需要进行回收。基本算法为:从线程栈帧中的局部变量,或者是方法区的静态变量出发,将这些变量引用的对象进行标记,然后看这些被标记的对象是否引用了其他对象,继续进行标记,所有被标记过的对象都是被使用的对象,而那些没有被标记的对象就是可回收的垃圾对象了。垃圾回收一般使用分代回收策略,将堆空间分为新生代和老年代,新生代存储那些近期生成的对象,当对象在新生代经过多次回收仍然存在(操过一个阀值),就将这些对象搬运到老年代。垃圾回收一般在新生代进行平凡回收操作,只有满足特定条件才会在老年代进行回收操作(比如新生代回收得不到足够的内存)。新生代一般分为 Eden 区,From 区和 To 区。新内存都在 Eden 区分配,回收时把 Eden 区还在使用的对象拷贝到 From/To 区,如果 From/To 区拷贝不下,就把 Eden 区和 From/To 区还在使用的对象一起拷贝到 To/From 区。


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

主要挑战和问题:

1)高并发带来的风险:网络带宽耗尽,服务器 load 飙升,停止响应,数据库瘫痪。

2)图片,广告在高并发下耗尽网络带宽。

3)第三方秒杀器显著放大并发量。

4)可能存在漏洞,导致用户跳过秒杀页面直接下单。

核心的架构方案或者思路:

1)独立秒杀系统,和原系统隔离

2)简化秒杀系统页面,减少甚至避免实时数据库访问。

3)页面静态化,适合缓存。

4)CDN, 反向代理缓存。

5)截流器,超过一定访问数目,拒绝后面的访问请求。


作业二:

  • 根据当周学习情况,完成一篇学习总结


用户头像

Shunyi

关注

还未添加个人签名 2018.09.18 加入

还未添加个人简介

评论

发布
暂无评论
架构师训练营第九周作业