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

用户头像
菜青虫
关注
发布于: 2020 年 12 月 06 日
  • 性能测试

    * 主观/客观视角

    * 性能测试指标

        * 响应时间:完成一次请求花费的时间

        * 并发数:同时处理的请求数

         吞吐量(单位时间完成的请求数) = 1000 / 响应时间ms 并发数

        * 性能计数器:CPU、内存、磁盘、网络使用率

    * 性能测试方法

        * 性能测试

        * 负载测试

        * 压力测试

        * 稳定性测试

  • 全链路压测

    * 数据构造:线上数据脱敏,数据预测,限流调用

    * 数据隔离:逻辑隔离(特殊标识), 虚拟隔离(mock), 物理隔离

    * 流量构造:流量平台,运营商CDN节点执行压测

  • 性能优化的分层思想

    * 两个基本原则

        * 你不能优化一个没有测试的软件

        * 你不能优化一个你不了解的软件

    * 一般方法

        * 性能测试,获得性能指标

        * 指标分析,发现性能与资源瓶颈点

        * 架构与代码分析,寻找性能与资源瓶颈关键所在

        * 架构与代码优化,优化关键技术点,平衡资源利用

        * 性能测试,进入性能优化闭环

    * 分层思想

        * 机房与骨干网络

            * 异地多活的多机房架构

            * 专线网络与自主CDN建设

        * 服务器与硬件

            * 更优的CPU、磁盘、内存、网卡

            * 1G网卡 => 10G网卡

        * 操作系统

            * Linux关闭transparent huge page

        * 虚拟机

        * 基础组件

        * 软件架构:缓存、异步和集群

        * 软件代码

  • 操作系统如何处理并发请求

    * 进程/线程分时执行

    * 线程栈保存状态

    * 线程安全

        * 临界区阻塞可能会引起系统崩溃

        * 限流、降级、反应式

  • 锁原语CAS与各类锁

    * if V = E, then V = N; else nothing

    * CAS 系统原语,执行时是连续的,不允许被中断

    * 偏向锁:同步代码被一个线程访问,该线程自动获取锁,降低获取锁的代价

    * 轻量级锁:另一个线程尝试获取的锁是偏向锁时,偏向锁会升级成轻量级锁,其他线程会通过自旋尝试获取,不会阻塞

    * 重量级锁:当自旋到一定次数还未获取,线程进入阻塞,锁升级为重量级锁,重量级锁会让其他申请的线程进入阻塞

    * 多CPU情况下的锁

        * 总线锁:LOCK#信号独占内存

        * 缓存锁:缓存一致性,回写内存被修改时使修改无效

    * 公平锁 v.s. 非公平锁

    * 可重入锁: synchronize锁

    * 互斥锁 v.s. 共享锁

    * 读写锁

    * 悲观锁 v.s. 乐观锁

    * 分段锁

    * 自旋锁

  • 异步编程框架akka

    * Akka用Scala语言编写,同时提供了Scala和Java的开发接口

    * Akka处理并发的方法基于Actor模型,Actor之间通信的唯一机制就是消息传递

    * 异步、非阻塞、高性能的事件驱动编程模型

    * 1GB内存可容纳百万级别个Actor

    * 提供了一套容错机制,允许在Actor出现异常时进行一些恢复或重置操作





用户头像

菜青虫

关注

还未添加个人签名 2017.11.20 加入

还未添加个人简介

评论

发布
暂无评论
架构师训练营第 7 周学习总结