V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  Wisho  ›  全部回复第 4 页 / 共 7 页
回复总数  128
1  2  3  4  5  6  7  
@WithSalt 客气,我当时也是琢磨了很久,这过程其实最适合用 gif 来解释,而不是静态的(a) ~ (d)的时刻图。。。
希望我讲清楚了吧😂
接上条回复。

正因为 raft 的这个约定,所以在(c)时刻,即使 S1 这个 term=4 的 leader 把(term=2, index=2)的 entry 成功分发到 S1、S2、S3、S4 上(超过半数),它也不能 commit。不能 commit 就意味着不能回复客户端:“您好,您的操作已生效”,那客户端的“期望”就不会是“哦,存储系统已经帮我存好了,我可以放心了”。

如果在成功分发到 S1、S2、S3、S4 上后(注意是分发成功,但未 commit,未能回复客户端),马上 S1 宕机了。又是那么巧,又是 S5 上线参选,S5 发现“咦? S2、S3、S4 上的 latest entry 都只是(term=2, index=2)而已,我自己最新的是(term=3, index=2),比它们的都新”,所以 S5 能得到大家的投票,S5 当选,term 号为 5。S5 当选后,第一件事就是统一兄弟们的 log entries,一把梭就把(term=3, index=2)分发给大家,直接 overwrite 掉兄弟上的历史记录。

但是这个 overwrite 没关系呀!很正常!为啥没关系,很正常?记得上面我强调的那个“分发成功,但未 commit,未能回复客户端”吗?只要没能 commit 成功,没能回复客户端成功,客户端会认为系统没有给我完成“存储”或者没有给我完成“某种数据操作”,所以客户端也许会超时重试、也许会放弃(取决于具体的业务逻辑)。

但如果你 commit 了(term=2, index=2)的 entry,告诉客户端“放心,成功持久化了”,结果之后被 S5 的(term=3, index=2)给 overwrite 了的话,这会是你的系统的严重失误!分明之前告诉客户端放心没问题存好了,但是之后又“出尔反尔”,把别人的数据给 overwrite 直接搞丢了,就是严重失误。

所以,一切的前提就是 raft 的这个约定,一个非常重要的约定:term=X 的 leader 不能直接 commit term < X 的任何记录,可以分发但不能 commit,直到要 commit term=X 的记录时才能“顺手” commit 历史记录。
不是很懂你的问题二。
论文里这个原图的意思应该是:
(a)时刻,S1 当选,term 号为 2,然后接到客户端的请求,在本地写入(term=2, index=2)的 entry,然后开始 replicate,replicate 到 S2 上,结果意外发生,S1 宕机。
(b)时刻,S1 宕机一段时间后,S5 的 timeout 结束,恰好能参选,发现自己的 latest entry 是(term=1, index=1),还是和大部分人( S3, S4, S5 自己)的 latest entry 保持一致,所以 S5 能够成功当选 leader,term 号为 3。然后马上接到客户端的请求,在本地写入了(term=3, index=2)的 entry,然而 S5 的命运更悲催,还没来得及给兄弟们 replicate,自己就宕机了。
(c)时刻,S5 宕机一段时间后,S1 的 timeout 正好最先结束,决定参选,发现自己的 latest entry 是(term=2, index=2),S2、S3 和 S1 自己都愿意投给 S1,S1 又顺利当选,term 号为 4。此时刚把之前还未完成 replication 的(term=2, index=2)的 entry 分发给 S3,又收到了客户端的请求,请求写入(term=4, index=3)的 entry 到本地。

所以你是指,在(c)时刻,作为 term=4 的 leader,S1 当选后 N 久都收不到客户端的请求写入(term=4, index=3)的 entry,所以有充足的时间把(term=2, index=2)的 entry 分发到所有兄弟上,且 commit 吗?

