架构师训练营第九周学习总结
JVM
jvm组成架构
堆、栈、方法区、程序计数寄存器
字节码
1.方法调用计数器,超过限制进行编译
2.字节码文件编译过程与sql编译类似
类加载
1.双亲委托
2.自定义类加载器
线程工作内存&volatile
CPU、工作内存、主存;
volatile:可见性、禁止指令重排序
JVM垃圾回收
JVM垃圾回收是将堆内存中不再被使用的对象清理掉,释放内存资源的过程。
JVM通过可达性分析算法进行垃圾对象的识别。
垃圾回收的三种方法:
1). 清理:将垃圾对象占据内存清理掉;空闲列表标记对象;对象碎片
2). 压缩:存活对象拷贝存放在连续内存
3). 复制:堆空间分为两部分;一部分用完的时候,存活对象复制到另一个空间
分代垃圾回收
新生代:eden区、From区、To区 ;YoungGC
通过复制方法进行垃圾回收;对象->eden区->From区->To区
老年代:FullGC
标记-清除,标记-整理方法进行垃圾回收;
5.垃圾回收器算法
1).串行回收器:stop the world;单线程
2).并行回收器:stop the world;多线程
3).CMS:初始标记->并发标记->重标记(stop the world)->并发清理
4).G1: 将堆分为大小相等的 Region,避免全区域的垃圾回收
JVM诊断工具
JPS、JSTAT、JMAP、JStack、JConsole、JVisualVM
Java代码优化
1.谨慎使用多线程
2.竞态条件与临界区
3.Java线程安全
Servlet是单实例,是否线程安全由其是否有多线程共享的成员变量
4.ThreadLocal
5.java内存泄漏
秒杀
秒杀的挑战
1.高并发:宽带耗尽、服务器load高,响应缓慢、数据库瘫痪
2.秒杀器:直接下单
应对
服务器准备、宽带准备
新系统;
图片出口带宽估算;CDN准备
架构目标
图片网络带宽;网站并发
系统组成
秒杀列表、详情、下单页面
设计原则
静态化
并发控制、防秒杀器
简化流程
前端优化
秒杀系统
静态化:定时器将动态页面生成静态页面,推送到静态文件系统
秒杀开始判断:js获取秒杀ID、下单URL
浏览控制器:计数器
秒杀器预防
秒杀URL随机生成;计数器限制访问人数
性能优化
中间件(apache,jboss)调优;页面优化;
应急预案
域名分离;保护核心功能;出错页面
持续优化
采用更轻量/快速的服务器;反向代理;数据分片
宅米性能优化
性能测试
性能评估(推算峰值流量);找出调用高的接口;压测接口 (找到要压测的接口;压测接口;优化到可以承受峰值流量)
性能分析
慢SQL、服务器指标、JVM等资源参数
架构优化
订单冷热分离;性能监控(业务监控);
互联网搜索引擎
互联网搜索引擎整体架构
爬虫系统架构
倒排索引
lucene
索引文件准实时更新;
新增:创建索引;
删除:.del文件标识
更新:删除+新增
ES
支持分布式;
评论 (1 条评论)