【架构师训练营 - 作业 -9】

用户头像
小动物
关注
发布于: 2020 年 08 月 05 日



作业一:

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



java对象创建后即在内存中申请的一块空间,对象可能被多个地方引用达到重复使用的效果,如经典的String设计。但当某一个对象无人使用时,即为垃圾,需要进行清理方便后续逻辑需要的内存空间。



清理垃圾首先需要找到垃圾,jvm中使用的是可达性算法,找打哪些对象还在使用,并标记

垃圾回收的目的是清理不要的对象或留下需要的对象。对应jvm中的直接清理不可达对象,或复制出正在使用的对象抛弃原内存空间。



在这个主思路下,对每个步骤进行优化。如可达性算法分多次执行,每次找到不同深度的对象;如清理时将内存分区,并发处理等。



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



  • 评估实际需求

秒杀系统听起来是一个很高级又很普遍的系统。需要摸清实际需求,那些步骤真正会面临压力,哪些步骤其实并不会受到太大影响等。

  • 摸清现有服务器的性能。如何估算即将要面对的服务器压力

了解了后才能针对性的优化。

  • 如何不对现有结构造成较大冲击

秒杀为特殊场景的需求,非一个普通公司的普遍需求,平时运行的系统如果都完美实现秒杀的场景性价比很低。所以建议秒杀自身的逻辑可以单独模块处理。

  • 高并发

秒杀最直接的就是短时间大量用户涌入。而实际商品数量有限,即大量的请求实际是无效、重复的。所以可以逐级限流,提交最终请求中有效请求的比例。如首页若有商品展示,就可以直接写死无需请求后端,减少大量重复性请求。当然若担心部分信息变更可以考虑别的方案,如请求时只是获取版本号,通过版本号更新商品数据等。

  • 大流量

大量用户涌入后必然会带来大流量,至少会有一个介绍或秒杀页。尽可能的简化页面,缩减页面的大小,同时将页面大小的大头--图片做好缓存。如使用CND。

  • 防止活动规则被破坏、钻漏洞

如提前进入活动页、绕开各种前置判断直接达到最后一步等等,需要提前预判,并规避或准备应对措施。

  • 服务器监控

防止预估错误,导致资源不足。

  • 应急预案

在资源不足时,需要有一定的应急预案保证公司正常业务顺利进行



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

小动物

关注

还未添加个人签名 2017.12.12 加入

还未添加个人简介

评论

发布
暂无评论
【架构师训练营 - 作业 -9】