问题标签 [raft]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
568 浏览

distributed-computing - 网络断开后如何筏追随者重新加入?

我在筏子上有问题。

在论文“寻找可理解的共识算法(扩展版)”中说:

要开始选举,追随者会增加其当前任期并转换到候选状态。(在第 5.2 节中)

它还说:

在 AppendEntries RPC 和 RequestVot RPC 中,reciever 应该是“Reply false if args.term < currentTerm”

所以,让我们想象一下这个场景,raft系统中有5台机器,现在机器0是leader,机器1到4是follower,现在是term 1。突然,机器1断开网络,然后机器1超时,并且它开始领导选举,它发送 RequestVot RPC,肯定会失败(网络断开)。然后它将开始新的领导人选举......等等。机器 1 的期限是多次增加。可能增加到10。当机器1'Term增加到10时,它连接网络。并且领导者(机器0)向机器1发送心跳,机器1将拒绝心跳(机器0'期限小于机器1),现在机器1将无法重新加入系统。

0 投票
2 回答
1738 浏览

angularjs - Node.js 的共识算法

我正在尝试实现一个协作画布,许多人可以在其中自由绘制或使用特定的形状工具。服务器是在 Node.js 中开发的,客户端是使用 Angular1-js 开发的(我对它们都很陌生)。我必须使用共识算法来向所有用户显示始终相同的内容。

由于找不到合适的使用教程,因此我遇到了严重的麻烦。我一直在寻找和研究 Paxos 的实现,但似乎 Raft 非常实用。

有什么建议么?我真的很感激。

0 投票
0 回答
96 浏览

impala - impala 扫描(READ_LATEST 模式)不一致是否仅在领导者更改期间出现?

当我尝试使用 impala 传输一次海量数据(约 100G)并立即选择 count(1)时,我得到了错误的总数。然后我再次执行相同的sql,总数是正确的。

我想知道除了leader change之外,还有其他内部操作会导致扫描不一致吗?如果我将 impala 配置 kudu_read_mode: READ_LATEST 更改为 kudu_read_mode: READ_AT_SNAPSHOT,那么 impala 将传输的时间戳是多少?如果 READ_AT_SNAPSHOT 可以解决问题?

我正在使用 impala 2.10.0 + kudu 1.5.0。

0 投票
3 回答
10865 浏览

algorithm - zookeeper 和 raft 有什么区别?

这真的很愚蠢,但是 zookeeper 所做的那个木筏没有 - 不是在谈论 zab,而是 zookeeper 本身。

我得到了 raft 是否领导选举等。 w 服务器但是 zookeeper 的意义何在?有没有人有类比

0 投票
1 回答
484 浏览

raft - 在 raft 领导者选举中,领导者如何现场响应来自候选人的 RequestVote rpc?

我在看木筏纸。

到 requestvote rpc,

接收者实现: 1. 如果 term < currentTerm (§5.1) 则回复 false 2. 如果 votedFor 为 null 或 CandidateId,并且候选人的日志至少与接收者的日志一样最新,则授予投票权 (§5.2, §5.4)

在某些情况下,候选人的任期等于领导者的currentTerm,那么领导者如何响应候选人的RequestVote rpc?

0 投票
2 回答
301 浏览

algorithm - raft leader 是同步处理还是异步处理客户端请求?

在筏子上,领导者

  • 收据请求,
  • 转义日志条目,
  • 发送 RPC,
  • 应用于状态机
  • 最后回应客户。

这个过程需要一些时间,那么,如何处理下一个请求?拒绝它们?

0 投票
1 回答
366 浏览

distributed - 领导者重新选举时数据/日志条目的筏丢失

场景 1:假设有一个 5 节点集群,其中 3 个节点已经失效。服务A(leader), B, C中有3个节点

A 向 B、C 复制了一个日志条目,收到成功的响应,提交它,应用它,响应客户端,然后死亡。现在,只有两个节点 B、C 有一些未应用的日志条目。现在,如果 D 出现,并且 B 成为新的领导者,那么未应用的条目会发生什么?它们也会被提交/应用吗?

场景二: 5个节点集群,3个刚下线,A仍然是leader,B在线

A 向 B 复制了一个条目,但无法提交,然后 A 被杀死,C、D 出现(所以 B、C、D 都出现了)。复制到 B 的条目会怎样?他们会被承诺/应用吗?

0 投票
3 回答
277 浏览

distributed-system - 筏日志条目中的操作是否应该是幂等的?

在 raft 中,当一个节点重新启动时,它会尝试重做所有日志条目以赶上状态。但是如果节点在恢复阶段再次宕机,节点会执行两次操作。如果操作不是幂等的,这两次重做操作将违反状态机。

根据上面的描述,我的问题是,在实践中使用 raft 的系统中是否需要使 ops 幂等?

0 投票
2 回答
484 浏览

distributed-system - RAFT 作为协议能否只支持领导人选举?

我需要定期执行某些作业(比如每分钟)。如果单个节点这样做,我们就会出现单点故障。为了避免这种情况,我正在考虑以下方案:

为了实现这个唯一的领导选举是必要的。那么有没有可能我只实现了RAFT的leader选举部分并实现了呢?这种方法有什么问题吗?

更新 1 以下是错误的假设:(这不可能发生)

*我可以看到的一个问题是:在网络分区的情况下两个领导者的可能性。但我认为我可以忽略这一点。*

更新 2:不需要重新启动失败的作业

注意:我可以使用 Zookeeper 或类似的东西来实现这一点,但我的目标是编写自己的

0 投票
1 回答
126 浏览

raft - raft 的“Committing entries from previous terms”的行为会不会导致意想不到的结果?

在 raft 的论文中,有一个图中描述的情况。 在此处输入图像描述

在 server1 重新启动后,可能会提交 entry2。

我的问题是:

如果entry2被误请求,则client的请求因server1的失败而失败。因此,客户端可能会认为错误的行为不是由状态机应用的,而实际上是在服务器 1 重新启动后执行的,如图(e)所示。