CAP理论:
(1)Consistency一致性,任何一个读操作总能读取到之前完成的写操作结果。
(2)Avaliability 可用性,每一个操作总是能够在确定的时间内返回。
(3)Tolerance of network Partition 分区容忍性,在出现网络分布的情况下,仍能够满足一致性和可用性。
(4)最多只能同时满足以上两种需求。
由于当前网络硬件肯定会出现延迟丢包等问题,所以分区容忍性必须实现.
CAP理论不能同时满足的场景:
(1)数据同步需要时间(C),响应时间(A)也要保障,那么机器数量就要少,这样的情况下,容错性(P)就无法保证.
(2)数据同步需要时间(C), 机器数量也要够用(P), 但是数据同步城要时间,所以不能同时足可用性. 代表是Zookeeper
(3)机器数量够多(P), 响应时间要正常 (A),那么数据不能及时同步到每个节点上. 代表是eureka
BASE模型:
(1)反ACID模型,牺牲高一致性,获得可用性和可靠性。
(2)基本可用,支持分区失败;软状态,状态可以有一段时间不同步,异步;最终一致,状态达到最终一致就可以。
(3)按功能划分数据库,sharding分片。
关于内存和磁盘:
(1)如果一条记录频繁被访问,就应该放到内存里,否则的话就应该待在硬盘上按需访问,这个临界点就是5分钟。
(2)把随机读写交给RAM,磁盘尽量用作顺序读写及持久化。
一致性哈希:
(1)要解决的问题:分布式Key-Value系统中,加入有N个服务节点,如何将一个key对应的value对象均匀的映射到N个节点上进行存储。
Quorum NRW 机制:
(1)数据复制的一致性协议实现。这个协议有三个关键值:R、W、N。
(2)N:复制的节点数。R:成功读操作的最小节点数。W:成功写操作的最小节点数。通过W+R>N保证强一致性。
Vector clock:
(1)一个(node,counter)的向量,记录数据历史版本。
Merkle Tree:
(1)又被称为Hash Tree,是一种树状Hash结构。
(2)当节点宕机后数据恢复时,用于数据检验与数据同步。
(3)结构简单,叶子节眯是一些Hash值,非叶子节点保存一个范围的key值是由子节点计算Hash得来,自底向上构建。
(4)比较过程,自顶向下。先从根节点比较,相同则表示完全一致,否则子节点继续进行交换比较。
(5)传输过程中只传输要比较的层,大大减少网络传输量。
Paxos算法:
(1)解决分布式系统如何就某个值(决议)达成一致,基于消息传递模型。
(2)参与角色:proposers,acceptors, leaners。
a.value只有被Proposers踢出后才能批准。
b.在一次paxos算法实例中,只批准一个value。
c.learners只能获得被批准的value。
(3)算法过程:
a.proposer选择一个提案编号n,并将prepare请求发送给acceptors中的一个多数派。
b.acceptor收到prepare消息后,如果提案编号大于已经恢复的所有prepare消息,则将自己上次批准的回复给proposer,并承诺不再批准小于n的编号。
c.当一个Proposor收到多数acceptors对prepare的回复后,向回复的acceptor发送accept请求,包括n和value。
d.acceptor在不会违背向proposer提出的承诺前提下,批准此请求。
e.learners在accept后按n的大小学习value.
最后欢迎大家访问我的个人网站:1024s