数据存储-思维导图
一、基本理论
1、CAP
CAP 理论对分布式系统做了高度抽象,形成三个指标:一致性(Consistency)、可用性(Availability)、分区容忍性(Partition Tolerance)。
- 一致性 C:指系统中所有节点在同一时刻的数据是相同的;
- 可用性 A:指系统提供的服务一直处于可用状态,对于用户的请求可以及时响应;
- 分区容忍性 P:指不论系统中哪个节点出现问题(消息丢失或高延迟),系统仍然可以提供服务;
权衡策略
不可能三角
由于网络是不可靠的,因此C、A、P三个指标不能同时满足。分布式系统中分区容忍性是一定要保证的,CAP 理论实际上是要在可用性和一致性之间做权衡。
- 为了保证一致性(CP):不能访问未同步完成的节点,也就失去了部分可用性;
- 为了保证可用性(AP):允许读取所有节点的数据,但是数据可能不一致;
2、BASE
BASE 是基本可用(Basically Available)、软状态(Soft State)和最终一致性(Eventually Consistent)三个短语的缩写。它的核心思想是:即使无法做到强一致性,但每个应用都可以根据自身业务特点,采用适当的方式(比如流量削峰、延迟响应、体验降级、过载保护等)来使系统达到最终一致性。
- 基本可用:指分布式系统在出现故障的时候,保证核心可用,允许损失部分可用性;
- 软状态:指允许系统中的数据存在中间状态,并认为该中间状态不会影响系统整体可用性,即允许系统不同节点的数据副本之间进行同步的过程存在时延;
- 最终一致性:最终一致性强调的是系统中所有的数据副本,在经过一段时间的同步后,最终能达到一致的状态;
ACID 要求强一致性,通常运用在传统的数据库系统上。而 BASE 要求最终一致性,通过牺牲强一致性来达到可用性,通常运用在大型分布式系统中。
在实际的分布式场景中,不同业务单元和组件对一致性的要求是不同的,因此 ACID 和 BASE 往往会结合在一起使用。
二、数据分布
1.哈希
2.一致性哈希
3.带有限负载的一致性哈希
4.带虚拟节点的一致性哈希
三、数据复制
1.同步复制技术
2.异步复制技术
3.半同步复制技术
四、分布式缓存
分布式缓存指在分布式环境或系统下,把一些热门数据存储到离用户近、离应用近的位置,让用户和应用很快访问到想要的数据。主流分布式缓存系统有 Redis 和 Memcached。
1.Redis
集群结构
Redis 是去中心化结构,每个节点都负责一部分数据的存储,同时,每个节点还可以通过主备设计来提高可靠性。
特性
- 数据结构:支持多种数据类型;
- 持久化:RDB、AOF;
- 主备同步:全量复制、增量复制;
2.Memcached
集群结构
采用一致性哈希的思路,使用的是 Ketama 算法,主要思想是带虚拟节点的一致性哈希算法。
特性
- 数据结构:只支持简单的 k/v 数据结构;
- 持久化:不支持持久化,断电后,数据会全部丢失;
- 主备同步:自身不支持主备,通过第三方实现;