写点什么

架构师训练营 1 期 - 第九周作业(vaik)

用户头像
行之
关注
发布于: 2020 年 11 月 22 日
架构师训练营 1 期 - 第九周作业(vaik)
  • 请简述 JVM 垃圾回收原理。

  • JVM 的垃圾回收是指堆中不再使用的对象进行自动清理。

  • 首先是如何找到堆中不再使用的对象,目前 JVM 全用的对象可达性分析算法来确定对象是否可回收。

  • 找到可回收的对象后,如何进行清理,JVM 有三种方式进行清理

  • 标记-清除

  • 标记-复制

  • 标记-整理

  • 依据 JVM 的堆中绝大多数对象都是“朝生夕死”的特性,JVM 使用分代垃圾回收机制,对象创建后都先放入新生代,经过一定周期后还存在,就移入老年代

  • 因为在标记为垃圾对象的时候,会 stop world,严重影响 JVM 正在执行的线程的效率和性能,以及多核 CPU 的普及,所以垃圾回收器也不断在演进和适合不同场景,支持并发的垃圾回收器如 CMS GC,把堆折分成更小块的垃圾回收器如 G1GC


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

主要挑战争和要解决的核心问题

  1. 秒杀系统如何应对百倍甚至几百倍的并发爆增?

  2. 如何不影响旧的业务系统?

  3. 预防刷数据和自动化并发下单等安全防患。

基本思路和解决方案

  1. 单独部署,与原来系统物理隔离,下单成功后共用支付系统相关的逻辑。

  2. 资源静态化,通过 CDN 缓存加速,优化前端减少请示次数,节省网络资源消耗。

  3. 提升带宽,升级服务器配置。

  4. 并发控制,设置阀门,只放最前面一部分人进入秒杀系统,三道阀门。

4.1 限制进入秒杀页面

4.2 限制进入下单页面

4.3 限制进入支付系统

5.减少不必要的数据库读写,后端生成静态页面。

5.1 生成的静态页面的 URL 随机

5.2 秒杀前 2 秒写入随机的 URL 至请求页面

5.2 订单 ID 随机

5.3 不能直接跳过秒杀 Detail 页面进

5.4 如果秒杀过,直接进入秒杀结束页面


用户头像

行之

关注

还未添加个人签名 2018.09.18 加入

还未添加个人简介

评论

发布
暂无评论
架构师训练营 1 期 - 第九周作业(vaik)