java从⼊门到精通pdf第五版,满满⼲货指导
CAP原则
在分布式系统要满⾜CAP原则,⼀个提供数据服务的存储系统⽆法同时满⾜:数据⼀致性、数据可⽤性、分区耐受性。
C数据⼀致性:所有应⽤程序都能访问到相同的数据。 A数据可⽤性:任何时候,任何应⽤程序都可以读写访问。 P分区耐受性:系统可以跨⽹络分区线性伸缩。(通俗来说就是数据的规模可扩展) 在⼤型⽹站中通常都是牺牲C,选择AP。为了可能减⼩数据不⼀致带来的影响,都会采取各种⼿段保证数据最终⼀致。
数据强⼀致:各个副本的数据在物理存储中总是⼀致的。
数据⽤户⼀致:数据在物理存储的各个副本可能是不⼀致的,但是通过纠错和校验机制,会确定⼀个⼀致的且正确的数据返回给⽤户。
数据最终⼀致:物理存储的数据可能不⼀致,终端⽤户访问也可能不⼀致,但是⼀段时间内数据会达成⼀致。
⼀致性算法
java入门课件使⼀组服务器在⼀个值上达成⼀致,所以活跃的特征在于最终每个服务器都可以决定⼀个值。
通过值的⼀致能够实现对同⼀个数据的请求会让同⼀个服务器来处理。
Paxos和Raft都是通过选取master来实现多节点下值的⼀致性,从⽽借助⼀致性hash算法来分配请求。
⼀致性Hash算法 ⼀致性Hash算法可以根据不同的属性参数(通常是IP和端⼝号),⽣成⼀串不相同的Hash值,并将Hash值转换成0-
2^32-1的整数, 不同范围的值由不同服务器进⾏处理。(B-C之间的由B处理)。
Raft算法和Paxos算法
Raft算法是在Paxos算法的基础上的进⾏优化。 Raft在Paxos的基础上主要做了两个⽅向的优化: 1.将复杂的分布式共识问题拆分成领导选举、⽇志复制和安全性三个问题 2.压缩状态空间:相对于Paxos施加了更合理的限制,减少了系统状态过多⽽产⽣的不确定因素。
领导选举(具体以zookeeper举例) 其基本的特性有:
zookeeper在配置集时节点数不可⼩于3
节点只有获得半数以上的投票才能当选Leader
zookeeper在启动时会通过⼴播机制来把投票结果告诉其他的节点
zookeeper在启动时⾸先会给⾃⼰投票,然后与其他已启动的节点进⾏通信,通过⽐较id从⽽判断是否能获取其他节点的投票zookeeper在选举过程中的⾓⾊:领导者、跟随者、观察者、竞选者
⽇志复制 在共识算法中,所有服务器节点都会包含⼀个有限状态⾃动机,名为复制状态机(replicated state machine)。每个节点都维护着⼀个复制⽇志(replicated logs)的队列,复制状态机会按序输⼊并执⾏该队列中的请求,执⾏状态转换并输出结果。可见,如果能保证各个节点中⽇志的⼀致性,那么所有节点状态机的状态转换和输出也就都⼀致。
可见,⽇志由⼀个个按序排列的entry组成。每个entry内包含有请求的数据,还有该entry产⽣时的领导任期值。每个节点上的⽇志队列⽤⼀个数组log[]表⽰。
领导节点选举出来后,集就可以开始处理客户端请求了。当客户端发来请求时,领导节点⾸先将其
加⼊⾃⼰的⽇志队列,再并⾏地发送AppendEntries RPC消息给所有跟随节点。最终实现节点数据的⼀致性。
安全性 Raft安全保障机制有5种:
选举安全性:节点要3个以上,避免“脑裂”的⽅式
领导者只追加:客户端发出的请求都是插⼊领导者⽇志队列的尾部,没有修改或删除的操作。
⽇志匹配:每条AppendEntries都会包含最新entry之前那个entry的下标与任期值,如果跟随节点在对应下标不到对应任期的⽇志,就会拒绝接受并告知领导节点。(避免追随者故障,导致数据不⼀致)
领导者完全性:如果有⼀条⽇志在某个任期被提交了,那么它⼀定会出现在所有任期更⼤的领导者⽇志⾥。(master会优先获取⽇志的更新)
状态机安全性:如果⼀个节点已经向其复制状态机应⽤了⼀条⽇志中的请求,那么对于其他节点的同⼀下标的⽇志,不能应⽤不同的请求。(避免master宕机时,重新选举,导致部分节点数据不⼀致)
Raft算法和Paxos算法在分布式中的使⽤
Consul vs Eureka vs Zookeeper
注: CAP: 数据⼀致性、数据可⽤性、分区耐受性 AP: 牺牲强⼀致性,部分节点宕机,不会影响正常⼯作的节点。 CP: 牺牲数据可⽤性,为了保证数据的⼀致性,当⼀台机器出现故障时,所有节点的数据都不能使⽤。
最后
由于篇幅有限,这⾥就不⼀⼀罗列了,20道常见⾯试题(含答案)+21条MySQL性能调优经验⼩编已整理成Word⽂档或PDF⽂档,
还有更多⾯试复习笔记分享如下
1625925300584)]
还有更多⾯试复习笔记分享如下
[外链图⽚转存中…(img-HBjH7SqR-1625925300586)]

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。