但是 raft 里的约定就是,term=X 的 leader 是不能直接 commit term < X 的任何记录的,只能在 commit term=X 的记录时把历史上分发成功但是没有 commit 的“顺手” commit 了。
2019-02-14 16:03:08 +08:00
回复了 w2er 创建的主题 Python 小兼职,坐标汕头, Python 方向,有没有感兴趣的朋友
每月工作 12 小时,还有不定时的远程,1000/月少了吧
2019-02-14 16:01:12 +08:00
回复了 roberts 创建的主题 求职 求大佬指点一下我的简历,总感觉少了什么
@roberts 可以的,拾掇拾掇,看下面经题,往 15k 要吧
2019-02-14 15:55:55 +08:00
回复了 roberts 创建的主题 求职 求大佬指点一下我的简历,总感觉少了什么
个人不成熟的建议。
1. 创业经历部分体现的是你的运营 /商业等非开发素质,可以不要,篇幅太长了。
2. 项目经历,尤其是第一个写了很多字的项目,表述有点口语化,像是面对面和人聊天讲你做了啥一样。建议精炼语言。
2019-02-11 05:08:09 +08:00
回复了 PazuLee 创建的主题 酷工作 最近坡县的招聘多了起来,是为什么呢?
@ianva 同意。
新加坡对人才引进的政策不是近两年才有的(不单指互联网),但是确实是近两年东南亚才有资本砸进互联网行业里。所以最近看起来会有很多坡县的招聘贴。其实搞来搞去就那一家,就是 Sea Group 和 Sea Group 控股的那几个儿子。
2019-02-11 05:04:17 +08:00
回复了 xinjie 创建的主题 求职 祈求一份小工作,为什么都没有人回复诶
转行的不建议在当前阶段碰 c++,实在觉得有兴趣可以上轨道之后再搞 c++。
现阶段建议 python+java 先搞 2~3 个个人项目推到 github 上,然后补充到简历里。
2019-02-10 10:55:57 +08:00
回复了 SaintSeiya 创建的主题 程序员 感觉自己一直都在做没有意义的工作
@wintersun 挺认同的,就是碰上好公司里的好项目很看运气(虽然运气也是无数选择后的必然)。
2019-02-10 06:16:57 +08:00
回复了 SaintSeiya 创建的主题 程序员 感觉自己一直都在做没有意义的工作
@shayang888
之前我也有过这种“应该”的心态,抱着这种心态去看别人,甚至去“说教”别人,你“应该”去大厂镀下金,你“应该”去做数据库内核,你这个年纪“应该”去国企银行券商混个稳定的 it 岗。

但是最近我越来越发现我错得离谱,每个人都有每个人不同的“爽点”,甚至同一个人不同的生命阶段都会有不同的“爽点”。你去问阿里云 RDS 那帮人,把数据库内核搞透彻是不是很爽,答曰是的;你去问抖音海外版那帮人,把产品打到国际,在海外站稳阵脚后让 fb 都要被动应对是不是很爽,答曰是的;你去问江浙深圳的公务员,965 一年收入 20w,在亲戚眼里有一定光环,下班回家每天都能亲亲老婆陪孩子写作业玩玩具是不是很爽,答曰是的。

找到自己的“爽点”就好了,没必要用“应该”的说辞来告诉别人“应该”干啥。
2019-02-10 06:06:51 +08:00
回复了 SaintSeiya 创建的主题 程序员 感觉自己一直都在做没有意义的工作
@shayang888 还是慎用“应该”这个词吧。
“每个学生都应该头悬梁锥刺股奋发上清北复交”,不可能全国就设这 4 所大学吧?
“年轻人就不应该老是看抖音快手浪费时间”,不可能全国 100%年轻人每天工作 12 小时全去搞基建基础科学吧?
“做技术的应该要有技术情怀,不应该光赚钱”,不可能 100%的工程师都去搞操作系统、数据库内核、编译器、HPC,然后没有人做微信这样“简单的 im 工具”,没有人做 v 站这样“程序员闲的蛋疼吹水的论坛”?
@geeti 欧洲 IT 工资在全球范围一直不是很高吧。无论时薪还是总包北美一直都是第一,12 年后蹭上移动互联网这波后,国内工资总包应该是全球第二了(虽然时薪不高)。
2019-02-08 05:30:03 +08:00
回复了 Wisho 创建的主题 程序员 容器/云工程师的面试风格?
@realpg 就是说基本转不了?
2019-02-06 15:25:28 +08:00
回复了 zizhoutong 创建的主题 求职 各位大佬有校招前端内推的嘛
期望哪个城市?
这个问题 99%初学者都会遇到。
我初学 py 的后端框架时的做法是,就用简单的 html+jquery+bootstrap 搞点简单的页面,前后端不分离,一些后端接口返回渲染的模板。
后来学 golang,学 gin 的时候,前端 jquery+bootstrap 那些全忘了,而且觉得前后端不完全分离太太太太太挫了。就只练写 api 了。
2019-02-01 11:01:55 +08:00
回复了 mseasons 创建的主题 MacBook Pro 准备入新电脑了,有没有什么注意的? MBP 15 寸标配
插楼说句,话说 2019 款会不会是当前模具的最后一版?
@rayingecho 我猜到了大佬会拒头条,也建议拒头条,因为在另外两个 offer 面前 EE 是真的不值得去。
如果是我的话,如果 base 差不多,会异常纠结蚂蚁和 pingcap,一个是 big name 另一个 geek 指数爆棚。
据我所知,蚂蚁有几个团队做云原生、容器、service mesh 那套很前沿的,值得去啊。
最后选了哪家?感觉会是蚂蚁和 pingcap 之间选了吧?
1  2  3  4  5  6  7  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2984 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 27ms · UTC 11:36 · PVG 19:36 · LAX 03:36 · JFK 06:36
Developed with CodeLauncher
♥ Do have faith in what you're doing.