1. 分布式模型
1.1 分片
特点:
将不同用户需要访问不同部分的数据放于不同的服务器当中,来实现横向扩展。
需要解决的问题:
l 怎样存放数据才能保证用户基本上只需从一台服务器上获取。之所以设计聚合这一结构,就是为了把那些经常访问的数据放在一起。
l 数据节点的分布,知道访问者处于某个地理范围内,保证从一台服务器上访问,节点分布在全球各地,北京的用户从北京的节点访问即可。
l 保持负载匀衡,将聚合的数据均匀的分布在各个节点。
优点:
同时提升读取和写入性能、提升横向扩展写入能力。
缺点:
降低数据库的错误恢复能力,如某节点的数据出错,那么该节点的数据无法访问,导致访问此数据的用户受限。
1.2 主从复制
不适合频繁写入操作。
特点:
l 主节点存放权威数据,负责数据更新操作。
l 将更新的数据复制到从节点。
优点:
l 有助于提升数据的读取性能。
l 增强读取的故障恢复能力,主节点损坏,依然可以处理读取请求,从节点从而被选举为主节点。
l 可视为带有“即时备份”功能的“单服务器存储方案”。
缺点:
l 数据的不一致性(未及时更新),即在客户端读取时,主节点未将数据全部更新到从节点当中,导致读取不一致问题。
l 由于主节点是系统的瓶颈和弱点,导致写入性能和故障恢复能力一般。
1.3 对等复制
为解决主-从复制模式中的主节点瓶颈。
特点:
l 所有节点的地位相同,都可以接收读写操作。
l 各节点可以将自己更新的数据复制到其他节点。
优点:
l 从容处理出错节点,不必担心请求的丢失。
l 增加节点,提升读写性能。
缺点:
数据的不一致性,由于两个节点可以同时更新同一份数据,所以有可能导致“写入冲突”,同时读取一致性的问题也会存在。可协调各副本的写入操作,或者是合并写入冲突。
1.4 结合使用
如首先进行分片,作用在于数据的分布式存储,然后对于每一份数据都采取“主从复制”,作用相当于为各个分片节点提供备份,增加数据安全。新浪Redis集群就是采用这种方式。