架构师训练营 -week9- 作业

用户头像
晓-Michelle
关注
发布于: 2020 年 08 月 02 日
架构师训练营-week9-作业



1、请简述JVM垃圾回收原理。

JVM垃圾回收主要是通过一种可达性分析算法从栈帧的局部变量或方法区的静态变量开始进行标记是否有引用,如果有引用则标记为有引用对象。如此遍历下来,没有被标记的则为可回收的垃圾对象。

回收过程主要包括三个步骤清理、回收、复制。

由于大部分的对象的生命周期都很短,例如web项目请求进入了才会开启一个线程,请求结束,线程的生命周期也结束。因此针对线程共享的Java堆、方法区的对象,使用分代进行管理。

新生代主要分三个区:Eden区、From区、To区。每个新创建的对象,都会被放置在新生代的Eden区,待Eden区塞满了,就对Eden区的对象进行可达性分析,将被标记的对象都复制到From区,再继续在Eden区放新增对象。待Eden区塞满了,就对Eden区与From区的对象进行标记,将被标记的对象都复制到To区,再继续在Eden区塞新增对象。待Eden区再次塞满,则对Eden区与To区的对象进行标记,将被标记的对象都复制到From区。经过多次拷贝仍是被标记的对象,则会被复制到老年代。

如此反复拷贝,直到任意两个区的被标记对象无法塞进第三个区中时,则触发全量垃圾回收,对新生代、老年代的对象进行标记清理回收复制。

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

主要面临的挑战有对现有网站业务造成冲击、高并发下数据库过载、网络及服务器带宽过载以及如何保证下单页面的ur在秒杀之前不被任何人知道。

首先独立部署秒杀系统避免现有网站业务受到冲击,其次针对秒杀商品页面静态化,租借秒杀活动所需的网络带宽以及cdn的出口带宽,最后由服务器生成的随机数作为参数,动态生成随机的下单页面URL。

再一个,在秒杀开始前,为了保证公平性,需对秒杀开始时间进行控制。由定时服务器向静态资源服务器推送秒杀开始的商品编码的js文件,当用户刷新页面时,浏览器获取新的相关js文件,即对应的商品秒杀活动开始。

而架构的核心思想是对秒杀活动的每个节点进行限流。

秒杀开始前,对浏览页面的图片进行合并,降低图片请求的次数。

秒杀开始后,用户端的操作流程应一律简化,使用户能够更快速地提交订单。

针对进入秒杀页面、进入下单页面、支付三个环节进行限流,任意一个节点被限流的用户将收到秒杀结束的请求响应。



发布于: 2020 年 08 月 02 日 阅读数: 33
用户头像

晓-Michelle

关注

还未添加个人签名 2020.05.30 加入

还未添加个人简介

评论

发布
暂无评论
架构师训练营-week9-作业