分布式基础知识汇集
一.CAP
- 数据一致性(C),等同于所有节点访问同一份最新的数据副本;
- 对数据更新具备高可用性(A);
- 能容忍网络分区(P)。
概念: 必须注意的是,P:Partition Tolerance 指的是 The system works well despite physical network partitions. 网络上很多说P指的是数据分区,都他妈是扯淡,实际应该是如果物理网络进行了隔离,能否正常工作。
理解CAP理论的最简单方式是想象两个节点分处分区两侧。允许至少一个节点更新状态会导致数据不一致,即丧失了C性质。如果为了保证数据一致性,将分区一侧的节点设置为不可用,那么又丧失了A性质。除非两个节点可以互相通信,才能既保证C又保证A,这又会导致丧失P性质。
分布式系统的特性是能够在高延迟或不可靠的传输条件下进行状态交换。如果要保证系统的操作的可靠性,必须保证在节点及网络两方面故障发生时的健壮性,但并非所有系统都能够满足我们所要求的安全能力。在本文中,我们将探索分布式数据库在设计上的一些考虑,以及它们是如何对网络分区的情况作出响应。
在两个节点间发送消息时,IP网络可能会任意地删除、延迟、重新排序或复制消息,因此许多分布式系统都使用TCP以防止消息的重新排序与复制。但TCP/IP在本质上仍然是异步的:网络会任意地延迟消息,连接可能会被随时切断。此外,对故障的诊断也并不可靠:要判断某个节点是否出现故障、网络连接是否被切断、或者操作是否比预计中运行得慢也许是不可能实现的。
消息被任意地延迟或切断的这种故障叫做网络分区。分区可能出于多种原因发生在生产环境的网络中:垃圾回收(GC)的压力、网卡(NIC)故障、交换机故障、配置出错、网络拥塞等等。由于分区的发生,使CAP定理限制了分布式系统能够达到的最大担保能力。当消息被切断时,“一致的”(CP)系统会拒绝某些节点的请求,以保持线性一致性。“可用的”(AP)系统虽然能够处理所有节点上的请求,但必须牺牲线性一致性,因为不同的节点对于操作的顺序可能会产生不同意见。当网络情况良好时,系统可以保证一致性与可用性,但由于真实的网络中总会产生分区,因此不存在能够完全做到“一致且可用”(CA)的系统。
1.1 infoQ, CAP理论十二年回顾:"规则"变了 :http://www.infoq.com/cn/articles/cap-twelve-years-later-how-the-rules-have-changed/
1.2 CP、CA系统测试, 终极版:http://www.linuxeden.com/html/news/20131218/146570.html
1.3 ACID, BASE: http://blog.sina.com.cn/s/blog_3fe961ae010139u6.html
二. CDRT
2.1、CDRT:Conflict-Free Replicated Data Types: http://www.tuicool.com/articles/a63eiu
2.2. CDRT paper: http://hal.upmc.fr/file/index/docid/555588/filename/techreport.pdf
2.3 hbase中的ACID: http://archfan.sinaapp.com/2012/04/18/acid-in-hbase/
6. 读写分离
-- TODO