11、性能优化:动静分离,互联网优化利器?

  • no11:与静态页面、动态页面匹配的加速技术有哪些?
    • 静态页面
      • CDN
      • nginx
      • squid/varnish
    • 动态页面
      • 分层架构
      • 服务化架构
      • 数据库,缓存架构
  • no11:动静分离是什么?
    • 静态页面与动态页面分开不同的系统访问的架构设计方法
    • 静态页面,几毫秒返回
    • 动态页面,几百毫秒返回
  • no11:「页面静态化」是什么?如何实施?
    • 把网页内容提前生成相关的 html,用静态页面相关的加速技术来进行加速
    • 适合场景:返回页面结果集有限
    • 不适合场景:返回页面结果集数据量过大,如帖子,搜索等

12、性能优化:读写分离,前台与后台分离

  • no12:什么是读写分离?能解决什么问题?
    • 一主多从,读写分离,主从同步,是一种常见的数据库架构
    • 一般来说,主库,提供数据库的写服务,从库,提供数据库的读服务,主从之间通过某种机制来实现数据库的同步,如 MySQL 的 binlog,一个主从同步集群通常被称为一个「分组」
    • 能解决什么问题?
      • 主要可以线性提升读的性能
  • no12:什么是水平切分?能解决什么问题?
    • 数据库水平切分后,数据库之间没有数据的重合,不需要同步
    • 能解决什么问题?
      • 数据库存储容量提升
  • no12:什么是前台?什么是后台?
    • 前台,用户访问的对外系统
    • 后台,运营访问的对内系统

13、本章小结:百万流量,这些技术够用了

  • no13:早期单体 ALL in one 架构,遇到什么问题?这阶段的优化思路是什么?
    • 性能问题:访问人数多的时候,希望系统快一点
    • 耦合问题:当出现问题的时候,系统不要全部挂掉
    • 思路:
      • 1.技术不炫技,以解决业务问题为导向
      • 2.系统改造尽可能小的架构方案
      • 3.以最快的速度,提升系统的性能,解决遇到的问题
  • no13:单体架构演进:伪分布式,提升性能
    • 三大分离
      • 动静分离
      • 读写分离(引发读写延时新问题)
      • 前台后台分离
  • no13:单体架构演进:垂直拆分,解耦
    • 业务垂直划分
    • 代码垂直划分(子系统解耦)
    • 数据库垂直划分(数据量降低,延时缓解)
    • 研发团队垂直拆分(专业化,效率提升)
  • no13:如何保证垂直拆分后,子系统的高可用?
    • 使用反向代理
    • 子web系统的性能,不再受到单台机器资源限制,可以扩展
    • 子web系统,实现了高可用(伪集群->真集群)
  • no13:真集群后,反向代理如何做负载均衡?
    • 负载均衡方法:随机、轮询、静态权重轮询、动态权重轮询,一致性哈希
    • 负载均衡抓手:四层(转发/交换),七层(转发/交换)
  • no13:反向代理,如何保证高可用?
  • no13:反向代理技术出现之前,接入层如何扩展?
    • DNS 轮询
  • no13:使用多层反向代理后,如何做到继续提升性能?
    • DNS 轮询
  • no13:session 一致性如何保障?
    • session 同步法
    • 客户端存储法
    • 反向代理 hash 一致性
    • 后端统一存储法
  • no13:如何加速静态资源?
    • CDN
Last Updated:
Contributors: Traum Lou