写点什么

week9- 作业一

用户头像
关注
发布于: 2020 年 12 月 20 日

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

1、定义:JVM垃圾回收就是将JVM堆中的已经不再被使用的对象清理掉,释放宝贵的内存资源。

2、垃圾识别方法:通过一种可达性分析算法进行垃圾对象的识别,具体过程是:从线程栈帧中的局部变量,或者是方法区的静态变量会促发,将这些变量引用的对象进行标记,然后看这些被标记的对象是否引用了其他对象,继续进行标记,所有被标记过的对象都是被使用的对象,而那些没有被标记的对象就是可回收的垃圾对象了。

3、回收方法:

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

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

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

4、JVM实际实现-分代垃圾回收:

4.1、新生代

4.1.1、Eden区-复制算法

4.1.2、From区

4.1.3、To区

4.2、老年代

5、JVM垃圾回收器算法

5.1、串行回收器

5.2、并行回收器

5.3、·并发回收器CMS

5.4、G1回收器

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

1、商业需求:

1.1、为庆祝 ****.com开业退出88小时不间断秒杀活动;

1.2、每小时推出8款商品....

1.3、每款商品供168件,每人限批3件,成交人数56人。

1.4、CCTV黄金广告时间,各种网络,平面媒体轰炸,总广告费:1.5亿。

1.5、接到运营通知,距秒杀开始仅仅5天时间。

2、技术挑战:

2.1、瞬间高并发

2.1.1、8000并发:预估秒杀在线人数可达8000人。

2.1.2、风险:带宽耗尽。

2.1.3、服务器:崩溃,可以理解成自己给自己准备的D.D.O.S攻击。

2.2、秒杀器

2.2.1、第一种:秒杀前不断刷新秒杀页面,直接秒杀开始,抢着下单

2.2.2、第二种:跳过秒杀页面,直接进入下单页面,下单。

3、解决方案:

3.1、服务器准备(距秒杀开始仅五天时间来不及采购)

3.1.1、style服务器(Lighttpd):5台

3.1.2、图片服务器(Nginx集群):5台

3.1.3、静态服务器(Apache集群):10台

3.1.4、交易服务器(JBoss动态集群):10台

3.2、带宽准备

3.2.1、图片出口带宽上限:2.5G(出口带宽支持10G,但图片服务器集群的处理能力:图片服务集群最大并发处理能力X网站平均图片大小=2.5G)

3.2.2、CDN准备:Chinacache沟通;借用CCCC CDN

3.3、图片网络带宽:1.0G-架构目标

3.3.1、新增图片带宽:必须控制在1.0G左右

3.3.2、每件商品秒杀页面的图片总大小不得超过:1000000/(1000 * 8) = 125K/每商品

3.4、网站并发:

3.4.1、单件商品并发:1000【来自运营的预估】

3.4.2、总并发:8(件商品) * 1000(人/商品) = 8000;

3.5、秒杀系统-组成

三个页面组成:秒杀商品列表、秒杀商品介绍、下单

3.6、设计原则

3.6.1、静态化:采用JS自动化更新技术将动态页面转化成静态页面;

秒杀商品list和Detail是静态HTML页面

3.6.2、并发控制,防秒杀器:设置阀门,只放最前面的一部分人进入秒杀系统;

3.6.2.1、阀门:基于TT的计数器;限制进入秒杀页面(1000);限制进入下单页面(100);限制进入支付系统(56);

3.6.2.2、秒杀Detail页面:URL随机;秒杀前2秒放出,脚本生成,秒杀前;1000次访问上限控制[每件商品只放入1000人浏览]

3.6.2.3、下单页面:订单ID,随机;不能直接跳过Detail页面进入。每个秒杀商品,带预先生成的随机Toke作URL参数;如果秒杀过,直接跳到秒杀结束页面;100次访问上限控制【每件商品只能做放入1000人下单】

3.6.3、简化流程:

3.6.3.1、砍掉不重要的分支流程,如下单页面的所有数据库查询;

数据库操作:全部砍掉,原下单页面要访问8次数据库,全部砍掉;

秒杀流程精简-砍掉填写或者选择收货地址,放在秒杀成功后填写;砍掉调用是否开通支付接口,秒杀首页文案提示必须开通。

采用内存缓存-秒杀Offer数据,支付相关信息,缓存。

3.6.3.2、以下单成功作为成功标记。支付流程只要在1天内完成即可。

3.6.4、前端优化:采用YSLOW原则提升页面响应速度。

3.6.4.1、图片合并:8张图片合并1张,CSS偏移展示;减少HTTP请求数,减少请求等待数;减少发送Cookies的量;

3.6.4.2、HTML内容压缩:图片压缩:图片Bytes < 长 * 宽/2250;HTML Header Cache-Control设置;CSS、JS精简,部分直接写在页面中,减少HTTP请求次数;



用户头像

关注

还未添加个人签名 2019.02.26 加入

还未添加个人简介

评论

发布
暂无评论
week9-作业一