最新要闻
- 【新要闻】曾因配料“双标”遭网友痛批 好丽友漏税22万被罚12万
- 全球时讯:空姐为美容注射玻尿酸:打进血管 险丧命
- 史上最严奶粉新国标实施逾月 贝因美又一款二注奶粉上新 哪些信号值得关注?
- 热推荐:甘肃将为兰州牛肉拉面立法 网友:建议牛肉有重量标准
- 热点在线丨《原神》地位不保?开放世界游戏《鸣潮》实机画面公布
- 环球简讯:曹德旺:大学生去送外卖 和在学校没学到东西有关
- 任性钻“夹缝”被撞旋转1080° 司机甩锅:都怪后车开太快了
- 当前快播:判赔370万!中创新航回应不正当竞争案判决:未曾挖角宁德时代 将上诉
- 通讯!旃怎么读音(旃怎么读)
- 36年前电脑用上AI:IBM 5155运行ChatGPT是什么样?
- 环球看热讯:清晰度和功耗完美平衡!真我GT Neo5系列宣布告别1080P:普及1.5K屏
- 罕见!超级火流星划过北京夜空被拍下:彩色拖尾 爆裂闪光
- 每日快讯!《生化危机4:重制版》阿什莉模型展示:物理晃动效果很优秀
- 全球快看点丨车评人曝奔驰4S维修黑幕:一个迈巴赫大灯小20万 故意损坏夸大车损
- 天天快报!越来越没人买了?雷克萨斯国内销量出炉:同比爆降36%
- 女子给猴子喂食被掌掴 景区回应:含保险、打疫苗可理赔
手机
iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
- 警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- 男子被关545天申国赔:获赔18万多 驳回精神抚慰金
- 3天内26名本土感染者,辽宁确诊人数已超安徽
- 广西柳州一男子因纠纷杀害三人后自首
- 洱海坠机4名机组人员被批准为烈士 数千干部群众悼念
家电
全球热议:6.824-lab2-Raft简述
Raft各阶段的描述
node有三个state:follwer candidate leader所有节点一开始是follower state,如果followers没有收到leader的消息,那么他们可以成为candidate。然后candidate请求其他节点投票(request vote),nodes将以投票方式回应,如果candidate获得了大多数node的投票它将会成为leader。这个过程就是Leader Election。现在,对系统的所有更改都要经过leader,每个更改都作为entry添加到节点的日志中。log entry如果还未提交,就不会更新节点的值。要提交entry,节点首先将其复制到follower。然后,leader等待大多数节点都写入了entry,写入之后会回应leader。该entry现在已在leader上提交(SET 5 从红色变成了黑色),当前节点状态为“5”。然后,leader通知follower这个entry已经提交。集群现在已经就系统状态达成共识。此过程称为Log Replication。
Leader Election
在Raft中有两个控制选举的超时设置。首先是election timeout,选举超时是指follower等待成为candidate的时间。选举超时被随机设置为150毫秒到300毫秒之间。在election timeout后,follower成为candidate(因为election timeout是随机的,所以有的follower会率先成为candidate),开始新的选举任期(term)。成为candidate后会为自己投票(给自己投票了相当于投了一次票,就不会再给其他节点投票,意味着先转变为candidate就有了一票),并向其他节点发送请求投票消息。如果节点在本term还没有投票,那么它会投票给第一位向他要票的candidate。然后这个节点会重置其选举超时。一旦有一位candidate获得多数票,就成为leader。leader开始向其follower发送append entries messages。这些消息按照心跳超时(heartbeat timeout)指定的时间间隔发送。随后,follower会响应每个append entries message。这个选举任期将持续到follower停止接收心跳并成为候选人为止。
Re-election
当leader死了之后,超过了心跳超时,follower还没接收到心跳消息,follower在进行一个选举超时后成为candidate向其他节点请求投票,成为新的leader。要求多数票才能保证每届任期只能选举一位领导人。如果两个节点同时成为候选节点,则可能会发生分裂投票。例如:四个node,有俩node同时先转换为candidate,然后其他俩node给这俩candidate一人一票。这样每个candidate都是2票,此时平票。所有节点将等待新的选举然后重试,进入新term选举leader。
(相关资料图)
Log Replication
一旦我们选出了leader,我们需要将系统的所有更改复制到所有节点,这是通过Append Entries来实现的(RPC)。当客户端send更改给leader,leader在下一次心跳时将更改发送给follower。一旦大多数follower接收到这个消息并回应leader,就commit这个entry,并向客户端发送相应。细节:leader发送nextIndex与worker的日志下标进行匹配,如果匹配上了,worker会接收nextIndex之后的所有日志,返回成功给leader后,leader的nextIndex+=nextIndex+len(logs),matchIndex=nextIndex-1。leader会根据matchIndex数组里中位数更新commitIndex,当commitIndex>lastApplied,就会将日志存到channel中。同理worker会接收leader的leaderCommit(就是leader的commitIndex),worker更新commitIndex后也会把日志存到channel中。
Raft在网络分区时仍然work
让我们添加一个分区,将A和B(leader,term=1)与C(leader,term=3)、D和E分开。由于我们的分裂,我们现在有两位不同的leader。让我们添加另一个客户端并尝试更新这两个leader。一个客户端将尝试将节点B的值设置为“3”。节点B无法复制给大多数节点,因此其日志条目保持未提交状态。另一个客户端将尝试将节点C的值设置为“8”。这将成功,因为它可以复制给大多数。现在,让我们修复网络分区。节点B将看到更高的trem并下台。A和B都将回滚其未提交的条目,并与新leader的日志相匹配。
Raft论文中对节点的定义
所有servers的持久化变量:
currentTerm intvotedFor intlogs []LogEntry
所有servers的可不持久化变量:
// 正常情况下commitIndex与lastApplied应该是一样的,但是如果有一个新的提交,并且还未应用的话last应该要更小些commitIndex int // 状态机中已知的被提交的日志条目的索引值(初始化为0,持续递增)lastApplied int // 最后一个被追加到状态机日志的索引值
leader的可不持久化变量:
// nextIndex与matchIndex初始化长度应该为len(peers),Leader对于每个Follower都记录他的nextIndex和matchIndex// nextIndex指的是下一个的appendEntries要从哪里开始// matchIndex指的是已知的某个follower的log与leader的log最大匹配到第几个Index,已经applynextIndex []int // 对于每一个server,需要发送给他下一个日志条目的索引值(初始化为leader日志index+1,那么范围就对标len)matchIndex []int // 对于每一个server,已经复制给该server的最后日志条目下标
// AppendEntriesArgs 由leader复制log条目,也可以当做是心跳连接,注释中的rf为leader节点type AppendEntriesArgs struct { Term int // leader的任期 LeaderId int // leader自身的ID PrevLogIndex int // 预计要从哪里追加的index,因此每次要比当前的len(logs)多1 args初始化为:rf.nextIndex[i] - 1 PrevLogTerm int // 追加新的日志的任期号(这边传的应该都是当前leader的任期号 args初始化为:rf.currentTerm Entries []LogEntry // 预计存储的日志(为空时就是心跳连接) LeaderCommit int // leader的commit index指的是最后一个被大多数机器都复制的日志Index}type AppendEntriesReply struct { Term int // leader的term可能是过时的,此时收到的Term用于更新他自己 Success bool // 如果follower与Args中的PreLogIndex/PreLogTerm都匹配才会接过去新的日志(追加),不匹配直接返回false AppState AppendEntriesState // 追加状态}
Receiver实现:1、term小于currentTerm返回false2、若日志中不包含index 值和 Term ID 与 prevLogIndex 和 prevLogTerm 相同的记录,返回 false3、如果日志中存在与正在备份的日志记录相冲突的记录(有相同的 index 值但 Term ID 不同),删除该记录以及之后的所有记录4、在保存的日志后追加新的日志记录5、若 leaderCommit > commitIndex,令 commitIndex 等于 leaderCommit 和最后一个新日志记录的 index 值之间的最小值
type RequestVoteArgs struct { // Your data here (2A, 2B). Term int // 需要竞选的人的任期 CandidateId int // 需要竞选的人的Id LastLogIndex int // 竞选人日志条目最后索引 LastLogTerm int // 候选人最后日志条目的任期号}type RequestVoteReply struct { // Your data here (2A). Term int // 投票方的term,如果竞选者比自己还低就改为这个 VoteGranted bool // 是否投票给了该竞选人 VoteState VoteState // 投票状态}
Receiver实现:1、如果竞选者任期比自己的任期还短,那就不投票,返回false2、如果当前节点的votedFor为空,且竞选者的日志条目跟收到者的一样新则把票投给该竞选者
6.824的lab2需要实现上述规则
参考资料:
6.824课程表:https://pdos.csail.mit.edu/6.824/schedule.htmlraft论文:https://github.com/OneSizeFitsQuorum/raft-thesis-zh_cn/blob/master/raft-thesis-zh_cn.mdraft可视化:http://thesecretlivesofdata.com/raft/raft官网:https://raft.github.io/
关键词:
-
当前速读:ubuntu 使用vsftpd搭建FTP服务器
一:匿名用户模式配置anonymous_enable=YES 允许匿名用户访问no_anon_password=YES 允许匿名用户使用...
来源: -
全球热议:6.824-lab2-Raft简述
Raft各阶段的描述node有三个state:follwercandidateleader所有节点一开始是followerstate,如果followe...
来源: 当前速读:ubuntu 使用vsftpd搭建FTP服务器
全球热议:6.824-lab2-Raft简述
环球滚动:Template模板类
全球讯息:【Visual Leak Detector】配置项 VLD
【速看料】火山引擎 DataTester:构建增长闭环,3-5 人即可搭建企业增长团队
【新要闻】曾因配料“双标”遭网友痛批 好丽友漏税22万被罚12万
全球时讯:空姐为美容注射玻尿酸:打进血管 险丧命
三星W799哪年上市的?三星W799可以安装微信吗?
诺基亚920还能用吗?诺基亚920手机参数
英雄联盟手游大师多少颗星上宗师?英雄联盟几级可以组队匹配?
总线上的音频设备前是感叹号是什么原因?总线上的音频设备前是感叹号怎么处理?
华为合约机是什么意思?华为合约机和官方标配区别有哪些?
C#遍历指定文件夹中所有文件的3种方法
天天热议:Sed 备忘清单_开发速查表分享
史上最严奶粉新国标实施逾月 贝因美又一款二注奶粉上新 哪些信号值得关注?
热推荐:甘肃将为兰州牛肉拉面立法 网友:建议牛肉有重量标准
热点在线丨《原神》地位不保?开放世界游戏《鸣潮》实机画面公布
环球简讯:曹德旺:大学生去送外卖 和在学校没学到东西有关
任性钻“夹缝”被撞旋转1080° 司机甩锅:都怪后车开太快了
当前快播:判赔370万!中创新航回应不正当竞争案判决:未曾挖角宁德时代 将上诉
天天百事通!OpenIddict使用教程
流量分析入门
全球观速讯丨MySql随笔记基础
【高端访谈】强化城投债与量化领域主动管理 打造私募“固收+”独特策略——专访国恩资本董事总经理杨先哲
通讯!旃怎么读音(旃怎么读)
36年前电脑用上AI:IBM 5155运行ChatGPT是什么样?
环球看热讯:清晰度和功耗完美平衡!真我GT Neo5系列宣布告别1080P:普及1.5K屏
罕见!超级火流星划过北京夜空被拍下:彩色拖尾 爆裂闪光
每日快讯!《生化危机4:重制版》阿什莉模型展示:物理晃动效果很优秀
全球快看点丨车评人曝奔驰4S维修黑幕:一个迈巴赫大灯小20万 故意损坏夸大车损
即时:数据库系统原理之SQL与关系数据库基本操作
每日焦点!【解答】如何保障ETL过程的数据正确性。这个过程会产生哪些问题?
世界要闻:DHCP snooping
全球快播:SSH配置别名登录
天天快报!越来越没人买了?雷克萨斯国内销量出炉:同比爆降36%
女子给猴子喂食被掌掴 景区回应:含保险、打疫苗可理赔
全球看热讯:去年火遍全网!贵州“村BA”现场水泄不通:村草村花“蹦苗迪”
热资讯!最高等级!英国最大陆上油田漏油:已成立黄金指挥部
头条焦点:消息称百度文心一言云服务发布会取消:延期对外发布
焦点快看:2023年底产能破30GW!协鑫集成阜宁12GW组件项目开工 -->
Spring源码核心剖析
焦点热门:计算机解决高中离子浓度计算
最新资讯:微软或提高Win12升级门槛:SSD成为刚需
19.48万元起 国产豪华轿车红旗H6预售:双中置排气着实罕见
焦点速看:赵长江:腾势D9新增订单一天破500台!别克GL8危险了
【世界播资讯】只差价格了 Redmi新机爆料汇总 1999元起交个朋友?
环球动态:市场震荡分化 软件行业红利不断
【全球独家】你不知道的ubuntu DIY发行版
全球快消息!2022年度十大科学辟谣榜出炉:O型血更招蚊子是谣言、变电站很危险?
男子爬树看邓紫棋演唱会致手臂骨折 省1千花1万:网友直呼追星也要注意安全
华海诚科网上发行最终中签率为0.0363%
专家解读消费基础设施纳入公募REITs试点:推动消费扩容提质 并非简单为房企提供资产处置渠道
天天最新:主板注册制新股开启申购 投资者打新须适应新规则
今日观点!国际金融市场早知道:3月27日
速读:票房破3亿!新海城电影《铃芽之旅》拿下2023年引进片票房冠军
新一轮国内油价将于3月底调整:目前分析大概率下调
今日播报!头部车企打架尾部遭殃 恒驰汽车北京仅剩一家门店营业
读Java性能权威指南(第2版)笔记29_线程和同步性能下
【热闻】95后夫妻摆摊日入9千网友让查税慌了 本人回应:当日是偶然 但生意也不错
【环球新视野】ctf反序列化练题
全球新资讯:win32com操作word 第十五 Find接口的使用
院士:抗流感特效药“达菲”原料为八角茴香、附加值提升1100多倍
口碑并入高德:这是要和美团、抖音拼了?
速递!我国首次实现固态氢能发电并网!密度提高20倍
讯息:镗削
当前短讯!转注是什么_转注是什么意思
【Visual Leak Detector】QT 中 VLD 输出解析(三)
快报:北大"韦神"出难题:没想到 初二学生给出标准答案!ChatGPT被难倒
环球关注:MM32 SPIN MCU 电机 FOC 驱动 风机无传感器弦波驱动篇应用笔记
前端设计模式——路由模式
【全球新视野】Mysql 查询指定节点的所有子节点
当前动态:NVIDIA显卡突然解锁视频编码限制:9年前老卡欢呼雀跃
苹果自动驾驶数据曝光:2个月16起车祸
视觉SLAM中的三角化
计算机专业规划
最资讯丨青春期教育怎么写_青春期教育资料
胖东来回应给员工设超5000元委屈奖:鼓励做正确的事情
环球快资讯:PTA OOP第一次总结性作业
快消息!IO多路复用形象举例
新一代Java高性能构建工具Maven-mvnd【实践可行版】
全球短讯!老人的屋子里怎么总有一股怪怪的味道?小心这四种
最资讯丨AMD锐龙7000平台终于要便宜了!砍掉又贵又没用的PCIe 5.0
看热讯:gomock优化diff展示
即时:Xcode的Search Paths配置
天天速读:漫威超级大反派翻车!《蚁人3》男演员乔纳森梅杰斯被捕:攻击妇女
世界新消息丨深圳一立体车库禁停比亚迪 车主:赤裸裸歧视
环球头条:NAS容量告急 但没空余硬盘位怎么办?群晖教你换上新硬盘
天天视讯!煜邦电力: 关于向不特定对象发行可转换公司债券的审核问询函回复及募集说明书等申请文件更新财务数据的提示性公告
热门:JS 做一个简单的 Parser
【全球新视野】SCO音频采集
骁龙7+处理性能加持:Redmi Note 12 Turbo拍照加速50%
李彦宏:百度文心一言和ChatGPT差距也就一两个月
每日消息!虚幻5再次炸场!1部iPhone搞定3A大作级动作捕捉 游戏行业要变天
【全球快播报】高校回应考生因航班延误错过复试:通知合规 可按流程重新参加
天天视点!中国火箭回收新进展:每年可节省十几亿元
快看点丨yolov5训练自己的数据集
环球关注:有监督学习——决策树、集成学习
每日播报!定时任务的路径问题
视焦点讯!支持Win7运行最后版本:U盘软件Rufus 3.22正式发布
女子家中开氛围灯外面看如同着火 引来消防员场面十分尴尬