一、如何衡量高并发的系统性能
1.吞吐量Throughput:
2.响应延迟Response Delay:
二、性能优化目标
1.缩短响应时间
2.提高系统并发数(提升吞吐量)
3.系统处理合理状态(机器利用率)
随着系统压力增加(X坐标:在线业务人数),
Y坐标:绿色机器利用率,紫色并发数,蓝色:响应时长
响应时间和并发数据在左边线位置达到优化目标,之后利用率60%提升非常缓慢,当超过右侧线是,系统性能急剧下降。
三、性能优化手段
1.空间换时间:当系统处理时间是瓶颈时使用。
例如:增加缓存,复用计算结果,降低时间开销,因为CPU的时间较内存容量而言更加昂贵。
2.时间换空间:当数据大小是瓶颈时使用。
例如:a.网络传输开启gzip压缩,b.页面根据版本号只下载更新数据
3.找到系统瓶颈:分析业务流程,找到关键路径,分解优化
例如:调用了多少RPC接口,载入多少数据,使用什么算法,非核心流程是否异步化,没有依赖逻辑是否并行化
四、性能优化层次
原则:从整体到细节,从全局视角到局部视角
1.架构设计层次优化:如何拆分系统;如何使各个部分负责更加均衡;充分发挥硬件性能优势;减少系统内部开销
a.系统微服务化
垂直拆分:网关层,业务逻辑层,数据访问层,判断实现需要加入MQ改造为异步化系统
水平拆分:先完成服务无状态化改造,进行水平扩展
b.调用链梳理,热点数据靠近用户
c.分布式cache,多级多类型缓存
d.提前拒绝,保证柔性可用
e.容量规划
f.分库分表,读写分离,数据分片
2.算法逻辑层次优化
a.关注算法是否高效,逻辑优化,空间时间优化,任务并行,无锁数据结构
b.空间换时间:ThreadLocal
c.时间换空间:采用压缩算法数据,增加逻辑计算,只传输结果减少数据传输
3.代码层次优化
a.代码实现逻辑是否合理
b.对象创建多少
c.循环是否高效
d.cache是否复用
e.是否重用计算结果
四、实战举例
朋友圈Feed系统