架构师 0 期 Week9 作业 1
JVM 垃圾回收的目的是释放内存空间,提高内存使用效率,方法是清理堆中不再使用的对象。过程是先识别再回收。识别是对堆中对象做可达性分析,从栈帧中局部变量或方法区静态变量出发,标记其引用对象,再标记引用对象的引用,长此往复。剩下的未标记对象即垃圾对象。回收分清理、压缩、复制三种方法。清理把垃圾对象所在空间标记为空闲。压缩把存活对象统一整理到一段连续空间中。复制将对空间一分为二,只用其中一个,将其用尽后启用另一个空间,并把标记对象复制过去。
秒杀系统的主要挑战在几秒钟的极端条件下保持系统性能,杜绝不合规操作和维护系统公平。秒杀开始的几秒,网络带宽和网站并发量瞬时增加,增加用户网络延迟造成系统崩溃增加用户网络延迟甚至导致活动失败。此外秒杀器等不合规应用会让原本不堪重负的系统雪上加霜,还会导致系统公平性难以为继,让原本增加企业流量的活动适得其反。
解决思路是预防、优化和应急三方面入手。预防方面要用倒计时页面静态化、设置页面阀门对后续访问静态返回失败页面来降低秒杀前期和后期负荷。用随机 URL 防秒杀器。优化方面,合并商品图片,压缩 HTML 内容,精简 CSS、JS 代码,去掉下单页面对数据库的多余访问。应急方面做到域名分离,备用服务器,预备关停非核心应用,启用万能出错页等。
评论