分布式系统-作业5

作业5

1、Leader selection在分布式系统中具有重要的用途,主要用于容错,即当主节点失效后能够从备份节点中选择新的leader,但是新选择的leader需要得到其他节点的认同。主流的leader 选择算法有:Bully、Ring算法,但不限于这些算法,调研以下软件,简述这些软件所采用的选举算法:Zoo keeper、Redis、MongoDB、Cassandra。

Zoo keeper:采用投票机制,当某个进程得到超过半数的票后将成为leader

每个节点都有一个唯一标识的myid,且有一种身份Observer或Participant,只有Participant才能参与竞争leader与对leader投票,有一种状态Looking(当前节点未就谁是leader达成共识),Leader(当前节点就自己是leader达成共识)或Follower(当前节点就自己不是leader达成共识),且所有进程都能保存自己观察到的所有人的投票结果。初始状态,所有参与竞争leader的节点广播元组(myid,leader,state,epoch,zxid),分别表示(我是谁,我选谁,我当前状态,我当前的epoch,我的事务编号),初始状态为Looking,且自己投票给自己。此时投票结果中所有节点均投自己,未就谁是leader达成一致。节点收到来自别的节点的广播,比较来自其的myid与自己投票给的节点的myid的大小,若新到的节点的myid更大,则自己改投票为新节点,并向所有人广播自己改票的结果。若某个节点观察到自己收到超过半数的投票后,广播确认,等待一段时间后,若自己的选票无更新,则将自己的状态为leader,并与其它所有节点同步此次竞选结果,其它节点将自己的状态改为Follower,同步结束后,系统可以开始工作。

Appendix:醒一醒,讲到 ZooKeeper 的选举机制了 - 知乎

Redis:采用投票机制,当从节点slave发起竞选,主节点master进行投票,当从节点得到主节点超过半数的票后将成为主机点

Redis集群由三个及以上的主从结构构成,当某个从节点观察到主节点挂掉后,就向其它所有主节点发送竞选主节点请求,其它主节点收到请求后,应答同意,当该节点收到主节点数量一半以上的同意应答后,成为主节点。从节点观察到主节点挂掉后,延迟一段随机时间,后发送请求,先发请求谁大概率会成为主节点。

Appendix:redis集群选举原理--带流程图,一看就懂_redis集群选举机制原理图-CSDN博客

面试官:Redis集群有哪些方式,Leader选举又是什么原理呢?_旷世奇才李先生的博客-CSDN博客

MongoDB采用投票机制,当主节点故障,主节点网络不可达,人工干预时,触发选举,得到超过半数投票的节点成为主节点。节点向所有节点发起ELECT请求,其它节点收到ELECT请求后会进行一系列检查,若检查通过且尚未投过票则对请求节点投票,每轮选举每个节点最多投一票。

Appendix:MongoDB选举机制_mongodb 大多数节点选举通过-CSDN博客

Cassandra采用gossip机制,去中心化。当节点有新数据后随机性地联系其相邻节点向其发送数据,直到所有相邻节点均收到了该数据。

Appendix:分布式算法实用指南 - Cassandra 解析 - 知乎

2、什么是分布式系统一致性?主要有哪几种一致性模型?

一致性指分布式系统的各个节点的对外表现是一致的。

一致性模型:以客户为中心的一致性模型,其中包括读写一致性模型,写读一致性模型;以数据为中心的一致性模型,其中包括线性一致性模型,顺序一致性模型,因果一致性模型。

3、你会选择哪一种一致性来实现股票市场,请解释原因。

因果一致性模型。某个账户的操作可能有:买入交易,卖出交易,提款,充值。提款和充值只是账户内部的操作,不需要和别的账户同步,故不做考虑,需要和别的账户同步是买入交易和卖出交易。当买入账户和卖出账户成交时,需把卖出账户的股票份额移交给买入账户,可以认为买入和卖出间有因果关系,

4、请描述一个用于显示刚被更新的Web页面的写读一致性的简单实现。

每次更新Web页面时,向Web服务器确定当前页面是否是最新页面。

5、根据以数据为中心的一致性模型,请回答以下几个问题: a. 什么是严格一致性?为什么在分布式系统中很难实现? b. 举例说明顺序一致性。 c. 以下数据存储是否是顺序一致性?给出解释并修改。 d. 根据下图给出一个满足因果一致性的例子。

a. 严格一致性:系统所有进程看到的操作顺序一致,每次写,在此后任意小的时间间隔所读到的都是写后或更新的结果,每次读,就算在此后任意小的时间间隔执行了写操作也能读到原值。要保证上述条件就需要在每个进程维护一个全局时钟,全局时钟的同步是困难,所以严格一致性难以实现。

b.     A: W(x)a R(x)a R(x)b

        B: W(x)b R(x)a R(x)b

        C: R(x)a R(x)b

c. 不是,进程B看到的操作是先将副本x写为a,再将副本x写为b,进程C看到的是先将副本x写为b,再将副本x写为a,故进程B,C看到的操作顺序不一致。

A: W(x)a W(x)b

B: R(x)a R(x)b

C: R(x)a R(x)b

d. 因果一致性:

A: W(x)a

B: W(x)b R(x)b R(x)a

C: R(x)a R(x)b

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值