当前位置: 首页 > news >正文

怎么用阿里的域名 做网站葫芦岛住房和城乡建设厅网站

怎么用阿里的域名 做网站,葫芦岛住房和城乡建设厅网站,装饰设计师工资一般多少,建站公司用的开源系统目录2c简介2b、2a问题测试时间2c简介 简单的说,raft需要将currentTerm、voteFor、entries(当前的所有日志)保存到硬盘进行持久化存储。 保存的方法:在变量改变时,利用persist()中的gob将变量序列化,存储在persister结构体中。&a…

目录

  • 2c简介
  • 2b、2a问题
  • 测试时间

2c简介

简单的说,raft需要将currentTermvoteForentries(当前的所有日志)保存到硬盘进行持久化存储。

保存的方法:在变量改变时,利用persist()中的gob将变量序列化,存储在persister结构体中。(实验不需要真正保存在硬盘上,用persister结构体代替。)

读取的方法:在服务器重启时,利用readPersist()读取保存的序列化参数,并解码成对应变量输入raft中。

test 2c 报错的主要原因是2b、2a的问题,总结下通过c找出的问题。

2b、2a问题

1.在leader更新follower服务器的日志时,如果更新成功,则修改nextIndex[server]、matchIndex[server]。
修改matchIndex时:

rf.nextIndex[i] = len(rf.entries) //?即使错了还能回滚
rf.matchIndex[i] = len(rf.entries) - 1 //错误
rf.matchIndex[i] = rf.nextIndex[i] - 1 //错误
rf.matchIndex[i] = args.PrevLogIndex + len(args.Entries)

有可能在appendEntries()后,客户往raft中加入了若干command,导致日志长度发生变化。计算matchIndex时,使用了错误的日志长度会导致以下提交错误。
在这里插入图片描述

2.leader更新follower日志成功时,commitIndex应该为(大多数)比当前commitIndex大的matchIndex中最小的一个,而不是每次提交成功后commitIndex++

如果存在N > commitIndex(本地待提交日志的索引),majority(matchIndex[i]>=N)(如果参与者大多数的最新日志的索引大于N),并且这些参与者索引为N的日志的任期也等于leader的当前任期:commitIndex =N(leader的待提交的日志索引设置为N)(5.2和5.4节)。

简单的说,commitIndex应该为matchIndex[]排序后的中位数,前提是这个中位数大于当前commitIndex。
一个简单的O(n)算法:

	//更新commitIndexres := 0minBiggerMatchIndex := 99999999 //比commitIdx大的最小值for i := 0; i < len(rf.matchIndex); i++ {if rf.matchIndex[i] > rf.commitIndex {res++minBiggerMatchIndex = int(math.Min(float64(rf.matchIndex[i]), float64(minBiggerMatchIndex)))}}//TODO 每次RPC只加1太慢了if res > len(rf.peers)/2 {rf.commitIndex = minBiggerMatchIndex}

3.提交时,先对entries进行深拷贝,可以避免数据竞争。

entriesToApply := append([]Log{}, rf.entries[(rf.lastApplied+1):(rf.commitIndex+1)]...)

测试时间

最后贴个lab2c测试时间:

Test (2C): basic persistence ...... Passed --   3.9  3   76   21621    6
Test (2C): more persistence ...           ... Passed --  17.2  5  928  218116   16
Test (2C): partitioned leader and one follower crash, leader restarts ...... Passed --   2.1  3   40   11352    4
Test (2C): Figure 8 ...... Passed --  41.9  5 1369  312992   59
Test (2C): unreliable agreement ...... Passed --   3.1  5  332  131912  246
Test (2C): Figure 8 (unreliable) ...... Passed --  38.0  5 11171 21985710  193
Test (2C): churn ...... Passed --  16.3  5 1596 1588205  667
Test (2C): unreliable churn ...... Passed --  16.3  5 1800 1136899  419
PASS
ok      6.5840/raft     139.113s
http://www.yayakq.cn/news/64557/

相关文章:

  • 做下载网站挣钱吗怎么样建立自己的网页
  • 如何将网站排名做高wordpress主题极简cho
  • 网站建设合同范本下载福田欧辉氢燃料电池客车
  • 上海网站开发公司哪家好wordpress网站外包
  • 岳阳网站建设收费标准满天星建设网站
  • 工厂怎么做网站购物网站建设教程
  • 杭州高端网站建设公司哪家好网页设计与制作试卷分析
  • 充值网站架设长沙人才招聘网长沙58同城招聘网
  • 永登县建设局网站网页空间免费申请
  • asp做的网站缺点做网站网址怎么弄
  • 网站建设的计划书微信推广联盟
  • 长春网上建设网站1建设网站的重要性
  • 做的网站怎么提交到百度上去网站布局模版
  • 前端网站优化网站做app的重要性
  • 昆明门户网站建设做ui必要的网站
  • 国际网站平台有哪些泰安网络建设
  • 青岛网站建设服务平台wordpress亲子模板
  • 剑三做月饼活动网站wordpress不支持ie9
  • 免费视频素材网站推荐网站换域名
  • 如何设置网站根目录河南城乡建设网站
  • 江门企业建站程序网站制作过程内容
  • 电商食品网站建设国家和城乡建设部网站
  • 网站和公众号的区别是什么意思wordpress 多语言插件哪个好
  • 有哪些网站可以做青旅义工建设适应连锁行业网站
  • 网站 案例台州建设信息港网站
  • 最专业微网站多少钱哪些网站做外贸
  • 网站更换服务器需要重新备案吗个人网站源码下载
  • 织梦设置中英文网站猎头网招聘
  • 爱民网站制作创新的常州做网站
  • 青岛城乡建设局网站首页南宁百度关键词推广