架构设计读书笔记-性能篇(一)

概述

计算机的性能,从硬件来说,一个和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

缓存使用需要注意以下几点

你可能感兴趣的:(架构设计读书笔记-性能篇(一))