写点什么

架构师训练营第九周作业

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



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

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



1.JVM垃圾回收原理

1.1 如何知道哪些对象要回收





java 采用可达性分析算法识别哪些对象需要回收,从对象的根出发(线程栈中的局部变量和方法区的静态变量)向下搜索引用的对象,标记引用的对象,引用的对象再标记引用其它的对象,以此类推,直到标记完所有的对象,哪些未被标记的对象就是可回收的对象,可达的对象就是引用的对象。

1.2 如何回收

清理:JVM将垃圾对象的占用的空间标记为空闲,记录在到一个空闲的列表中,当需要创建对象的时候,从空闲的地址列表中分配一个地址空间创建对象。

压缩:从堆的头部开始将存活的对象放在连续的地址空间中,那么剩余的空间就是连续空闲的地址空间。

复制:将堆的空间分成两个部分,其中一个空间用于创建对象,当对象创建满时,将标记过可用的对象复制到另外一个空间中。



1. 3 回收过程中的空间如何管理

分代回收

新生代:初始对象通常在新生代创建,绝大多数对象会在新生代被回收释放。如果在新生代还没被回收的对象,也就是还在引用的对象,就会放在老年代。新生代的垃圾回收是Minor GC

老年代:旧生代与新生代不同,对象存活的时间比较长,比较稳定,老年代的对象回收是 Full GC

永久代:指内存的永久保存区域,主要存放Class和Meta(元数据)的信息。



1.4 用什么样的过程进行回收

1.串行回收器 stop the word ,垃圾回收的时候所有的jvm所有的工作都停止。

2.并行回收器

3.并发回收器CMS

4.G1回收器

2.秒杀

2.1主要挑战

  • 网络带宽耗尽

  • 服务器Load飙高, 停止响应。

  • 数据库瘫痪

  • 秒杀器问题

2.2主要思路

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

style服务器(Lighttpd集群) : 5台

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

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

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

2.2.2 带宽准备

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

CDN准备:

1.图片网络带宽: 1.0G

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

每件商品秒杀页面的图片总大小不得超过: 1000000/(1000*8) = 125K/每商品2.网站并发:

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

总并发:8(件商品)X1000(人/商品)=8000

2.2.3秒杀系统:组成

简单系统:

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

2.2.4 静态化

采用JS自动更新技术将动态页面转化为静态页面

并发控制,防秒杀器

设置阀门,只放最前面的一部分人进入秒杀系统

简化流程

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

· 以下单成功作为秒杀成功标志。支付流程只要在1天内完成即可。前端优化

采用YSL .OW原则提升页面响应速度

2.2.5秒杀器的预防

秒杀Detail页面

URL:随机

秒杀前2秒放出,脚本生成,秒杀前。

1000次访问上限控制【每件商品只能放入1000人浏览】

下单页面:

订单ID,随机。

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

每个秒杀商品,带预先生成的随机Token 作URL参数。

如果秒杀过,直接跳到秒杀结束页面。

100次访问,上限控制【每件商品只能放入1000人下单】。

2.2.6 Web Server 调优

2.2.7 秒杀静态页面优化

图片合并

8张图片合并成1张,CSS偏移展示。· 减少HTTP请求数,减少请求等待数。减少发送Cookies的量。

HTML内容压缩

图片压缩:图片Bytes ,长X宽/2250

HTML Header Cache Control设置

CSS, JS精简

CSS, JS精简到极致,部分直接写在页面中,减少HTTP请求次数。

2.2.8下单页面优化

数据库操作:全部砍掉

原下单页面要访问8次数据库,全部砍掉。

秒杀流程精简

砍掉填写或选择收货地址,放在秒杀成功后填写。

砍掉调用是否开通支付接口,秒杀首页文案提示必须开通。

采用内存缓存

秒杀Offer数据,支付相关信息,缓存。

2.2.9交易系统性能优化

交易系统调优目标:

关闭KeepAlive (分析交易系统accesslog,用户在短时间内连续点击概率很低)JVM优化

优化CMS垃圾回收器的参数

消灭Top10 Bottlenecks

➢Velocity参数调优

➢采用DBCP1.4替换C3P0

Offer产品参数的XML解析

2.2.10二跳页面的优化

XXXX.com其他页面

前端优化: Yslow 规则调优

➢减少HTTP请求,合并JS, CSS,图片,充分利用浏览器缓存。图片压缩,公式:

避免发送Cookies

交易系统优化

普通订单管理列表和XXXX秒批订单管理列表分离

禁止用模糊查询功能

2.2.11 应急预案

域名分离,独立域名,不影响XXXX原有业务。

Style集群: style.XXXX.china. XXXX.com

图片服务器集群: img.XXXX.china.XXXX.com

静态页面集群: page.XXXX.china.XXXX.com

出问题直接把XXXX相关域名卡掉,所有请求跳到万能出错页面。

机动服务器10台,备用。

拆东墙补西墙战略

5天时间来不及采购服务器,因此SA待命,随时准备将非核心应用集群的冗余服务器下线,加入到秒杀集群。

壁虎断尾策略

所有办法均失效的情况下,例如流量耗尽。

非核心应用集群统统停止服务,如资讯,论坛,博客等社区系统。

保住首页,OfferDetail,旺铺页面等核心应用的可用性。

万能出错页面:秒杀活动已经结束

任何出错都302跳转到此页面



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

关注

还未添加个人签名 2018.04.25 加入

还未添加个人简介

评论

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