PACELC

PACELC定理指出,在复制数据的系统中:

如果存在分区P,分布式系统可以再可用性和一致性即CA之间进行权衡;

当系统在没有分区的情况下正常运行时,系统可以再延迟和一致性之间进行权衡

定理的第一部分(PAC)与CAP定理相同,ELC是扩展(E指的是else)

定理的第一部分PAC与CAP定理相同,ELC是扩展,整片论文假设我们通过复制保持高可用性。因此,当出现故障时,CAP定理占上风,但如果不是,我们仍需要考虑复制系统的一致性和延迟之间的权衡。

  • Dynamo和Cassandra是PA/EL系统:他们在发生分区时选择可用性而不是一致性;否则他们会选择比较低的延迟
  • BigTable和HBase是PC/EC系统:他们总是会选择一致性,放弃可用性和更低的延迟。
  • Mongodb可以被认为是PA/EC(默认配置):MongoDB在主要、次要配置中工作。在默认配置中,所有写入和读取都在主节点上执行。由于复制都是异步完成的(从主节点到辅助节点),当存在主节点丢失或在少数节点上被隔离的网络分区时,可能会丢失未复制到辅助节点的数据,因此会丢失分区期间的一致性。因此,可以得出结论,在网络分区的情况下,MongoDB选择可用性但其他方面保持一致。或者,当MongoDB配置为在多数副本写入并从主副本上读取时,它可以归类为PC/EC

例如在ES中写数据过程中,需要将数据同步给其他副本。假设有俩个副本,R1,R2,。同步R1完成需要10ms时间,同步R2完成需要20ms事件,假设如果要完成一致性,我们需要等待20ms(ES数据同步是批量发生的)。但是,ElasticSearch采取的策略不是等待所有副本完成同步后才返回操作成功,其才去的策略是,如果主副本写入成功,部分副本同步失败也认为整体成功(同步失败原因可能因为超时未响应,也可能是副本存在故障)。可以明显看出,ES作为一款高性能的搜索引擎,在时延(Latency)和一致性(Consistency)上做了取舍。

Last modification:November 28, 2023
如果觉得我的文章对你有用,请随意赞赏