- 博客(5)
- 问答 (5)
- 收藏
- 关注
原创 MIT 6.824 Lab2 Raft实现总结
前言本文的局限性在于,本文不完全按照论文(raft extended)实现,并以通过所有测试和自我满足为目的。在部分与论文不一致,或论文没有详细讨论的地方,我将以引用的格式来说明。文本并不详细论证Raft,即不按照领导选取(leader election)、日志复制(log replication)、安全(safety)展开,并且(暂时-2020/10/4)不讨论成员变化(membership changes)。本文将把这些部分融合起来,全面展示各个部分的状态变化。在实现Raft的时候,加锁是个难题,
2020-10-05 13:51:33 828
翻译 Lab2 汉化
前言仅供学习,转载请标明出处。有任何翻译上的问题欢迎评论和私聊。具体的实现思路会发布在另一篇文章中,本篇文章仅讨论翻译问题。原文:http://nil.csail.mit.edu/6.824/2020/labs/lab-raft.html课程详情:http://nil.csail.mit.edu/6.824/2020/schedule.html6.824 实验 2: Raft介绍这是一系列实验中的第一个实验,您将在这一系列实验中构建具有容错能力的key/value存储系统。首先,您将此实验中
2020-10-04 23:02:08 477 1
原创 MIT 6.824 Lab1 MapReduce实现思路
关键问题提供RPC接口,供worker调取文件(名)确保每个文件都被worker正确消费,如果worker过了10s还没消费掉这个文件,则将这个文件给别人消费在所有文件都被消费之后,通知每个worker结束任务应该避免任务重复执行,包括map任务和reduce任务master实现在所有的任务都被完成后,等待10s,给每个前来要任务的worker发送一个特殊的reply,通知他们退出程序。master需要实现一个RPC函数,这个函数要求上一次完成的工作,如果是第一次,则为nil。发请求
2020-10-04 23:00:31 288
原创 实现Raft时 对于加锁和避免死锁的思考
在用go实现raft之时,有众多的变量需要加锁,遇到了很多问题,以下为这些思考的总结考虑极端的两种情况为每个变量加锁优点省事:每个变量都有锁,各个变量的访问都很安全缺点性能差:访问和更改每个变量都需要加锁和解锁依旧有场景不能满足:有时候我们需要同时保护多个变量不被修改和读取,直到某个行为完全完成。整个大类使用一个变量优点省事:整个类的所有行为都串行执行,非常安全,也不会有死锁。缺点性能差:完全丧失多线程的性能提升,整个类的所有方法都不得不串行执行可能产生死锁:比如一
2020-10-04 22:59:05 386
原创 MySQL用自增主键和随机变量做主键插入性能实测,与理论完全相反,求解答!
先报测试环境:python 3.5 Flask 1.1.1 Flask-SQLAlchemy 2.4.0 MySQL 5.7.17 Linux Ubuntu 16.04.6 LTS测试方法概述通过flask创建了三个models类分别是主键为我给定的随机数的model,自增主键的model(创建了btree索...
2019-07-16 19:30:43 816
空空如也
flask中有什么全生命周期变量?对他的访问是否有互斥问题?
2019-07-21
ubuntu make编译内核提示缺少.o文件
2019-04-12
python两种创建列表方式在更新后的区别
2018-11-20
函数的不定长参数和方法的不定长参数的区别
2018-11-05
TA创建的收藏夹 TA关注的收藏夹
TA关注的人