CAP理论指的是分布式系统通常难以同时达成Consistency一致性(任意规则读写均返回最新数据)、Availability可用性(一个节点挂了不影响其余部分正常服务)和Partition Tolerance可分区性(即使集群被网络切割开来,仍然能正常工作)三个特性。其原因大约可以归纳如下:

  1. CA系统:缺少P,相当于完全不允许节点间出现短时(如网络延迟)或长时(如网络中断)导致的不一致性,与现实条件相悖;
  2. CP系统:缺少A,摆烂,炸了就是炸了,以可用性为代价允许对系统分区(但是通信必须正常以保证一致性);
  3. AP系统:缺少C,还是摆烂,各个节点仅提供尽力服务,不保证数据是最新的。

基于CAP理论,业界主流产品都有自己的设计考量,产生了如下主流副本读写方案:

  1. Quorum(NRW):正如其名,三个参数,一共N个副本,客户端读取时指定R个副本,写入时指定W个副本,只有这些读写操作成功完成才能算读写操作成功。代表产品为DynamoDB、Cassandra,优点为读写并行、延迟较低,缺点为读开销大(R份全部读取成功才行),属于AP系统,容错级别为2F+1(为了容忍F个错误,需要2F+1个副本);
  2. Raft/类Paxos:写leader节点和一定数量的Quorum,如果出错则根据一致性协议重新选举,直至完成写操作。代表产品为Zookeeper、PolarDB,优点为客户端读写流量相对较少,缺点为串行写延迟较高(leader去写Quorum),属于AP系统,容错级别为2F+1;
  3. Replicate:客户端写leader(master),leader把所有副本写完后才算写成功。代表产品为Hadoop、Ceph等,优点为容错级别较高(F+1),缺点为副本完全落盘带来的木板效应,可能由于某个副本延迟过高或者失效而导致客户端卡写IO,显然属于CP系统。

参考:

  1. https://zhuanlan.zhihu.com/p/351979103
  2. 钝角

标签: none

添加新评论