在我看来,高性能指的是,我们的系统能够在尽可能短的时间内完成用户的请求,也就是说latency尽可能的低。
如果说系统能够支撑更大的吞吐量,能够承载更多的同时在线。我们除了降低latency,还可以考虑加机器(如果还没有reach到某个系统平瓶颈的前提下)
提高吞吐量
增加并发进程数
注意:无限增加,不会无限提升性能(对系统的扩展性有要求)
减少响应时间
IO密集型:优化数据库索引、加缓存
CPU密集型:优化算法时间复杂度、减少不必要运算等
并发读的核心优化理念是尽量减少用户到服务端来“读”数据,或者让他们读更少的数据;
并发写的处理原则也一样,它要求我们在数据库层面独立出来一个库,做特殊的处理。
从一个架构师的角度来看,要想打造并维护一个超大流量并发读写、高性能、高可用的系统,在整个用户请求路径上从浏览器到服务端我们要遵循几个原则,就是要保证
- 用户请求的数据尽量少
- 完成这个请求的路径尽量短、依赖尽量少 =》 上游到下游的请求数尽量少
也就两个大的方向:提升单次效率、减少不必要的请求
- 动静分离方案(移除无关依赖、减少请求)
- 热点的发现与隔离(缩短热点的服务路径)
- 请求的削峰与分层过滤(异步化,减少无必要的依赖)
- 服务端的极致优化(缩短热点的服务路径)