架构师训练营第九周学习总结

用户头像
张明森
关注
发布于: 2020 年 08 月 01 日

JVM

jvm组成架构

堆、栈、方法区、程序计数寄存器



字节码

1.方法调用计数器,超过限制进行编译

2.字节码文件编译过程与sql编译类似

类加载

1.双亲委托

2.自定义类加载器

线程工作内存&volatile

CPU、工作内存、主存;

volatile:可见性、禁止指令重排序

JVM垃圾回收

JVM垃圾回收是将堆内存中不再被使用的对象清理掉,释放内存资源的过程。

  • JVM通过可达性分析算法进行垃圾对象的识别。

  • 垃圾回收的三种方法:

  • 1). 清理:将垃圾对象占据内存清理掉;空闲列表标记对象;对象碎片

    2). 压缩:存活对象拷贝存放在连续内存

    3). 复制:堆空间分为两部分;一部分用完的时候,存活对象复制到另一个空间

    1. 分代垃圾回收

    新生代: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.秒杀器:直接下单

    应对

    1. 服务器准备、宽带准备

    新系统;

    图片出口带宽估算;CDN准备

    1. 架构目标

    图片网络带宽;网站并发

    1. 系统组成

    秒杀列表、详情、下单页面

    1. 设计原则

    静态化

    并发控制、防秒杀器

    简化流程

    前端优化

    1. 秒杀系统

    静态化:定时器将动态页面生成静态页面,推送到静态文件系统

    秒杀开始判断:js获取秒杀ID、下单URL

    浏览控制器:计数器

    1. 秒杀器预防

    秒杀URL随机生成;计数器限制访问人数

    1. 性能优化

    中间件(apache,jboss)调优;页面优化;

    1. 应急预案

    域名分离;保护核心功能;出错页面

    1. 持续优化

    采用更轻量/快速的服务器;反向代理;数据分片

    宅米性能优化

    1. 性能测试

    性能评估(推算峰值流量);找出调用高的接口;压测接口 (找到要压测的接口;压测接口;优化到可以承受峰值流量)

    1. 性能分析

    慢SQL、服务器指标、JVM等资源参数

    1. 架构优化

    订单冷热分离;性能监控(业务监控);

    互联网搜索引擎

    互联网搜索引擎整体架构

    爬虫系统架构

    倒排索引

    lucene

    索引文件准实时更新;

    新增:创建索引;

    删除:.del文件标识

    更新:删除+新增

    ES

    支持分布式;

    用户头像

    张明森

    关注

    还未添加个人签名 2017.10.16 加入

    还未添加个人简介

    评论 (1 条评论)

    发布
    用户头像
    请添加“极客大学架构师训练营标签”,便于分类~
    2020 年 08 月 03 日 14:23
    回复
    没有更多了
    架构师训练营第九周学习总结