架构学习-性能相关(一)

141 阅读2分钟

架构决策

xyz 应用扩展

x轴横向扩容

  • 无状态应用,多节点克隆复制
  • 负载均衡器,控制业务负载流量
  • 有状态应用,状态剥离(比如session的处理)

y轴服务分割

  • 前端应用,URL拆分
  • 后端应用,子系统,模块,聚合拆分
  • 后台数据相应进行y轴分割

z轴特征分割

  • 用户userId分割,多节点水平复制
  • 地理位置分割,Set单元化
  • 产品Id分割,SPU/SKU

容量规划(高性能,高并发)

  • 目标设定:业务目标(UV,PV,交易量),系统目标(CPU,内存,网络,磁盘),应用目标(TPS,QPS,Session,并发数)
  • 规划方法:容量评估方法(基线,水位)
  • 实战:压测,监控和预测

性能测试 - 负载测试

  • 测试目标:正常运行压力下的响应时间,资源利用率,稳定性
  • 测试手段:标准(历史基准),环境(QA,准生产,生产),定义(测试案例),执行(自动化),分析(统计),报告(录入),迭代(反复)
  • 测试的核心思想:测试是个长期的过程

性能测试 - 压力测试

  • 测试目标:发现系统的拐点(失效点),远高于正常负载
  • 测试手段:目标,关键服务(关键业务,负载测试瓶颈),负载,(大量测试数据),环境(减少差异),监视,执行,分析(录入)
  • 测试核心思想:关注拐点-服务行为,响应时间,CPU内存磁盘利用率,线程,SQL,交易失败率

APM监控

  • 性能监控:时序数据,纬度聚会,性能指标,报表告警
  • 链路监控:TranceId,出错归因,延时瓶颈
  • 业务追踪:业务,应用,系统关联,告警去重

缓存

读缓存(Cache)

写缓存(Buffer)提高每次写入的io的数据量

  1. 网络缓存
  2. 应用缓存
  3. 对象缓存 image.png

异步

  • 减少等待:磁盘,SQL,API,URL
  • Y轴扩展:微服务解耦,Y轴扩展更随意
  • 削峰填谷:泊松分布,银行队列