
84
|
第
5
章
在使用这种分区时,可以在查询期间剔除不相关的记录,从而提高访问效率。如果记录是
按照年份分区的,那么针对特定年份的查询就可以忽略与目标年份不相关的分区。
5.1.5
可用性与一致性
分布式系统不可避免地会出现故障,但系统的某些特征会影响它们的故障行为。因此,在
发生故障时需要有所取舍,这取决于选择的存储系统。在讨论这些权衡之前,先简要介绍
一下
CAP
定理。
1. CAP
定理
根据维基百科的描述,
CAP
定理表明,分布式数据存储系统不可能同时提供以下保证中的
两种以上。
•
一致性保证:每次读取都应该得到最新版本的数据。
•
可用性:每次读取都会得到有效的响应,但不保证是最新版本的数据。
•
分区容错:即使节点间出现数据丢失,系统仍然可以继续运行。
由于网络故障在分布式系统中是不可避免的,因此我们必须容忍网络分区,这意味着需要
在一致性和可用性之间做出选择,如图
5-7
所示。
一致性
强一致性
不存在
最终一致性
分区
可用性
图 5-7:可用性与一致性
2.
选择可用性
:
最终一致性
最终一致性是指所有的数据请求最终将返回相同的值。这个模型为了获得更高的可用性而
放弃了数据一致性。此时,如果系统出现故障,可能会出现数据丢失。而且更重要的是,
我们无法保证在请求时会获得最新版本的数据。
3.
选择一致性
:
强一致性
顾名思义,强一致性可以保证对特定数据的访问总是返回相同的值。因此,当为了一致性
而放弃可用性时,如果系统出现故障,我们就无法在给定时间内读取和写入系统分区。