BITTIGER视频课
分布式系统,多个节点之间不能产生矛盾
CAP Theorem 对于一个分布式系统,不能同时满足以下三点:
一致性 (Consistency)可用性 (Availability)分区容错性 (Partition Tolerance)一般在保证P的时候,保证C的同时极大的提高A 可用性,服务不可用的状况一般不能出现
在某一时刻用户或者进程查询到的数据可能都不同,但是最终成功更新的数据都会被所有用户或者进程查询到。
最终一致性 往分布式数据库中写数据,如果另一个节点去读数据,系统不能保证节点立马读到最新数据,但是节点将来某一时刻可以读到这个新数据。
弱一致性 最终一致性 DNS (Domain Name System)Gossip (Cassandra的通信协议)exp:
在任何时刻所有的用户或者进程查询到的都是最近一次成功更新的数据。
强一致性 同步PaxosRaft (multi-paxos)ZAB (multi-paxos)主从同步复制
Master接受写请求Master复制日志到slaveMaster等到,直到所有从库返回问题:一个节点失败,Master阻塞,导致整个集群不可用,保证了一致性,可用性却大大降低
每次写都保证写入大于N/2个节点,每次读保证从大于N/2个节点中读。
问题在并发环境下,无法保证系统正确性,顺序影响非常大。 解决方案 Paxos
