写点什么

架构师训练营 - 第九周 - 作业

发布于: 2020 年 08 月 05 日

  

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

JVM垃圾回收就是将JVM堆中的已经不再使用的对象清理掉,释放出内存资源。

JVM通过一种可达性反洗算法进行垃圾对象的识别,具体过程如下:

从线程栈帧中的局部变量,或者是方法区的静态变量出发,将这些变量引用的对象进行标记,然后看这些被标记的对象是否引用了其他对象,继续进行标记。所有被标记过的对象都是被使用的对象,而那些没有被标记的对象就是可回收的垃圾对象了。

进行完标记之后,JVM就会对垃圾对象占用的内存进行回收,回收主要有三种方法

清理:将垃圾对象占据的内存清理掉,其实JVM并不会真的将这些垃圾内存进行清理,而是将这些垃圾对象占用的内存空间标记为空闲,记录在一个空闲列表里,当应用程序需要创建新对象的时候,就从空闲列表中找一段空闲内存分配给这个新对象。

压缩:从堆空间的头部开始,将存活的对象拷贝放在一段连续的内存空间中,那么其余的空间就是连续的空闲空间

复制:将堆空间分成两部分,只在其中一部分创建对象,当这个部分空间用完的时候,将标记过的可用对象复制到另一个空间中





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

高并发下的应用、数据库负载

 用户在几乎同时访问秒杀页面,对于秒杀系统的稳定性威胁最高

安全性

 秒杀页面地址,秒杀的规则等都是需要提前设计好规则,秒杀页面可以选在在秒杀开始之前再进行自动随机生成,对于秒杀页面访问次数以及IP也可以做一些限制。以防止刷单等情况出现

可能存在超卖的情况

高并发下的库存计算在进行分布式事务计算过程中,会出现超卖情况

对现有系统冲击

秒杀系统在高并发情况下的安全性稳定性都在接受考验,因此对现有稳定业务必然造成影响。一旦秒杀系统出现问题,会连累其他现有系统。

网络带宽

在进行秒杀项目之前,需要确立秒杀系统的网络带宽的最大升级量,以支持高并发场景下的带宽需求



架构设计思路:

秒杀系统的用户更关心如何更快速的秒到商品,而不是浏览商品详情等非常细节的用户体验,因此秒杀系统的设计应该 尽可能的简单。

1.商品页面购买按钮只在秒杀活动开始时才点亮,其他时刻均为灰色,不可点击。采用JS文件引用,将秒杀是否开始的标志和下单页面URL的随机数参数放到该JS文件中,当秒杀开始的时候生成一个新的JS文件冰杯浏览器加载。该JS采用随机版本号,并且不被浏览器、CDN和反向代理的缓存

2.下单表单购买数量只能是一,送货地址和付款方式都设置为用户默认,并且允许订单提交后修改。只有第一个提交的订单发送给网站的订单子系统,其余用户提交恬淡后只能看到秒杀页面



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

还未添加个人签名 2018.04.28 加入

还未添加个人简介

评论

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