技术架构(2)-系统架构优化思路
在系统代码正确的前提下,如果系统性能不高,P8课建议从这几个方面考虑优化。
- 缓冲(buffer)。主要针对写入操作,避免每次写入都去操作磁盘。计算机的随机访问,cpu是纳秒级,内存是微秒级,磁盘是毫秒级。很多大数据技术都是数据来了先写内存,积累一定时间或者是数据量,再一次写入磁盘,减少频繁IO的性能开销。
- 缓存(cache)。主要针对读取操作,避免每次读取都去操作磁盘。缓存尽量大一些,以提高命中率,减少磁盘操作。
- 复用(pool)。主要针对各种资源的创建销毁操作,一次创建重复使用。比如,连接池、线程池、常量池等等。
- 分治(sharding)。主要针对超出单机处理能力的场景。把一个很大的任务切分成小块,多台机器并行处理,汇总结果。
- 亲密(sticky)。把某个终端的请求全部负载到同一台服务器上,避免数据在不同服务器之间交换、复制。一般来说,在线联机游戏都是这么做的,掉线之后重连,还在原来的房间(主机内存中)。
- 权衡(trade-off )。针对不同的场景,选择最适合的技术。