NingG +

大型网站架构:前言

1. 概要

大型网站的技术架构是什么?

  1. 业务子系统拆分?
  2. 服务化拆分?

常见问题:

  1. 大型网站,关于并发的处理?
  2. 大型网站,跟小的业务系统,有差异吗?有什么特殊的处理?
  3. 大型网站,完整的技术架构,核心模块都有哪些?数据?订单?账户?服务?监控?有哪些衡量维度?

2. 讨论

2.1 讨论形式

2.2 整体汇总

整体的讨论主题核心问题

  1. 大型网站,要讨论哪些问题?
    1. 明确讨论的核心内容
    2. 做好前期热身、统一思路、聚焦问题
  2. 高性能:网站极速响应
    1. 实际意义?业务价值?
    2. 如何监控:响应速度?
    3. 如何优化:响应速度?
    4. 影响响应速度的因素?
    5. 高并发对网站响应速度的影响?
    6. 汇总:工作中,可采用的措施?
  3. 高可用:服务万无一失
    1. 实际意义?业务价值?
    2. 如何监控?
    3. 如何改进?
    4. 原理?
    5. 汇总:工作中,可采用的措施?
  4. 伸缩性:能屈能伸
    1. 实际意义?业务价值?
    2. 什么时候伸缩?
    3. 基本原理?
    4. 汇总:工作中,可采用的措施?
  5. 扩展性:随机应变中间件
    1. 什么场景下,引入哪些中间件?
    2. 常见的中间件,带来的收益?引入的成本?

3. 详细讨论

3.1 主题:高性能

具体:

  1. 目的:达到高性能
    1. 如何量化高性能
      1. 用户角度:响应时间(服务器处理时间+网络传输+浏览器渲染, TP50, TP90, TP99)
      2. 开发人员:服务器处理时间,吞吐量(QPS, TPS, HPS),并发量,性能计算量(CPU, MEM等)
      3. 运维人员:资源利用率
    2. 常见的时间
      1. CPU执行时间:ns~us
      2. 内存读取时间:us?
      3. 网络读取时间:us~ms?
      4. 机械磁盘读取:ms?
      5. 数据库索引:ms?
    3. 并发数:【正在处理】和【等待处理】的线程数量(就绪态和执行态,不包括阻塞状态)
    4. 吞吐量:TPS,QPS,HPS的具体含义???
    5. 并发数 和 吞吐量的关系:非完全正相关,资源的最大限度等影响因素
      1. 以响应时间为参考:最佳运行点(调优点),最大负载点,崩溃点
    6. 性能计数器
      1. 系统负载:(正在执行+等待执行的线程)/ CPU核心数目;也包括其他应用的并发数;0.3, 0.5, 0.7, 1,最好运行在0.5附近
      2. CPU, 内存,磁盘IO等
    7. 大的方面分为:APP级别的指标 和 系统级别的指标
  2. 监控
    1. APP级别
    2. OS和JVM级别
    3. 压力测试
  3. 途径:改进方案
    1. Web前端性能优化:合并请求,缓存,数据大小,渲染机制,CDN加速,……
    2. Server后端性能优化:缓存,消息队列,集群,优化代码,……
      1. 多线程衡量:(CPU执行时间+IO执行时间)/CPU执行时间
    3. 存储性能优化:固态硬盘,数据结构,RAID,HDFS

3.2 主题:高可用

具体:

问题:

3.3 主题:伸缩性

具体:

3.4 主题:扩展性

具体:

4. 参考资料

Top