概述
计算机的性能,从硬件来说,一个和IO相关(磁盘、内存),一个和计算能力相关(CPU、GPU)。说到软件的性能,也可以理解为这两个方面,即存储和计算。
一、存储高性能
1、关系数据库
1)读写分离
定义:将数据库的读写操作分散到不同的节点上。
基本实现:
(1) 一般采用主从集群的方式,一主多从,主可以进行读写操作,从只负责读
(2) 主通过复制的方式同步写的数据到从,每个主从节点需要保存完整的数据
常见问题:
(1)主从复制延迟。主节点写完成后,如果有大量数据需要同步,就会出现延迟现象,从从库读取就会出现读取不到的现象。
(2)主从复制失败。异常情况,如网络瞬断,从节点异常等,会出现数据复制失败的情况。
解决方法:
(1)复杂延迟可以采用关键业务,如注册登录从主节点访问,其它从从节点访问,避免关键流程错误
(2)复制失败的异常情况,可以启动定时任务专门进行主从节点数据同步。
其它流程:
主节点异常情况下,需要重新进行选主。
实现示例:
淘宝的开源TDDL:https://developer.aliyun.com/article/25457?spm=a2c6h.14164896.0.0.43b97090xkbShc
2)分库分表
定义:单个数据库服务器存储不足,可以将存储分散到多台服务器上,可以通过分库或分表的方式。
分库/分表方法(吐槽一下简书的表格太难弄了,就截图吧):
2、NoSQL
关系数据库的短板:
1)、存储按行记录,不方便存储数据结构
2)、schema扩展不方便
3)、大数据下IO很高
4)、全文搜索功能弱
3、缓存
存储系统性能不满足要求的情况下,可以通过缓存来加强性能,典型场景:
1)动态显示的数据,如在线人数
2)读多写少,如微博一条数据,写只有1条,读可能成千上万。
典型产品: Memcache
缓存使用需要注意以下几点: