架构决策
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的数据量
- 网络缓存
- 应用缓存
- 对象缓存
异步
- 减少等待:磁盘,SQL,API,URL
- Y轴扩展:微服务解耦,Y轴扩展更随意
- 削峰填谷:泊松分布,银行队列